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