dango 0.0.4 → 0.0.5
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/dango/script/dango_server.rb +1 -1
- data/lib/dango/server_framework.rb +62 -59
- data/lib/dango/version.rb +1 -1
- metadata +2 -2
@@ -548,77 +548,80 @@ class DangoServerFramework
|
|
548
548
|
send_obj_dup["notice"] = notice_name.to_s
|
549
549
|
|
550
550
|
# データ送信時にクライアントからのレスポンスを確認する(Flashのバグらしきもの対策)
|
551
|
-
if notice_name.to_s =~ /^return_/
|
552
|
-
cs_send_data(sock, send_obj_dup, :type=>dtype) # データ送信
|
553
|
-
cs_logger.debug "cs_server_send_data:finish send data notice_name=#{notice_name.inspect}\n"
|
554
|
-
else
|
551
|
+
# if notice_name.to_s =~ /^return_/
|
552
|
+
# cs_send_data(sock, send_obj_dup, :type=>dtype) # データ送信
|
553
|
+
# cs_logger.debug "cs_server_send_data:finish send data notice_name=#{notice_name.inspect}\n"
|
554
|
+
# else
|
555
555
|
Thread.start do
|
556
|
-
|
557
|
-
|
558
|
-
|
559
|
-
receive_thread = nil
|
560
|
-
end_reserved_time = Time.now + timeout
|
561
|
-
|
562
|
-
# 戻ってきたデータのチェック
|
563
|
-
notice_name_sym = (notice_name.class == Symbol) ? (":"+notice_name.to_s) : ('"'+notice_name+'"')
|
564
|
-
instance_method_name = "cs_receive_response_#{notice_name}"
|
565
|
-
# cs_logger.debug "instance_eval notice_name_sym=" + notice_name_sym.inspect
|
566
|
-
expr = <<-EOF
|
567
|
-
def self.#{instance_method_name}(ret_obj)
|
568
|
-
begin
|
569
|
-
send_receive_shared[#{notice_name_sym}] = ret_obj
|
570
|
-
rescue Exception
|
571
|
-
cs_logger.debug "instance_eval Error=" + $!.class.to_s
|
572
|
-
cs_logger.debug "instance_eval Error=" + $!.message.to_s
|
573
|
-
cs_logger.debug "instance_eval Error=" + $!.backtrace.pretty_inspect
|
574
|
-
end
|
575
|
-
end
|
576
|
-
cs_logger.debug "defined:#{instance_method_name}"
|
577
|
-
EOF
|
578
|
-
# cs_logger.debug "expr:#{expr.inspect}"
|
579
|
-
# cs_logger.debug "send_receive_shared:#{self.send_receive_shared().inspect}"
|
580
|
-
instance_eval expr
|
581
|
-
|
582
|
-
# タイムアウトチェック
|
583
|
-
(timeout.to_f / SendReceiveSleepIntervalSec).to_i.times do
|
584
|
-
if Time.now > end_reserved_time
|
585
|
-
cs_logger.debug "timeout:#{notice_name}"
|
586
|
-
break
|
587
|
-
# raise(DangoFrameworkTimeoutError, "timeout:#{notice_name}")
|
588
|
-
end
|
556
|
+
begin
|
557
|
+
mutex_socket_list.synchronize(session_id) do
|
558
|
+
send_receive_shared[notice_name] = nil
|
589
559
|
|
590
|
-
|
591
|
-
|
592
|
-
|
560
|
+
receive_thread = nil
|
561
|
+
end_reserved_time = Time.now + timeout
|
562
|
+
|
563
|
+
# 戻ってきたデータのチェック
|
564
|
+
notice_name_sym = (notice_name.class == Symbol) ? (":"+notice_name.to_s) : ('"'+notice_name+'"')
|
565
|
+
instance_method_name = "cs_receive_response_#{notice_name}"
|
566
|
+
# cs_logger.debug "instance_eval notice_name_sym=" + notice_name_sym.inspect
|
567
|
+
expr = <<-EOF
|
568
|
+
def self.#{instance_method_name}(ret_obj)
|
593
569
|
begin
|
594
|
-
|
595
|
-
|
596
|
-
|
597
|
-
cs_logger.debug "
|
570
|
+
send_receive_shared[#{notice_name_sym}] = ret_obj
|
571
|
+
rescue Exception
|
572
|
+
cs_logger.debug "instance_eval Error=" + $!.class.to_s
|
573
|
+
cs_logger.debug "instance_eval Error=" + $!.message.to_s
|
574
|
+
cs_logger.debug "instance_eval Error=" + $!.backtrace.pretty_inspect
|
598
575
|
end
|
599
576
|
end
|
600
|
-
|
577
|
+
cs_logger.debug "defined:#{instance_method_name}"
|
578
|
+
EOF
|
579
|
+
# cs_logger.debug "expr:#{expr.inspect}"
|
580
|
+
# cs_logger.debug "send_receive_shared:#{self.send_receive_shared().inspect}"
|
581
|
+
instance_eval expr
|
601
582
|
|
602
|
-
#
|
603
|
-
|
604
|
-
|
605
|
-
|
583
|
+
# タイムアウトチェック
|
584
|
+
(timeout.to_f / SendReceiveSleepIntervalSec).to_i.times do
|
585
|
+
if Time.now > end_reserved_time
|
586
|
+
cs_logger.debug "timeout:#{notice_name}"
|
587
|
+
break
|
588
|
+
# raise(DangoFrameworkTimeoutError, "timeout:#{notice_name}")
|
589
|
+
end
|
590
|
+
|
591
|
+
# 送信スレッドが開始していなければ開始
|
592
|
+
if !receive_thread
|
593
|
+
receive_thread = Thread.start do
|
594
|
+
begin
|
595
|
+
cs_send_data(sock, send_obj_dup, :type=>dtype) # データ送信
|
596
|
+
# cs_logger.debug "cs_server_send_data:send data notice_name=#{notice_name.inspect}\n"
|
597
|
+
rescue DangoFrameworkError
|
598
|
+
cs_logger.debug "cs_server_send_data:notice_name=#{notice_name.inspect}\n"
|
599
|
+
end
|
600
|
+
end
|
601
|
+
end
|
602
|
+
|
603
|
+
# 戻ってきたデータがあれば
|
604
|
+
if send_receive_shared[notice_name]
|
605
|
+
cs_logger.debug "notice_name:#{send_receive_shared[notice_name].inspect}"
|
606
|
+
break
|
607
|
+
end
|
608
|
+
|
609
|
+
sleep SendReceiveSleepIntervalSec # スリープ
|
610
|
+
end # タイムアウト処理終わり
|
611
|
+
|
612
|
+
if !send_receive_shared[notice_name] # 戻ってきたデータがあるかどうかチェック
|
613
|
+
# raise(DangoFrameworkError, "received data is none")
|
614
|
+
cs_logger.warn "!!! received data is none. #{notice_name} #{send_receive_shared[notice_name].inspect}"
|
606
615
|
end
|
607
616
|
|
608
|
-
|
609
|
-
end # タイムアウト処理終わり
|
610
|
-
|
611
|
-
if !send_receive_shared[notice_name] # 戻ってきたデータがあるかどうかチェック
|
612
|
-
# raise(DangoFrameworkError, "received data is none")
|
613
|
-
cs_logger.debug "received data is none. #{send_receive_shared[notice_name].inspect}"
|
617
|
+
remove_method(instance_method_name) # 定義したインスタンスメソッドを削除しておく
|
614
618
|
end
|
615
|
-
|
616
|
-
|
619
|
+
rescue
|
620
|
+
cs_logger.debug "send_response_thread error:#{error_message($!, 'u')}"
|
617
621
|
end
|
618
622
|
end # Thread:end
|
619
623
|
|
620
|
-
|
621
|
-
end
|
624
|
+
# end
|
622
625
|
|
623
626
|
self
|
624
627
|
end
|
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-10-
|
6
|
+
version: 0.0.5
|
7
|
+
date: 2007-10-09 00:00:00 +09:00
|
8
8
|
summary: Ruby - Flash conneciton network flamework
|
9
9
|
require_paths:
|
10
10
|
- lib
|