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
|
155
|
+
sleep HeartBeatSendIntervalSec
|
155
156
|
|
156
157
|
if @sock && ! @sock.closed?
|
157
|
-
logger.debug "dango_heart_beat_thread_init:send
|
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
|
data/lib/dango/framework_base.rb
CHANGED
@@ -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 #
|
28
|
+
HeartBeatIntervalSec = 10.0 # heart beatのチェック間隔秒数
|
29
29
|
HeartBeatResponseWaitSec = 10.0 # S=>Cのheart beatの返信待ち秒数
|
30
|
-
HeartBeatReceiveWaitSec =
|
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 "
|
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
|
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
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.
|
7
|
-
date: 2007-11-
|
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
|