dango 0.0.32 → 0.0.34
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.
- data/lib/dango/client_framework.rb +10 -10
- data/lib/dango/framework_base.rb +18 -11
- data/lib/dango/server_framework.rb +31 -33
- data/lib/dango/tasks/dango_rake.rb +10 -8
- data/lib/dango/tester/dango_tester_client.rb +13 -13
- data/lib/dango/version.rb +1 -1
- metadata +2 -2
@@ -59,7 +59,7 @@ class DangoClientFramework
|
|
59
59
|
@log_level = @connection_client_log_level
|
60
60
|
|
61
61
|
# loggerの準備
|
62
|
-
logger.debug("-------client initialize")
|
62
|
+
logger.debug("-------client initialize host=#{@connection_client_host} port=#{@connection_client_port}")
|
63
63
|
|
64
64
|
# データ送受信用の共有メモリ初期化
|
65
65
|
send_return_shared_init()
|
@@ -75,7 +75,7 @@ class DangoClientFramework
|
|
75
75
|
# サーバーへ接続
|
76
76
|
begin
|
77
77
|
@sock = TCPSocket.new(@connection_client_host, @connection_client_port)
|
78
|
-
rescue Errno::EBADF
|
78
|
+
rescue Errno::EBADF, Exception
|
79
79
|
raise DangoFrameworkConnectionError
|
80
80
|
end
|
81
81
|
|
@@ -119,19 +119,19 @@ class DangoClientFramework
|
|
119
119
|
end
|
120
120
|
|
121
121
|
# メソッド呼び出し
|
122
|
-
logger.info "calling method=#{ret_obj["notice"].inspect} #{@sid}
|
122
|
+
logger.info "calling method=#{ret_obj["notice"].inspect} #{@sid} "
|
123
123
|
begin
|
124
124
|
__send__("dango_receive_#{ret_obj["notice"]}", ret_obj)
|
125
125
|
rescue
|
126
|
-
logger.error "error in dango_receive_#{ret_obj["notice"]} #{@sid}
|
126
|
+
logger.error "error in dango_receive_#{ret_obj["notice"]} #{@sid} \n#{error_message($!, 'u')}"
|
127
127
|
ensure
|
128
128
|
# データの受信の送信返し
|
129
129
|
response_notice_name = "_response"
|
130
130
|
send_obj = {"_id" => ret_obj["_id"]}
|
131
131
|
send_action(response_notice_name, send_obj)
|
132
|
-
logger.debug "response_notice_name=#{response_notice_name.inspect} #{@sid}
|
132
|
+
logger.debug "response_notice_name=#{response_notice_name.inspect} #{@sid} "
|
133
133
|
end
|
134
|
-
logger.debug "called method=#{ret_obj["notice"].inspect} #{@sid}
|
134
|
+
logger.debug "called method=#{ret_obj["notice"].inspect} #{@sid} "
|
135
135
|
|
136
136
|
else
|
137
137
|
sleep 0.01
|
@@ -155,13 +155,13 @@ class DangoClientFramework
|
|
155
155
|
sleep HeartBeatSendIntervalSec
|
156
156
|
|
157
157
|
if @sock && ! @sock.closed?
|
158
|
-
logger.debug "dango_heart_beat_thread_init:send _notice_heart_beat
|
158
|
+
logger.debug "dango_heart_beat_thread_init:send _notice_heart_beat:"
|
159
159
|
|
160
160
|
send_action("_notice_heart_beat", {})
|
161
161
|
end
|
162
162
|
|
163
163
|
rescue
|
164
|
-
logger.error "Exception dango_heart_beat_thread_init
|
164
|
+
logger.error "Exception dango_heart_beat_thread_init #{error_message($!, 'u')}"
|
165
165
|
end
|
166
166
|
end
|
167
167
|
end
|
@@ -203,7 +203,7 @@ class DangoClientFramework
|
|
203
203
|
@sock = nil
|
204
204
|
|
205
205
|
@is_session_closed = true
|
206
|
-
logger.info "calling dango_session_closed()
|
206
|
+
logger.info "calling dango_session_closed():"
|
207
207
|
dango_session_closed() # セッションが切れると呼ばれる処理
|
208
208
|
|
209
209
|
@is_close = true
|
@@ -229,7 +229,7 @@ class DangoClientFramework
|
|
229
229
|
|
230
230
|
# クライアントからサーバーへのデータ送信
|
231
231
|
def send_action(action_name, send_obj)
|
232
|
-
logger.debug "send_action(#{action_name.inspect}, #{send_obj['_id']})
|
232
|
+
logger.debug "send_action(#{action_name.inspect}, #{send_obj['_id']}) "
|
233
233
|
send_obj_dup = send_obj.dup
|
234
234
|
send_obj_dup["action"] = action_name.to_s
|
235
235
|
dango_send_data(@sock, send_obj_dup)
|
data/lib/dango/framework_base.rb
CHANGED
@@ -6,8 +6,9 @@
|
|
6
6
|
|
7
7
|
require "rubygems"
|
8
8
|
|
9
|
-
require '
|
9
|
+
require 'resolv-replace' # 名前解決時のロックがかかってしまう件を解決できるはず
|
10
10
|
require 'socket'
|
11
|
+
require 'logger'
|
11
12
|
require 'thread'
|
12
13
|
require 'timeout'
|
13
14
|
require 'yaml'
|
@@ -44,7 +45,7 @@ class Time
|
|
44
45
|
def self.now_to_s
|
45
46
|
# self.strftime("%Y-%m-%d %H:%M:%S")
|
46
47
|
now = self.now
|
47
|
-
now.strftime("%Y-%m-%dT%H:%M:%S.") << "%06d
|
48
|
+
now.strftime("%Y-%m-%dT%H:%M:%S.") << "%06d" % now.usec
|
48
49
|
end
|
49
50
|
end
|
50
51
|
|
@@ -113,21 +114,27 @@ module DangoFrameworkModule
|
|
113
114
|
|
114
115
|
# ロガーの定義
|
115
116
|
def logger
|
116
|
-
# if !@
|
117
|
-
if !self.instance_variables.find{|iv| iv == '@
|
117
|
+
# if !@dango_logger # これだと警告が出てうざいので
|
118
|
+
if !self.instance_variables.find{|iv| iv == '@dango_logger'} # @dango_loggerが未定義なら
|
118
119
|
if @log_file != ""
|
119
120
|
log_dir = File.dirname(@log_file)
|
120
121
|
Dir.mkdir(log_dir) if !File.exist?(log_dir)
|
121
|
-
@
|
122
|
-
@
|
123
|
-
@
|
124
|
-
#
|
125
|
-
|
122
|
+
@dango_logger = Logger.new(@log_file)
|
123
|
+
@dango_logger.level = @log_level
|
124
|
+
def @dango_logger.format_message(severity, timestamp, msg, progname)
|
125
|
+
# "#{Time.now_to_s}:#{sprintf('%1.1s', severity)}:#{progname}:#{msg}\n"
|
126
|
+
# "%s, [%s#%d] %5s -- %s: %s\n" % [severity[0..0], format_datetime(time), $$, severity, progname,msg2str(msg)]
|
127
|
+
now = Time.now
|
128
|
+
now_str = now.strftime("%Y-%m-%d %H:%M:%S.") << "%06d" % now.usec
|
129
|
+
"%1.1s, [%s] %d:%s %s\n" % [severity, now_str, Thread.current.object_id, progname, msg]
|
130
|
+
end
|
126
131
|
end
|
127
132
|
end
|
128
|
-
@
|
133
|
+
@dango_logger
|
129
134
|
end
|
130
135
|
|
136
|
+
attr(:dango_logger)
|
137
|
+
|
131
138
|
# データ受信処理
|
132
139
|
def dango_receive_data(sock)
|
133
140
|
ret_data = ""
|
@@ -264,7 +271,7 @@ module DangoFrameworkModule
|
|
264
271
|
|
265
272
|
@send_count += 1 if @send_count # 受信回数カウント
|
266
273
|
# logger.debug "finish dango_send_data:#{send_data.inspect}"
|
267
|
-
# logger.debug "finish dango_send_data
|
274
|
+
# logger.debug "finish dango_send_data:toid=#{Thread.current.object_id} #{sock} #{sock.closed?}"
|
268
275
|
|
269
276
|
sock
|
270
277
|
end
|
@@ -84,7 +84,6 @@ class DangoServerFramework
|
|
84
84
|
set_server_variables() # 各種サーバー仕様の変数設定
|
85
85
|
|
86
86
|
logger.debug("===== server initialize =====") # loggerの準備
|
87
|
-
logger.debug("#{Time.now_to_s}")
|
88
87
|
logger.debug("Process.pid=#{Process.pid}")
|
89
88
|
logger.debug("port=#{@connection_server_port}")
|
90
89
|
logger.debug("host=#{@connection_server_host}")
|
@@ -198,14 +197,13 @@ class DangoServerFramework
|
|
198
197
|
|
199
198
|
# gserver接続開始処理
|
200
199
|
def disconnecting(port)
|
201
|
-
logger.debug "disconnecting:port=#{port}
|
200
|
+
logger.debug "disconnecting:port=#{port}"
|
202
201
|
end
|
203
202
|
|
204
203
|
# gserverのserveメソッド:スレッド開始処理
|
205
204
|
def thread_main(sock)
|
206
|
-
logger.debug "thread_main:start"
|
207
205
|
# logger.debug "#{sock} is accepted. thread.current=#{Thread.current.object_id} sock_id=#{sock.object_id}"
|
208
|
-
logger.debug "#{sock} is accepted. thread.current=#{Thread.current.object_id}"
|
206
|
+
logger.debug "#{sock} is accepted. thread.current=#{Thread.current.object_id} "
|
209
207
|
|
210
208
|
begin
|
211
209
|
sock.binmode
|
@@ -222,7 +220,7 @@ class DangoServerFramework
|
|
222
220
|
# 接続直後のsid通知
|
223
221
|
send_obj = {"_sid"=>sid}
|
224
222
|
send_notice(sid, "_notice_sid", send_obj)
|
225
|
-
logger.debug "_notice_sid #{sid}
|
223
|
+
logger.debug "_notice_sid #{sid} "
|
226
224
|
|
227
225
|
# 誰かが接続したときに60秒以上経った@arr_send_responseを削除
|
228
226
|
@mutex_send_response.synchronize do
|
@@ -245,7 +243,7 @@ class DangoServerFramework
|
|
245
243
|
end
|
246
244
|
|
247
245
|
if is_flash_policy_file && @policy_file_request # Flashのポリシーファイルが来たら
|
248
|
-
logger.debug "is_flash_policy_file #{sid}
|
246
|
+
logger.debug "is_flash_policy_file #{sid} "
|
249
247
|
policy_data = '<?xml version="1.0"?><cross-domain-policy><allow-access-from domain="*" to-ports="*" /></cross-domain-policy>' + "\0" + "\n"
|
250
248
|
logger.debug policy_data
|
251
249
|
sock.write policy_data
|
@@ -254,7 +252,7 @@ class DangoServerFramework
|
|
254
252
|
raise(DangoFrameworkFlashPolicyError, "policy file sent. disconnectiong...")
|
255
253
|
|
256
254
|
elsif ret_obj == {} # 受信データがなければ
|
257
|
-
# logger.debug "ret_obj is empty.
|
255
|
+
# logger.debug "ret_obj is empty. "
|
258
256
|
|
259
257
|
else # 受信データがあれば
|
260
258
|
if !(ret_obj && ret_obj["action"]) # actionが無い場合はエラー
|
@@ -268,14 +266,14 @@ class DangoServerFramework
|
|
268
266
|
@mutex_proc_thread.synchronize do
|
269
267
|
|
270
268
|
if action_name == '_response' # 送信パケットの返事なら
|
271
|
-
# logger.debug "action_name=#{action_name} #{ret_obj['_id']}
|
269
|
+
# logger.debug "action_name=#{action_name} #{ret_obj['_id']} "
|
272
270
|
action_name_is_response(ret_obj)
|
273
271
|
|
274
272
|
elsif action_name[0, 9] == '_monitor_' # メンテナンスアクション名なら
|
275
273
|
ServerMonitorAction.new(self, @config, sock, ret_obj)
|
276
274
|
|
277
275
|
else # メンテナンスコマンド以外のユーザーアクション名なら
|
278
|
-
logger.debug "receive_action:#{sid}:#{action_name}
|
276
|
+
logger.debug "receive_action:#{sid}:#{action_name}:"
|
279
277
|
begin
|
280
278
|
__send__("dango_receive_#{action_name}", ret_obj)
|
281
279
|
rescue NoMethodError
|
@@ -290,23 +288,23 @@ class DangoServerFramework
|
|
290
288
|
end # loop
|
291
289
|
|
292
290
|
rescue DangoFrameworkFlashPolicyError
|
293
|
-
logger.debug "Flash policy file send. #{sid}
|
291
|
+
logger.debug "Flash policy file send. #{sid} "
|
294
292
|
|
295
293
|
rescue DangoFrameworkMonitorSecurityError
|
296
|
-
logger.debug "Monitor Security Error #{sid}
|
294
|
+
logger.debug "Monitor Security Error #{sid} "
|
297
295
|
|
298
296
|
rescue DangoFrameworkReadNoDataError
|
299
|
-
logger.debug "read no data. maybe client closed. #{sid}
|
297
|
+
logger.debug "read no data. maybe client closed. #{sid} "
|
300
298
|
|
301
299
|
rescue DangoFrameworkConnectionError
|
302
300
|
@recv_fail_count += 1 if @recv_fail_count # 受信失敗回数カウント
|
303
|
-
logger.debug "connection error. #{sid}
|
301
|
+
logger.debug "connection error. #{sid} \n#{error_message($!, 'u')}"
|
304
302
|
|
305
303
|
rescue DangoFrameworkError
|
306
|
-
logger.debug "DangoFrameworkError. #{sid}
|
304
|
+
logger.debug "DangoFrameworkError. #{sid} \n#{error_message($!, 'u')}"
|
307
305
|
|
308
306
|
rescue Exception
|
309
|
-
logger.error "Exception #{sid} #{
|
307
|
+
logger.error "Exception #{sid} #{error_message($!, 'u')}"
|
310
308
|
|
311
309
|
ensure
|
312
310
|
logger.debug "#{sock.inspect} #{sid} is gone"
|
@@ -335,7 +333,7 @@ class DangoServerFramework
|
|
335
333
|
|
336
334
|
# action_nameが送信パケットの返事なら
|
337
335
|
def action_name_is_response(ret_obj)
|
338
|
-
logger.debug "action_name_is_response: #{ret_obj['_id']} #{session[:sid]}
|
336
|
+
logger.debug "action_name_is_response: #{ret_obj['_id']} #{session[:sid]} "
|
339
337
|
@mutex_send_response.synchronize do
|
340
338
|
@arr_send_response.push({:_id => ret_obj["_id"], :time => Time.now})
|
341
339
|
end
|
@@ -550,15 +548,15 @@ class DangoServerFramework
|
|
550
548
|
begin
|
551
549
|
sleep @gc_interval_sec
|
552
550
|
|
553
|
-
logger.debug "GC start
|
551
|
+
logger.debug "GC start "
|
554
552
|
gc_start_time = Time.now
|
555
553
|
GC.enable
|
556
554
|
GC.start
|
557
555
|
GC.disable
|
558
|
-
logger.debug "GC end #{Time.now - gc_start_time}sec
|
556
|
+
logger.debug "GC end #{Time.now - gc_start_time}sec "
|
559
557
|
|
560
558
|
rescue
|
561
|
-
logger.error "Exception gc_thread_start
|
559
|
+
logger.error "Exception gc_thread_start #{error_message($!, 'u')}"
|
562
560
|
end
|
563
561
|
end
|
564
562
|
end
|
@@ -575,7 +573,7 @@ class DangoServerFramework
|
|
575
573
|
sleep @herat_beat_interval_sec
|
576
574
|
|
577
575
|
if ! @gserver.stopped? # gserverが起動していれば
|
578
|
-
logger.debug "heart_beat_thread_start
|
576
|
+
logger.debug "heart_beat_thread_start "
|
579
577
|
|
580
578
|
# クライアントから来るハートビートのチェック
|
581
579
|
heart_beat_time_hash = shared[:heart_beat_time_hash]
|
@@ -588,14 +586,14 @@ class DangoServerFramework
|
|
588
586
|
|
589
587
|
# クライアントから来たハートビートの時間チェック
|
590
588
|
if heart_beat_time_hash[sid] && heart_beat_time_hash[sid] < Time.now - @heart_beat_receive_wait_sec
|
591
|
-
logger.debug "!!!! heart_beat_thread_start:heart beat old:#{sid}:#{heart_beat_time_hash[sid]}:#{
|
589
|
+
logger.debug "!!!! heart_beat_thread_start:heart beat old:#{sid}:#{heart_beat_time_hash[sid]}:#{sock}:#{sock.closed?}"
|
592
590
|
sock.close if !sock.closed?
|
593
591
|
end
|
594
592
|
end
|
595
593
|
end
|
596
594
|
|
597
595
|
rescue
|
598
|
-
logger.error "Exception heart_beat_thread_start
|
596
|
+
logger.error "Exception heart_beat_thread_start #{error_message($!, 'u')}"
|
599
597
|
end
|
600
598
|
end
|
601
599
|
end
|
@@ -604,7 +602,7 @@ class DangoServerFramework
|
|
604
602
|
|
605
603
|
# クライアントから来たheart_beatなら
|
606
604
|
def dango_receive__notice_heart_beat(ret_obj)
|
607
|
-
logger.debug "dango_receive__notice_heart_beat:#{session[:sid]}:#{ret_obj['_hb_id']}
|
605
|
+
logger.debug "dango_receive__notice_heart_beat:#{session[:sid]}:#{ret_obj['_hb_id']} "
|
608
606
|
|
609
607
|
shared.transaction(:heart_beat_time_hash) do |heart_beat_time_hash|
|
610
608
|
heart_beat_time_hash[session[:sid]] = Time.now
|
@@ -614,7 +612,7 @@ class DangoServerFramework
|
|
614
612
|
|
615
613
|
# サーバーからクライアントへのデータ送信
|
616
614
|
def send_notice(sid, notice_name, send_obj, options = {})
|
617
|
-
logger.debug "send_notice(#{sid.inspect}, #{notice_name.inspect})
|
615
|
+
logger.debug "send_notice(#{sid.inspect}, #{notice_name.inspect}) "
|
618
616
|
# logger.debug "send_notice(#{sid.inspect}, #{notice_name.inspect}, #{send_obj.inspect}, #{options.inspect})"
|
619
617
|
|
620
618
|
raise(DangoFrameworkError, "send_obj is not Hash.") if ! send_obj.is_a?(Hash)
|
@@ -624,7 +622,7 @@ class DangoServerFramework
|
|
624
622
|
|
625
623
|
sock = socket_list[sid]
|
626
624
|
if !sock || sock.closed? # sockがないという事はすでに切断済み
|
627
|
-
logger.info "send_notice:already closed socket. sid=#{sid.inspect} sock=#{sock.inspect} #{sock ? sock.closed? : nil}
|
625
|
+
logger.info "send_notice:already closed socket. sid=#{sid.inspect} sock=#{sock.inspect} #{sock ? sock.closed? : nil} "
|
628
626
|
return(self)
|
629
627
|
end
|
630
628
|
|
@@ -648,7 +646,7 @@ class DangoServerFramework
|
|
648
646
|
send_obj_dup["notice"] = notice_name.to_s
|
649
647
|
|
650
648
|
mutex_socket_list.synchronize(sid) do
|
651
|
-
# logger.debug "mutex_socket_list:synchronize:#{notice_name} #{sid}
|
649
|
+
# logger.debug "mutex_socket_list:synchronize:#{notice_name} #{sid} "
|
652
650
|
|
653
651
|
digest_key = sid.to_s + notice_name.to_s + Time.now.to_f.to_s + rand().to_s
|
654
652
|
send_obj_dup["_id"] = Digest::MD5.hexdigest(digest_key)
|
@@ -657,20 +655,20 @@ class DangoServerFramework
|
|
657
655
|
receive_thread = Thread.start(sock, send_obj_dup, dtype) do
|
658
656
|
begin
|
659
657
|
dango_send_data(sock, send_obj_dup, :type=>dtype) # データ送信
|
660
|
-
# logger.debug "send_notice:sent:notice_name=#{send_obj_dup['_id']} #{notice_name.inspect} #{sid}
|
658
|
+
# logger.debug "send_notice:sent:notice_name=#{send_obj_dup['_id']} #{notice_name.inspect} #{sid} "
|
661
659
|
rescue DangoFrameworkConnectionError
|
662
|
-
logger.debug "send_notice:DangoFrameworkConnectionError:notice_name=#{notice_name.inspect} #{sid}
|
660
|
+
logger.debug "send_notice:DangoFrameworkConnectionError:notice_name=#{notice_name.inspect} #{sid} "
|
663
661
|
rescue DangoFrameworkError
|
664
|
-
logger.debug "ERROR:send_notice:DangoFrameworkError:notice_name=#{notice_name.inspect} #{sid}
|
662
|
+
logger.debug "ERROR:send_notice:DangoFrameworkError:notice_name=#{notice_name.inspect} #{sid} \n #{error_message($!, 'u')}"
|
665
663
|
end
|
666
664
|
end
|
667
665
|
|
668
666
|
# データ送信スレッドの終了待ち
|
669
667
|
if !receive_thread.join(@send_timeout_sec)
|
670
668
|
# タイムアウトの場合は
|
671
|
-
logger.warn "send_notice:send timeout:#{notice_name} #{sid}
|
669
|
+
logger.warn "send_notice:send timeout:#{notice_name} #{sid} "
|
672
670
|
else
|
673
|
-
# logger.warn "send_notice:sent after join:#{notice_name} #{sid}
|
671
|
+
# logger.warn "send_notice:sent after join:#{notice_name} #{sid} "
|
674
672
|
end_reserved_time = Time.now + timeout
|
675
673
|
|
676
674
|
# タイムアウトチェック
|
@@ -691,7 +689,7 @@ class DangoServerFramework
|
|
691
689
|
end
|
692
690
|
|
693
691
|
if Time.now > end_reserved_time
|
694
|
-
logger.debug "send_notice:receive timeout:#{notice_name} #{sid}
|
692
|
+
logger.debug "send_notice:receive timeout:#{notice_name} #{sid} #{end_reserved_time}"
|
695
693
|
|
696
694
|
if notice_name.to_s == "_heart_beat" # heart beatだったらsockを止める
|
697
695
|
logger.info "!!!! send_notice:heart_beat timeout"
|
@@ -704,7 +702,7 @@ class DangoServerFramework
|
|
704
702
|
end # catch 終わり
|
705
703
|
|
706
704
|
if !have_came_response # 戻ってきたデータがあるかどうかチェック
|
707
|
-
logger.warn "!!! received data is none:#{notice_name} #{sid} #{send_obj_dup['_id']}
|
705
|
+
logger.warn "!!! received data is none:#{notice_name} #{sid} #{send_obj_dup['_id']} "
|
708
706
|
end
|
709
707
|
end
|
710
708
|
end # mutex
|
@@ -1,6 +1,8 @@
|
|
1
1
|
# 環境変数設定
|
2
2
|
ENV['RAILS_ENV'] = ENV['RAILS_ENV'] || 'development'
|
3
3
|
|
4
|
+
require "pp"
|
5
|
+
|
4
6
|
namespace :dango do
|
5
7
|
desc "initialize dango"
|
6
8
|
task :initialize do
|
@@ -71,13 +73,13 @@ namespace :dango do
|
|
71
73
|
require 'dango/monitor/dango_monitor_client.rb'
|
72
74
|
begin
|
73
75
|
dm = DangoMonitorClient.new()
|
74
|
-
|
76
|
+
pp dm.server_reload()
|
75
77
|
dm.dango_client_close
|
76
78
|
puts "complete server_reload."
|
77
79
|
rescue
|
78
|
-
|
79
|
-
|
80
|
-
|
80
|
+
pp $!.class
|
81
|
+
pp $!.message
|
82
|
+
pp $!.backtrace
|
81
83
|
puts "failed server_reload."
|
82
84
|
end
|
83
85
|
end
|
@@ -99,13 +101,13 @@ namespace :dango do
|
|
99
101
|
|
100
102
|
begin
|
101
103
|
dm = DangoMonitorClient.new()
|
102
|
-
|
104
|
+
pp dm.send_system_message(message)
|
103
105
|
dm.dango_client_close
|
104
106
|
puts "complete send_system_message."
|
105
107
|
rescue
|
106
|
-
|
107
|
-
|
108
|
-
|
108
|
+
pp $!.class
|
109
|
+
pp $!.message
|
110
|
+
pp $!.backtrace
|
109
111
|
puts "failed send_system_message."
|
110
112
|
end
|
111
113
|
end
|
@@ -137,13 +137,13 @@ class TestClient < DangoClientFramework
|
|
137
137
|
|
138
138
|
# テストサーバー
|
139
139
|
def send(name, send_obj = {})
|
140
|
-
logger.debug("tester.send:send_obj=#{send_obj.inspect}
|
140
|
+
logger.debug("tester.send:send_obj=#{send_obj.inspect} ")
|
141
141
|
send_action(name, send_obj)
|
142
142
|
end
|
143
143
|
|
144
144
|
# trap_receive
|
145
145
|
def trap_receive(notice_name, options = {})
|
146
|
-
logger.debug "trap_receive_data:#{notice_name}
|
146
|
+
logger.debug "trap_receive_data:#{notice_name}:"
|
147
147
|
timeout = options[:timeout] || ReceiveTrapTimeoutSec
|
148
148
|
trap_proc = options[:proc] || nil
|
149
149
|
trap_loop = options[:loop] || nil # procがある場合のみ有効なフラグ
|
@@ -180,12 +180,12 @@ class TestClient < DangoClientFramework
|
|
180
180
|
# タイムアウトチェック
|
181
181
|
loop do
|
182
182
|
if end_reserved_time != Time.at(0) && end_reserved_time < Time.now
|
183
|
-
raise(DangoFrameworkTimeoutError, "timeout:timeout_sec=#{timeout}
|
183
|
+
raise(DangoFrameworkTimeoutError, "timeout:timeout_sec=#{timeout}: \n client_name=#{@client_name}(#{self.sid}): \n notice_name=#{notice_name}")
|
184
184
|
end
|
185
185
|
|
186
186
|
# 戻ってきたデータがあれば
|
187
187
|
if send_receive_shared[notice_name]
|
188
|
-
logger.debug "notice_name:#{notice_name}:#{send_receive_shared[notice_name].inspect}
|
188
|
+
logger.debug "notice_name:#{notice_name}:#{send_receive_shared[notice_name].inspect} "
|
189
189
|
break
|
190
190
|
end
|
191
191
|
|
@@ -199,7 +199,7 @@ class TestClient < DangoClientFramework
|
|
199
199
|
|
200
200
|
# :procが設定されている場合は、それを呼び出す
|
201
201
|
if trap_proc
|
202
|
-
logger.debug "trap_receive_data:trap_proc:#{trap_proc.inspect}
|
202
|
+
logger.debug "trap_receive_data:trap_proc:#{trap_proc.inspect} "
|
203
203
|
trap_proc.call(send_receive_shared[notice_name])
|
204
204
|
send_receive_shared[notice_name] = nil
|
205
205
|
break if ! trap_loop # loopする必要がなければスレッド終了
|
@@ -207,7 +207,7 @@ class TestClient < DangoClientFramework
|
|
207
207
|
# :procが設定されていなければ、wait用に@receive_arrに入れておく
|
208
208
|
else
|
209
209
|
@receive_mutex.synchronize do
|
210
|
-
logger.debug "notice_name:#{notice_name}:#{send_receive_shared[notice_name].inspect}
|
210
|
+
logger.debug "notice_name:#{notice_name}:#{send_receive_shared[notice_name].inspect} "
|
211
211
|
@receive_arr.push([notice_name.deep_dup, send_receive_shared[notice_name].deep_dup])
|
212
212
|
send_receive_shared[notice_name] = nil
|
213
213
|
end
|
@@ -228,22 +228,22 @@ class TestClient < DangoClientFramework
|
|
228
228
|
@trap_thread_hash[notice_name] = th
|
229
229
|
else
|
230
230
|
|
231
|
-
logger.debug "trap_receive_data:already register trap:notice_name:#{notice_name}
|
231
|
+
logger.debug "trap_receive_data:already register trap:notice_name:#{notice_name} "
|
232
232
|
end
|
233
233
|
|
234
234
|
end
|
235
235
|
|
236
236
|
# cancel trap_receive
|
237
237
|
def cancel_trap_receive(notice_name, options = {})
|
238
|
-
logger.debug "cancel_trap_receive:#{notice_name}
|
238
|
+
logger.debug "cancel_trap_receive:#{notice_name}:"
|
239
239
|
|
240
240
|
# trapスレッドの削除
|
241
241
|
if @trap_thread_hash[notice_name]
|
242
|
-
logger.debug "cancel_trap_receive:#{@trap_thread_hash[notice_name].status }
|
242
|
+
logger.debug "cancel_trap_receive:#{@trap_thread_hash[notice_name].status }:"
|
243
243
|
@trap_thread_hash[notice_name].kill
|
244
|
-
logger.debug "cancel_trap_receive:#{@trap_thread_hash[notice_name].status }
|
244
|
+
logger.debug "cancel_trap_receive:#{@trap_thread_hash[notice_name].status }:"
|
245
245
|
@trap_thread_hash[notice_name].join
|
246
|
-
logger.debug "cancel_trap_receive:#{@trap_thread_hash[notice_name].status }
|
246
|
+
logger.debug "cancel_trap_receive:#{@trap_thread_hash[notice_name].status }:"
|
247
247
|
|
248
248
|
@trap_thread_hash.delete(notice_name)
|
249
249
|
end
|
@@ -258,7 +258,7 @@ class TestClient < DangoClientFramework
|
|
258
258
|
|
259
259
|
# wait_receive
|
260
260
|
def wait_receive(notice_name, options = {})
|
261
|
-
logger.debug "wait_receive_data:#{notice_name}
|
261
|
+
logger.debug "wait_receive_data:#{notice_name}:"
|
262
262
|
timeout = options[:timeout] || ReceiveWaitTimeoutSec
|
263
263
|
|
264
264
|
# データ受信待ち
|
@@ -279,7 +279,7 @@ class TestClient < DangoClientFramework
|
|
279
279
|
|
280
280
|
# タイムアウトなら
|
281
281
|
if receive_data == nil
|
282
|
-
raise(DangoFrameworkTimeoutError, "timeout:timeout_sec=#{timeout}
|
282
|
+
raise(DangoFrameworkTimeoutError, "timeout:timeout_sec=#{timeout}: \n client_name=#{@client_name}(#{self.sid}) \n :notice_name=#{notice_name} \n")
|
283
283
|
end
|
284
284
|
|
285
285
|
# 結果を削除しておく
|
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.34
|
7
|
+
date: 2007-11-13 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
|