dango 0.0.31 → 0.0.32

Sign up to get free protection for your applications and to get access to all the features.
@@ -11,6 +11,7 @@ class DangoClientFramework
11
11
  include DangoFrameworkModule
12
12
 
13
13
  SendReceiveSleepIntervalSec = 0.1 # データ送信後の順の際のタイムアウトチェック間隔秒
14
+ HeartBeatSendIntervalSec = 5.0 # ハートビート送信の間隔秒
14
15
 
15
16
  # send_action_return_notice用の共有メモリ
16
17
  def send_return_shared_init
@@ -151,10 +152,10 @@ class DangoClientFramework
151
152
  th = Thread.start do
152
153
  loop do
153
154
  begin
154
- sleep 10
155
+ sleep HeartBeatSendIntervalSec
155
156
 
156
157
  if @sock && ! @sock.closed?
157
- logger.debug "dango_heart_beat_thread_init:send heart beat #{Time.now_to_s}"
158
+ logger.debug "dango_heart_beat_thread_init:send _notice_heart_beat:#{Time.now_to_s}"
158
159
 
159
160
  send_action("_notice_heart_beat", {})
160
161
  end
@@ -202,7 +203,7 @@ class DangoClientFramework
202
203
  @sock = nil
203
204
 
204
205
  @is_session_closed = true
205
- logger.info "calling dango_session_closed()"
206
+ logger.info "calling dango_session_closed():#{Time.now_to_s}"
206
207
  dango_session_closed() # セッションが切れると呼ばれる処理
207
208
 
208
209
  @is_close = true
@@ -141,9 +141,9 @@ module DangoFrameworkModule
141
141
  rescue EOFError, IOError, Errno::ECONNRESET, Errno::ETIMEDOUT, Errno::ECONNABORTED
142
142
  # 接続終了時の切断と思われるものはDangoFrameworkConnectionErrorにしない
143
143
  #raise(DangoFrameworkError, "failed to read sock for EOF reached.\n#{error_message($!, 'u')}")
144
- raise(DangoFrameworkError, "failed to read sock for EOF reached (and so on). #{$!.class} toid=#{Thread.current.object_id}")
144
+ raise(DangoFrameworkError, "failed to read sock for EOF reached (and so on). sock=#{sock.inspect} #{$!.class} toid=#{Thread.current.object_id}")
145
145
  rescue
146
- raise(DangoFrameworkConnectionError, "failed to read sock. toid=#{Thread.current.object_id}\n#{error_message($!, 'u')}")
146
+ raise(DangoFrameworkConnectionError, "failed to read sock. sock=#{sock.inspect} toid=#{Thread.current.object_id}\n#{error_message($!, 'u')}")
147
147
  end
148
148
 
149
149
  if size_str == ""
@@ -25,9 +25,9 @@ class DangoServerFramework
25
25
  SendReceiveSleepIntervalSec = 0.2 # データ送信時のタイムアウトチェック間隔秒
26
26
  SendReceiveTimeoutDefaultSec = 5.0 # データ送受信時のデフォルトタイムアウト秒数
27
27
  SendTimeoutSec = 4.0 # データ送受信時の送信のタイムアウト秒数
28
- HeartBeatIntervalSec = 10.0 # S=>Cのheart beatの送信間隔秒数
28
+ HeartBeatIntervalSec = 10.0 # heart beatのチェック間隔秒数
29
29
  HeartBeatResponseWaitSec = 10.0 # S=>Cのheart beatの返信待ち秒数
30
- HeartBeatReceiveWaitSec = 20.0 # C=>Sのheart beatの受信待ち秒数
30
+ HeartBeatReceiveWaitSec = 30.0 # C=>Sのheart beatの受信待ち秒数
31
31
  GCIntervalSec = 5.0 # GCの発生タイミング
32
32
 
33
33
 
@@ -275,7 +275,7 @@ class DangoServerFramework
275
275
  ServerMonitorAction.new(self, @config, sock, ret_obj)
276
276
 
277
277
  else # メンテナンスコマンド以外のユーザーアクション名なら
278
- logger.debug "action_name=#{action_name} #{sid} #{Time.now_to_s}"
278
+ logger.debug "receive_action:#{sid}:#{action_name}:#{Time.now_to_s}"
279
279
  begin
280
280
  __send__("dango_receive_#{action_name}", ret_obj)
281
281
  rescue NoMethodError
@@ -550,11 +550,12 @@ class DangoServerFramework
550
550
  begin
551
551
  sleep @gc_interval_sec
552
552
 
553
+ logger.debug "GC start #{Time.now_to_s}"
553
554
  gc_start_time = Time.now
554
555
  GC.enable
555
556
  GC.start
556
557
  GC.disable
557
- logger.debug "GC #{Time.now - gc_start_time}sec #{Time.now_to_s}"
558
+ logger.debug "GC end #{Time.now - gc_start_time}sec #{Time.now_to_s}"
558
559
 
559
560
  rescue
560
561
  logger.error "Exception gc_thread_start #{Time.now_to_s} #{error_message($!, 'u')}"
@@ -587,7 +588,7 @@ class DangoServerFramework
587
588
 
588
589
  # クライアントから来たハートビートの時間チェック
589
590
  if heart_beat_time_hash[sid] && heart_beat_time_hash[sid] < Time.now - @heart_beat_receive_wait_sec
590
- logger.debug "heart_beat_thread_start:heart beat old #{heart_beat_time_hash[sid]} #{sock} #{sock.closed?}"
591
+ logger.debug "!!!! heart_beat_thread_start:heart beat old:#{sid}:#{heart_beat_time_hash[sid]}:#{Time.now_to_s}:#{sock}:#{sock.closed?}"
591
592
  sock.close if !sock.closed?
592
593
  end
593
594
  end
@@ -603,7 +604,7 @@ class DangoServerFramework
603
604
 
604
605
  # クライアントから来たheart_beatなら
605
606
  def dango_receive__notice_heart_beat(ret_obj)
606
- logger.debug "dango_receive__notice_heart_beat:#{session[:sid]} #{Time.now_to_s}"
607
+ logger.debug "dango_receive__notice_heart_beat:#{session[:sid]}:#{ret_obj['_hb_id']} #{Time.now_to_s}"
607
608
 
608
609
  shared.transaction(:heart_beat_time_hash) do |heart_beat_time_hash|
609
610
  heart_beat_time_hash[session[:sid]] = Time.now
@@ -757,7 +758,7 @@ class DangoServerFramework
757
758
  sleep wait_sec
758
759
  end
759
760
  end
760
- th.priority = 1
761
+ # th.priority = 1
761
762
 
762
763
  end
763
764
 
@@ -9,13 +9,19 @@ require 'thread'
9
9
 
10
10
  # テスタークラス
11
11
  class DangoTesterClient
12
- ConnectionRetryTimes = 10 # 接続リトライ回数
13
- ConnectionRetryIntervalSec = 3 # 接続リトライ時の間隔病数
12
+ ConnectionRetryTimes = 10 # 接続リトライ回数
13
+ ConnectionRetryIntervalSec = 3 # 接続リトライ時の間隔病数
14
+ GCIntervalSec = 5.0 # GCの発生タイミング
14
15
 
15
16
  # テスターのイニシャライズ
16
17
  def initialize
17
18
  @client_conns = {}
18
19
  Thread.abort_on_exception = true
20
+
21
+ # GC発生タイミングを決定
22
+ @gc_interval_sec = GCIntervalSec
23
+ gc_thread_start() # GCスレッドの開始
24
+
19
25
  end
20
26
 
21
27
  # クライアントを1個接続
@@ -65,6 +71,28 @@ class DangoTesterClient
65
71
  def self.die(str)
66
72
  die(str)
67
73
  end
74
+
75
+ # GCスレッドの開始
76
+ def gc_thread_start
77
+ th = Thread.start do
78
+ loop do
79
+ begin
80
+ sleep @gc_interval_sec
81
+
82
+ gc_start_time = Time.now
83
+ GC.enable
84
+ GC.start
85
+ GC.disable
86
+ puts "GC #{Time.now - gc_start_time}sec #{Time.now_to_s}"
87
+
88
+ rescue
89
+ puts "Exception gc_thread_start #{Time.now_to_s} #{error_message($!, 'u')}"
90
+ end
91
+ end
92
+ end
93
+ th.priority = -1
94
+ end
95
+
68
96
  end
69
97
 
70
98
  # テスト接続用のクラス
data/lib/dango/version.rb CHANGED
@@ -2,7 +2,7 @@ module Dango #:nodoc:
2
2
  module VERSION #:nodoc:
3
3
  MAJOR = 0
4
4
  MINOR = 0
5
- TINY = 31
5
+ TINY = 32
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.31
7
- date: 2007-11-10 00:00:00 +09:00
6
+ version: 0.0.32
7
+ date: 2007-11-12 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