dango 0.0.31 → 0.0.32

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.
@@ -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