dango 0.0.24 → 0.0.25

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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: