dango 0.0.24 → 0.0.25

Sign up to get free protection for your applications and to get access to all the features.
@@ -16,11 +16,18 @@ require "dango/monitor/server_monitor_action"
16
16
  class DangoServerFramework
17
17
  include DangoFrameworkModule
18
18
 
19
- SendReceiveSleepIntervalSec = 0.2 # データ送信後の順の際のタイムアウトチェック間隔秒
19
+ ### 以下すべてデフォルト値
20
+ DefaultNetworkPort = 15000 # デフォルトのポート番号
21
+ DefaultServerHost = 'localhost' # デフォルトのホスト名 # 接続制限ホスト "0.0.0.0"にすれば全接続オッケイ
22
+ DefaultMaxConnections = 10 # デフォルトの最大接続人数
23
+
24
+ # ここから先は普通は変更しなくていいだろうというもの
25
+ SendReceiveSleepIntervalSec = 0.2 # データ送信時のタイムアウトチェック間隔秒
20
26
  SendReceiveTimeoutDefaultSec = 2.0 # データ送受信時のデフォルトタイムアウト秒数
21
27
  SendTimeoutSec = 10.0 # データ送受信時の送信のタイムアウト秒数
22
- HeratBeatIntervalSec = 20.0 # S=>Cのheart beatの送信タイミング
23
- HeratBeatResponseWaitlSec = 20.0 # S=>Cのheart beatの返信待ちタイミング
28
+ HeartBeatIntervalSec = 60.0 # S=>Cのheart beatの送信間隔秒数
29
+ HeartBeatResponseWaitSec = 20.0 # S=>Cのheart beatの返信待ち秒数
30
+
24
31
 
25
32
  class DangoGServer < GServer
26
33
  def initialize(parent, *args)
@@ -99,7 +106,14 @@ class DangoServerFramework
99
106
  @connection_server_host,
100
107
  @connection_server_max_connections)
101
108
  @gserver.audit = true # Turn logging on.
102
- @gserver.start
109
+
110
+ begin
111
+ @gserver.start
112
+ rescue Exception
113
+ error_msg = "#{$!.class} #{$!.message} #{$!.backtrace.pretty_inspect}"
114
+ cs_logger.error error_msg
115
+ puts error_msg
116
+ end
103
117
  end
104
118
 
105
119
  # サーバーのループ時のクラス読み直し処理
@@ -152,9 +166,7 @@ class DangoServerFramework
152
166
  begin
153
167
  load f[:file]
154
168
  rescue Exception
155
- p $!.class
156
- p $!.message
157
- p $!.backtrace
169
+ puts "#{$!.class} #{$!.message} #{$!.backtrace.pretty_inspect}"
158
170
  end
159
171
  end
160
172
 
@@ -183,7 +195,8 @@ class DangoServerFramework
183
195
  # gserverのserveメソッド:スレッド開始処理
184
196
  def thread_main(sock)
185
197
  cs_logger.debug "thread_main:start"
186
- cs_logger.debug "#{sock} is accepted. thread.current=#{Thread.current.object_id} sock_id=#{sock.object_id}"
198
+ # cs_logger.debug "#{sock} is accepted. thread.current=#{Thread.current.object_id} sock_id=#{sock.object_id}"
199
+ cs_logger.debug "#{sock} is accepted. thread.current=#{Thread.current.object_id}"
187
200
 
188
201
  begin
189
202
  sock.binmode
@@ -287,12 +300,12 @@ class DangoServerFramework
287
300
  cs_logger.error "Exception #{sid} #{Time.now_to_s} #{error_message($!, 'u')}"
288
301
 
289
302
  ensure
290
- cs_logger.debug "#{sock.inspect} sock_id=#{sock.object_id} #{sid} is gone"
303
+ cs_logger.debug "#{sock.inspect} #{sid} is gone"
291
304
 
292
305
  @mutex_proc_thread.synchronize do
293
306
  begin
294
307
  cs_close() # 接続解除時に呼び出されるメソッド
295
- rescue
308
+ rescue Exception
296
309
  cs_logger.error "#{error_message($!, 'u')}"
297
310
  ensure
298
311
  socket_list.delete(sid) # ソケットリストから削除
@@ -302,7 +315,7 @@ class DangoServerFramework
302
315
  cs_logger.debug "IOError #{sock} #{sid}"
303
316
  end
304
317
 
305
- cs_logger.debug "#{sock.inspect} sock_id=#{sock.object_id} #{sid} is gone 2"
318
+ cs_logger.debug "#{sock.inspect} #{sid} is gone 2"
306
319
  end
307
320
 
308
321
  end
@@ -326,11 +339,17 @@ class DangoServerFramework
326
339
  Thread.abort_on_exception = true if @server_debug
327
340
 
328
341
  # 変数の初期設定
329
- @connection_server_port = @config['network']['port'] || 15000
330
- @connection_server_host = @config['server']['host'] || "localhost"
331
- @connection_server_max_connections = @config['server']['max_connections'] || 10
342
+ @connection_server_port = @config['network']['port'] || DefaultNetworkPort
343
+ @connection_server_host = @config['server']['host'] || DefaultServerHost
344
+ @connection_server_max_connections = @config['server']['max_connections'] || DefaultMaxConnections
332
345
  @log_file = @config['server']['log_file'] || ""
333
346
  @policy_file_request = @config['server']['policy_file_request'] || true
347
+ @send_receive_sleep_interval_sec = @config['server']['send_receive_sleep_interval_sec'] || SendReceiveSleepIntervalSec
348
+ @send_receive_timeout_default_sec = @config['server']['send_receive_timeout_default_sec'] || SendReceiveTimeoutDefaultSec
349
+ @send_timeout_sec = @config['server']['send_timeout_sec'] || SendTimeoutSec
350
+ @herat_beat_interval_sec = @config['server']['heart_beat_interval_sec'] || HeartBeatIntervalSec
351
+ @heart_beat_response_wait_sec = @config['server']['heart_beat_response_wait_sec'] || HeartBeatResponseWaitSec
352
+
334
353
 
335
354
  log_level_hash = {
336
355
  "FATAL" => Logger::FATAL,
@@ -516,17 +535,18 @@ class DangoServerFramework
516
535
  Thread.start do
517
536
  loop do
518
537
  begin
519
- sleep HeratBeatIntervalSec
538
+ sleep @herat_beat_interval_sec
520
539
 
521
540
  if ! @gserver.stopped? # gserverが起動していれば
522
541
  cs_logger.debug "heart_beat_thread_start #{Time.now_to_s}"
523
542
 
524
- # 全員へ空パケットを送信
543
+ # 全員へheart_beatパケットを送信
525
544
  socket_list.keys.each do |sid|
526
- sock = socket_list[sid]
527
- cs_logger.debug "heart_beat_thread_start:sid=#{sid} #{sock} #{sock.closed?}"
545
+ # sock = socket_list[sid]
546
+ # cs_logger.debug "heart_beat_thread_start:sid=#{sid} #{sock} #{sock.closed?}"
528
547
  # cs_send_data(sock, {})
529
- cs_server_send_data(sid, "_heart_beat", {}, {:timeout=>HeratBeatResponseWaitlSec})
548
+ cs_logger.debug "heart_beat_thread_start:sid=#{sid}"
549
+ cs_server_send_data(sid, "_heart_beat", {}, {:timeout=>@heart_beat_response_wait_sec})
530
550
  end
531
551
  end
532
552
 
@@ -544,11 +564,11 @@ class DangoServerFramework
544
564
 
545
565
  raise(DangoFrameworkError, "send_obj is not Hash.") if ! send_obj.is_a?(Hash)
546
566
 
547
- timeout = options[:timeout] || SendReceiveTimeoutDefaultSec
567
+ timeout = options[:timeout] || @send_receive_timeout_default_sec
548
568
  dtype = options[:type] || 0
549
569
 
550
570
  sock = socket_list[sid]
551
- if !sock # sockがないという事はすでに切断済み
571
+ if !sock || sock.closed? # sockがないという事はすでに切断済み
552
572
  cs_logger.info "cs_server_send_data:already closed socket. sid=#{sid.inspect} sock=#{sock.inspect} #{Time.now_to_s}"
553
573
  return
554
574
  end
@@ -591,7 +611,7 @@ class DangoServerFramework
591
611
  end
592
612
 
593
613
  # データ送信スレッドの終了待ち
594
- if !receive_thread.join(SendTimeoutSec)
614
+ if !receive_thread.join(@send_timeout_sec)
595
615
  # タイムアウトの場合は
596
616
  cs_logger.warn "cs_server_send_data:send timeout:#{notice_name} #{sid} #{Time.now_to_s}"
597
617
  else
@@ -600,7 +620,7 @@ class DangoServerFramework
600
620
 
601
621
  # タイムアウトチェック
602
622
  catch(:send_timeout) do
603
- (timeout.to_f / SendReceiveSleepIntervalSec).to_i.times do
623
+ (timeout.to_f / @send_receive_sleep_interval_sec).to_i.times do
604
624
  if Time.now > end_reserved_time
605
625
  cs_logger.debug "cs_server_send_data:receive timeout:#{notice_name}"
606
626
 
@@ -611,7 +631,7 @@ class DangoServerFramework
611
631
  break
612
632
  end
613
633
 
614
- @mutex_send_response.synchronize do
634
+ @mutex_send_response.synchronize do # データ送信の返信が来たかどうかの確認
615
635
  find_res = @arr_send_response.find{|r| r[:_id] == send_obj_dup["_id"]}
616
636
 
617
637
  if find_res
@@ -623,7 +643,7 @@ class DangoServerFramework
623
643
  end
624
644
  end
625
645
 
626
- sleep SendReceiveSleepIntervalSec # スリープ
646
+ sleep @send_receive_sleep_interval_sec # スリープ
627
647
  end # タイムアウト処理終わり
628
648
  end # catch 終わり
629
649
 
@@ -51,7 +51,8 @@ module DangoFrameworkModule
51
51
 
52
52
  def [](key)
53
53
  if !@mutex.has_key?(key) # 未定義キーならエラー
54
- raise(DangoFrameworkError, "Shared key is not exist.")
54
+ return(nil)
55
+ # raise(DangoFrameworkError, "Shared key is not exist.")
55
56
  end
56
57
 
57
58
  # ロックしてデータを読む
@@ -37,7 +37,7 @@ class SocketList
37
37
 
38
38
  def []=(key, sock)
39
39
  @sl_mutex.synchronize do
40
- raise("not exist key(#{key.inspect})") if ! @sl_hash.has_key?(key)
40
+ # raise("not exist key(#{key.inspect})") if ! @sl_hash.has_key?(key)
41
41
  raise("sock(#{sock.inspect}) is not Socket") if sock.kind_of?(Socket)
42
42
  @sl_hash[key] = sock
43
43
  end
@@ -2,7 +2,7 @@ module Dango #:nodoc:
2
2
  module VERSION #:nodoc:
3
3
  MAJOR = 0
4
4
  MINOR = 0
5
- TINY = 24
5
+ TINY = 25
6
6
 
7
7
  STRING = [MAJOR, MINOR, TINY].join('.')
8
8
  end
metadata CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.9.4
3
3
  specification_version: 1
4
4
  name: dango
5
5
  version: !ruby/object:Gem::Version
6
- version: 0.0.24
7
- date: 2007-10-30 00:00:00 +09:00
6
+ version: 0.0.25
7
+ date: 2007-10-31 00:00:00 +09:00
8
8
  summary: Realtime communications network framework for Ruby and Flash on Rails.
9
9
  require_paths:
10
10
  - lib
@@ -68,5 +68,13 @@ extensions: []
68
68
 
69
69
  requirements: []
70
70
 
71
- dependencies: []
72
-
71
+ dependencies:
72
+ - !ruby/object:Gem::Dependency
73
+ name: json
74
+ version_requirement:
75
+ version_requirements: !ruby/object:Gem::Version::Requirement
76
+ requirements:
77
+ - - ">"
78
+ - !ruby/object:Gem::Version
79
+ version: 0.0.0
80
+ version: