dango 0.0.11 → 0.0.12

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.
@@ -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: