dango 0.2.4 → 0.2.5

Sign up to get free protection for your applications and to get access to all the features.
@@ -658,19 +658,19 @@ EOF
658
658
  # クライアントから来るハートビートのチェック
659
659
  heart_beat_time_hash = shared[:_heart_beat_time_hash]
660
660
 
661
- # 全員へheart_beatパケットを送信
661
+ # 全員分のチェック
662
662
  socket_list.keys.each do |sid|
663
663
  sock = socket_list[sid]
664
- next if ! sock
665
- # logger.debug "heart_beat_thread_start:sid=#{sid} #{sock} #{sock.closed?}"
666
- # send_notice("_heart_beat", sid, {}, {:timeout=>@heart_beat_response_wait_sec})
667
664
 
668
- # クライアントから来たハートビートの時間チェックし、古ければsocketを閉じて、threadを殺す
665
+ if ! sock # すでにsocketが無い場合は、スキップ
666
+ logger.warn "!!!! heart_beat_thread_start:sock is not found. #{sid}:#{sock}"
667
+ next
668
+ end
669
+
670
+ # クライアントから来たハートビートの時間チェックし、古ければsocketを閉じる
669
671
  if heart_beat_time_hash[sid] && heart_beat_time_hash[sid] < Time.now - @heart_beat_receive_wait_sec
670
672
  logger.warn "!!!! heart_beat_thread_start:heart beat old:#{sid}:#{heart_beat_time_hash[sid]}:#{sock}:#{sock.closed?}"
671
673
  sock.close if !sock.closed?
672
- # logger.warn "!!!! heart_beat_thread_start:thread kill:#{session_th_list[sid]}"
673
- # session_th_list[sid].kill
674
674
  end
675
675
  end
676
676
  end
@@ -729,15 +729,14 @@ EOF
729
729
  # timeout = options[:timeout] || @send_receive_timeout_default_sec
730
730
  dtype = options[:type] || 0
731
731
 
732
- # is_error = false
732
+ send_obj_dup = send_obj.deep_dup
733
+ send_obj_dup["notice"] = notice_name.to_s
734
+ send_obj_dup["server_time"] = Time.now_to_s
733
735
 
734
736
  sids.each do |sid|
735
- send_obj_dup = send_obj.deep_dup
736
- send_obj_dup["notice"] = notice_name.to_s
737
-
737
+ # send_id = Digest::MD5.hexdigest(sid.to_s + notice_name.to_s + Time.now.to_f.to_s + rand().to_s)
738
738
  # send_id = sid.to_s + notice_name.to_s + Time.now.to_f.to_s + rand().to_s
739
739
  send_id = notice_name.to_s + Time.now.to_f.to_s + rand().to_s
740
- # send_id = Digest::MD5.hexdigest(sid.to_s + notice_name.to_s + Time.now.to_f.to_s + rand().to_s)
741
740
  send_obj_dup["_id"] = send_id
742
741
 
743
742
  @queue_send_notice.push([sid, send_obj_dup, dtype].deep_dup)
@@ -753,10 +752,16 @@ EOF
753
752
  loop do
754
753
  begin
755
754
  send_data_list = []
756
- send_data_list.push(@queue_send_notice.pop) # Queueデータ待ち
755
+
756
+ pop_data = @queue_send_notice.pop
757
+ send_data_list.push(pop_data) # Queueデータ待ち
757
758
  # logger.debug "thread_send_notice_queue:sending data"
758
- while(! @queue_send_notice.empty?) do # 残りのデータもQueueに入れていく
759
- send_data_list.push(@queue_send_notice.pop)
759
+ # while(! @queue_send_notice.empty?) do # 残りのデータもQueueに入れていく
760
+
761
+ @queue_send_notice.size.times do
762
+ # while(! @queue_send_notice.empty?) do # 残りのデータもQueueに入れていく
763
+ pop_data = @queue_send_notice.pop
764
+ send_data_list.push(pop_data) # Queueデータ待ち
760
765
  end
761
766
 
762
767
  send_data_sid_list = {}
@@ -771,7 +776,7 @@ EOF
771
776
  end
772
777
 
773
778
  # sidごとにデータをまとめ送り
774
- send_data_sid_list.each do |sid, one_send_data_sid|
779
+ send_data_sid_list.each do |sid, one_send_data_list|
775
780
  sock = socket_list[sid]
776
781
  if !sock
777
782
  logger.info "thread_send_notice_queue:not found sid=#{sid} sock=#{sock.inspect}"
@@ -784,11 +789,11 @@ EOF
784
789
  end
785
790
 
786
791
  begin
787
- logger.debug "thread_send_notice_queue:dango_send_data:sid=#{sid} sock=#{sock.inspect} #{one_send_data_sid.collect{|d| d['notice'] + ','}}"
792
+ logger.debug "thread_send_notice_queue:dango_send_data:sid=#{sid} sock=#{sock.inspect} #{one_send_data_list.collect{|d| d['notice'] + ','}}"
788
793
 
789
- # logger.debug one_send_data_sid.pretty_inspect
794
+ # logger.debug one_send_data_list.pretty_inspect
790
795
 
791
- dango_send_data(sock, one_send_data_sid, :type=>send_data_dtype_list[sid]) # データ送信
796
+ dango_send_data(sock, one_send_data_list, :type=>send_data_dtype_list[sid]) # データ送信
792
797
 
793
798
  rescue DangoFrameworkConnectionError
794
799
  logger.info "thread_send_notice_queue:failed send. sid=#{sid} sock=#{sock.inspect} #{$!.class}"
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 = 2
5
- TINY = 4
5
+ TINY = 5
6
6
 
7
7
  STRING = [MAJOR, MINOR, TINY].join('.')
8
8
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dango
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.4
4
+ version: 0.2.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Keisuke Minami
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2008-05-19 00:00:00 +09:00
12
+ date: 2008-05-26 00:00:00 +09:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency