dango 0.0.11 → 0.0.12

Sign up to get free protection for your applications and to get access to all the features.
@@ -242,16 +242,14 @@ module DangoFrameworkModule
242
242
  # cs_logger.debug "send_buf:#{send_buf.inspect}"
243
243
 
244
244
  begin
245
- # sock.write send_buf
246
- # sock.flush
245
+ sock.write send_buf
246
+ sock.flush
247
247
 
248
248
  # sock.send(size_str + "\n", 0)
249
249
  # sock.flush
250
+
250
251
  # sock.send(send_data, 0)
251
252
  # sock.flush
252
-
253
- sock.send(send_buf, 0)
254
- sock.flush
255
253
  rescue
256
254
  raise(DangoFrameworkConnectionError, "sock write failed.\n#{error_message($!, 'u')}")
257
255
  end
@@ -16,7 +16,7 @@ class DangoServerFramework
16
16
 
17
17
  SendReceiveSleepIntervalSec = 0.1 # データ送信後の順の際のタイムアウトチェック間隔秒
18
18
  SendReceiveTimeoutDefaultSec = 0.5 # データ送受信時のデフォルトタイムアウト秒数
19
- # SendReceiveTimeoutDefaultSec = 3 # データ送受信時のデフォルトタイムアウト秒数
19
+ SendTimeoutSec = 10.0 # データ送受信時の送信のタイムアウト秒数
20
20
 
21
21
  class DangoGServer < GServer
22
22
  def initialize(parent, *args)
@@ -186,9 +186,10 @@ class DangoServerFramework
186
186
  cs_connect() # 接続時メソッド呼び出し
187
187
 
188
188
  # 接続直後のsid通知
189
- session_id = session_id
190
- send_obj = {"_sid"=>session_id}
191
- cs_server_send_data(session_id, "_notice_sid", send_obj)
189
+ # Thread.start do
190
+ send_obj = {"_sid"=>session_id}
191
+ cs_server_send_data(session_id, "_notice_sid", send_obj)
192
+ # end
192
193
 
193
194
  # メインループ入り
194
195
  loop do
@@ -566,48 +567,54 @@ class DangoServerFramework
566
567
  # cs_send_data(sock, send_obj_dup, :type=>dtype) # データ送信
567
568
  # cs_logger.debug "cs_server_send_data:finish send data notice_name=#{notice_name.inspect}\n"
568
569
  # else
570
+ if notice_name.to_s == "_notice_sid"
571
+ cs_send_data(sock, send_obj_dup, :type=>dtype) # データ送信
572
+ # cs_logger.debug "cs_server_send_data:finish send data notice_name=#{notice_name.inspect}\n"
573
+ else
569
574
  Thread.start do
570
575
  begin
571
576
  mutex_socket_list.synchronize(session_id) do
572
577
  have_came_response = nil
573
578
 
574
- receive_thread = nil
575
- end_reserved_time = Time.now + timeout
579
+ receive_thread = Thread.start do
580
+ begin
581
+ cs_send_data(sock, send_obj_dup, :type=>dtype) # データ送信
582
+ # cs_logger.debug "cs_server_send_data:send data notice_name=#{notice_name.inspect} #{send_obj_dup['_id']}"
583
+ rescue DangoFrameworkError
584
+ cs_logger.debug "cs_server_send_data:DangoFrameworkError:notice_name=#{notice_name.inspect}\n"
585
+ end
586
+ end
576
587
 
577
- # タイムアウトチェック
578
- catch(:send_timeout) do
579
- (timeout.to_f / SendReceiveSleepIntervalSec).to_i.times do
580
- if Time.now > end_reserved_time
581
- cs_logger.debug "timeout:#{notice_name}"
582
- break
583
- end
584
-
585
- # 送信スレッドが開始していなければ開始
586
- if !receive_thread
587
- receive_thread = Thread.start do
588
- begin
589
- cs_send_data(sock, send_obj_dup, :type=>dtype) # データ送信
590
- # cs_logger.debug "cs_server_send_data:send data notice_name=#{notice_name.inspect} #{send_obj_dup['_id']}"
591
- rescue DangoFrameworkError
592
- cs_logger.debug "cs_server_send_data:DangoFrameworkError:notice_name=#{notice_name.inspect}\n"
593
- end
588
+ # データ送信スレッドの終了待ち
589
+ if !receive_thread.join(SendTimeoutSec)
590
+ # タイムアウトの場合は
591
+ cs_logger.warn "cs_server_send_data:send timeout:#{notice_name}"
592
+ else
593
+ end_reserved_time = Time.now + timeout
594
+
595
+ # タイムアウトチェック
596
+ catch(:send_timeout) do
597
+ (timeout.to_f / SendReceiveSleepIntervalSec).to_i.times do
598
+ if Time.now > end_reserved_time
599
+ cs_logger.debug "cs_server_send_data:receive timeout:#{notice_name}"
600
+ break
594
601
  end
595
- end
596
-
597
- @mutex_send_response.synchronize do
598
- if @arr_send_response.delete(send_obj_dup["_id"])
599
- have_came_response = true
600
- # cs_logger.debug "response check ok:#{notice_name} #{send_obj_dup['_id'].inspect}"
601
- throw(:send_timeout)
602
+
603
+ @mutex_send_response.synchronize do
604
+ if @arr_send_response.delete(send_obj_dup["_id"])
605
+ have_came_response = true
606
+ # cs_logger.debug "response check ok:#{notice_name} #{send_obj_dup['_id'].inspect}"
607
+ throw(:send_timeout)
608
+ end
602
609
  end
603
- end
604
-
605
- sleep SendReceiveSleepIntervalSec # スリープ
606
- end # タイムアウト処理終わり
607
- end # catch 終わり
608
-
609
- if !have_came_response # 戻ってきたデータがあるかどうかチェック
610
- cs_logger.warn "!!! received data is none. #{notice_name} #{send_obj_dup['_id']}"
610
+
611
+ sleep SendReceiveSleepIntervalSec # スリープ
612
+ end # タイムアウト処理終わり
613
+ end # catch 終わり
614
+
615
+ if !have_came_response # 戻ってきたデータがあるかどうかチェック
616
+ cs_logger.warn "!!! received data is none. #{notice_name} #{send_obj_dup['_id']}"
617
+ end
611
618
  end
612
619
  end
613
620
  rescue
@@ -615,7 +622,7 @@ class DangoServerFramework
615
622
  end
616
623
  end # Thread:end
617
624
 
618
- # end
625
+ end
619
626
 
620
627
  self
621
628
  end
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 = 11
5
+ TINY = 12
6
6
 
7
7
  STRING = [MAJOR, MINOR, TINY].join('.')
8
8
  end
metadata CHANGED
@@ -3,7 +3,7 @@ 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.11
6
+ version: 0.0.12
7
7
  date: 2007-10-16 00:00:00 +09:00
8
8
  summary: Ruby - Flash conneciton network flamework
9
9
  require_paths: