dango 0.0.25 → 0.0.26

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.
@@ -12,20 +12,20 @@ class DangoClientFramework
12
12
 
13
13
  SendReceiveSleepIntervalSec = 0.1 # データ送信後の順の際のタイムアウトチェック間隔秒
14
14
 
15
- # cs_client_send_receive_data用の共有メモリ
16
- def send_receive_shared_init
17
- @send_receive_shared = SharedMemoryStore.new
15
+ # send_action_return_notice用の共有メモリ
16
+ def send_return_shared_init
17
+ @send_return_shared = SharedMemoryStore.new
18
18
  end
19
- def send_receive_shared
20
- @send_receive_shared
19
+ def send_return_shared
20
+ @send_return_shared
21
21
  end
22
22
 
23
23
  # 起動処理
24
- def cs_client_init
24
+ def dango_client_init
25
25
  end
26
26
 
27
27
  # セッションが切れると呼ばれる処理
28
- def cs_session_closed
28
+ def dango_session_closed
29
29
  end
30
30
 
31
31
  # メイン処理
@@ -54,20 +54,20 @@ class DangoClientFramework
54
54
  exit!
55
55
  end
56
56
 
57
- cs_client_init() # 初期設定読み込み
57
+ dango_client_init() # 初期設定読み込み
58
58
 
59
59
  @log_file = @connection_client_log_file
60
60
  @log_level = @connection_client_log_level
61
61
 
62
62
  # loggerの準備
63
- cs_logger.debug("-------client initialize")
63
+ logger.debug("-------client initialize")
64
64
 
65
65
  # データ送受信用の共有メモリ初期化
66
- send_receive_shared_init()
66
+ send_return_shared_init()
67
67
  @send_receive_mutex = Mutex.new # 送受信用の排他処理
68
68
 
69
69
  # 通知共有メモリの初期化
70
- cs_client_notice_shared_init()
70
+ dango_client_notice_shared_init()
71
71
 
72
72
  # ソケットの準備
73
73
  @sock = nil
@@ -83,7 +83,7 @@ class DangoClientFramework
83
83
  @sock.binmode
84
84
  @sock.sync = true
85
85
  @tmutex = Mutex.new # sockの排他処理用
86
- cs_logger.debug("addr:#{@sock.addr.inspect}")
86
+ logger.debug("addr:#{@sock.addr.inspect}")
87
87
 
88
88
  @sid = nil # 接続して決まるsidを保持
89
89
 
@@ -99,44 +99,44 @@ class DangoClientFramework
99
99
  loop do
100
100
  begin
101
101
  if @sock
102
- cs_logger.debug "start receive_data #{@sid}"
102
+ logger.debug "start dango_receive_data #{@sid}"
103
103
  ret_obj = nil
104
104
  begin
105
- ret_obj = cs_receive_data(@sock) # データ受信処理
105
+ ret_obj = dango_receive_data(@sock) # データ受信処理
106
106
  rescue DangoFrameworkConnectionError
107
- cs_logger.debug "sock error #{@sid}:#{error_message($!, 'u')}"
107
+ logger.debug "sock error #{@sid}:#{error_message($!, 'u')}"
108
108
  throw(:session_closed)
109
109
  rescue DangoFrameworkError
110
- cs_logger.debug "sock error #{@sid}:#{error_message($!, 'u')}"
110
+ logger.debug "sock error #{@sid}:#{error_message($!, 'u')}"
111
111
  throw(:session_closed)
112
112
  end
113
- cs_logger.debug "finished cs_receive_data:#{ret_obj.inspect} #{@sid}"
113
+ logger.debug "finished dango_receive_data:#{ret_obj.inspect} #{@sid}"
114
114
 
115
115
  if !(ret_obj && ret_obj["notice"])
116
- cs_logger.info "no notice:#{ret_obj["notice"].inspect} #{@sid}"
116
+ logger.info "no notice:#{ret_obj["notice"].inspect} #{@sid}"
117
117
  end
118
118
 
119
119
  # メソッド呼び出し
120
- cs_logger.info "calling method=#{ret_obj["notice"].inspect} #{@sid} #{Time.now_to_s}"
120
+ logger.info "calling method=#{ret_obj["notice"].inspect} #{@sid} #{Time.now_to_s}"
121
121
  begin
122
- __send__("cs_receive_#{ret_obj["notice"]}", ret_obj)
122
+ __send__("dango_receive_#{ret_obj["notice"]}", ret_obj)
123
123
  rescue
124
- cs_logger.error "error in cs_receive_#{ret_obj["notice"]} #{@sid} #{Time.now_to_s}\n#{error_message($!, 'u')}"
124
+ logger.error "error in dango_receive_#{ret_obj["notice"]} #{@sid} #{Time.now_to_s}\n#{error_message($!, 'u')}"
125
125
  ensure
126
126
  # データの受信の送信返し
127
127
  response_notice_name = "_response"
128
128
  send_obj = {"_id" => ret_obj["_id"]}
129
- cs_client_send_data(response_notice_name, send_obj)
130
- cs_logger.debug "response_notice_name=#{response_notice_name.inspect} #{@sid} #{Time.now_to_s}"
129
+ send_action(response_notice_name, send_obj)
130
+ logger.debug "response_notice_name=#{response_notice_name.inspect} #{@sid} #{Time.now_to_s}"
131
131
  end
132
- cs_logger.debug "called method=#{ret_obj["notice"].inspect} #{@sid} #{Time.now_to_s}"
132
+ logger.debug "called method=#{ret_obj["notice"].inspect} #{@sid} #{Time.now_to_s}"
133
133
 
134
134
  else
135
135
  sleep 0.01
136
136
  end
137
137
 
138
138
  rescue Exception
139
- cs_logger.debug "#{@sid}:#{error_message($!, 'u')}"
139
+ logger.debug "#{@sid}:#{error_message($!, 'u')}"
140
140
  end
141
141
  end
142
142
  end
@@ -146,16 +146,16 @@ class DangoClientFramework
146
146
  private :thread_main
147
147
 
148
148
  # 接続直後のsid通知なら
149
- def cs_receive__notice_sid(rec_obj)
149
+ def dango_receive__notice_sid(rec_obj)
150
150
  @sid = rec_obj["_sid"]
151
151
  end
152
152
 
153
153
  # システムからのメッセージ通知なら
154
- def cs_receive__notice_system_message(rec_obj)
154
+ def dango_receive__notice_system_message(rec_obj)
155
155
  end
156
156
 
157
157
  # ユーザーが終了させたい時に呼び出すメソッド(セッションを切る)
158
- def cs_client_close
158
+ def dango_client_close
159
159
  client_quit() # クライアントの終了処理
160
160
  end
161
161
 
@@ -165,13 +165,13 @@ class DangoClientFramework
165
165
  begin
166
166
  @sock.close if @sock
167
167
  rescue
168
- cs_logger.debug "sock close failed. #{$!}"
168
+ logger.debug "sock close failed. #{$!}"
169
169
  end
170
170
  @sock = nil
171
171
 
172
172
  @is_session_closed = true
173
- cs_logger.info "calling cs_session_closed()"
174
- cs_session_closed() # セッションが切れると呼ばれる処理
173
+ logger.info "calling dango_session_closed()"
174
+ dango_session_closed() # セッションが切れると呼ばれる処理
175
175
 
176
176
  @is_close = true
177
177
  end
@@ -179,54 +179,54 @@ class DangoClientFramework
179
179
  private :client_quit
180
180
 
181
181
  # クライアントの暗号化処理
182
- def cs_client_send_encrypt(str) # 継承用
182
+ def dango_client_send_encrypt(str) # 継承用
183
183
  str
184
184
  end
185
- def cs_send_encrypt(str) # フレームワークから呼ばれる部分
186
- cs_client_send_encrypt(str)
185
+ def dango_send_encrypt(str) # フレームワークから呼ばれる部分
186
+ dango_client_send_encrypt(str)
187
187
  end
188
188
 
189
189
  # クライアントの復号化処理
190
- def cs_client_receive_decrypt(str) # 継承用
190
+ def dango_client_receive_decrypt(str) # 継承用
191
191
  str
192
192
  end
193
- def cs_receive_decrypt(str) # フレームワークから呼ばれる部分
194
- cs_client_receive_decrypt(str)
193
+ def dango_receive_decrypt(str) # フレームワークから呼ばれる部分
194
+ dango_client_receive_decrypt(str)
195
195
  end
196
196
 
197
197
  # クライアントからサーバーへのデータ送信
198
- def cs_client_send_data(action_name, send_obj)
199
- cs_logger.debug "cs_client_send_data(#{action_name.inspect}, #{send_obj['_id']}) #{Time.now_to_s}"
198
+ def send_action(action_name, send_obj)
199
+ logger.debug "send_action(#{action_name.inspect}, #{send_obj['_id']}) #{Time.now_to_s}"
200
200
  send_obj_dup = send_obj.dup
201
201
  send_obj_dup["action"] = action_name.to_s
202
- cs_send_data(@sock, send_obj_dup)
202
+ dango_send_data(@sock, send_obj_dup)
203
203
  end
204
204
 
205
205
  # サーバーからクライアントへのデータ送信
206
- # 自動でreturn_nameに対応したcs_receive_メソッドが出来上がるので注意
206
+ # 自動でreturn_nameに対応したdango_receive_メソッドが出来上がるので注意
207
207
  # options = {:return_name=> :timeout => }
208
208
  # return_nameは省略時は、action_nameの頭にreturnを付けたもののシンボルになる
209
209
  # timeoutは省略時は6秒
210
- def cs_client_send_receive_data(action_name, send_obj, options = {})
211
- # cs_logger.debug "cs_client_send_receive_data(#{action_name.inspect})"
212
- # cs_logger.debug "cs_client_send_receive_data(#{action_name.inspect}, #{send_obj.inspect}, #{options.inspect})"
210
+ def send_action_return_notice(action_name, send_obj, options = {})
211
+ # logger.debug "send_action_return_notice(#{action_name.inspect})"
212
+ # logger.debug "send_action_return_notice(#{action_name.inspect}, #{send_obj.inspect}, #{options.inspect})"
213
213
 
214
214
  return_name = options[:return_name] || ("return_" + action_name.to_s).to_sym
215
215
  timeout = options[:timeout] || 6
216
216
 
217
217
  @send_receive_mutex.synchronize do
218
- send_receive_shared[action_name] = nil
218
+ send_return_shared[action_name] = nil
219
219
 
220
220
  receive_thread = nil
221
221
  end_reserved_time = Time.now + timeout
222
222
 
223
223
  # 戻ってきたデータのチェック
224
224
  action_name_sym = (action_name.class == Symbol) ? (":"+action_name.to_s) : ('"'+action_name+'"')
225
- instance_method_name = "cs_receive_#{return_name}"
225
+ instance_method_name = "dango_receive_#{return_name}"
226
226
  expr = <<-EOF
227
227
  def self.#{instance_method_name}(ret_obj)
228
- # cs_logger.debug "ret_obj:" + ret_obj.inspect
229
- send_receive_shared[#{action_name_sym}] = ret_obj
228
+ # logger.debug "ret_obj:" + ret_obj.inspect
229
+ send_return_shared[#{action_name_sym}] = ret_obj
230
230
  end
231
231
  EOF
232
232
  instance_eval expr
@@ -238,26 +238,26 @@ class DangoClientFramework
238
238
  # 送信スレッドが開始していなければ開始
239
239
  if !receive_thread
240
240
  receive_thread = Thread.start(action_name, send_obj) do
241
- cs_client_send_data(action_name, send_obj)
241
+ send_action(action_name, send_obj)
242
242
  end
243
243
  end
244
244
 
245
245
  # 戻ってきたデータがあれば
246
- if send_receive_shared[action_name]
247
- cs_logger.debug "action_name:#{send_receive_shared[action_name].inspect}"
246
+ if send_return_shared[action_name]
247
+ logger.debug "action_name:#{send_return_shared[action_name].inspect}"
248
248
  break
249
249
  end
250
250
 
251
251
  sleep SendReceiveSleepIntervalSec # スリープ
252
252
  end
253
253
 
254
- if !send_receive_shared[action_name] # 戻ってきたデータがあるかどうかチェック
254
+ if !send_return_shared[action_name] # 戻ってきたデータがあるかどうかチェック
255
255
  raise(DangoFrameworkError, "received data is none")
256
256
  end
257
257
 
258
258
  #remove_method(instance_method_name) # 定義したインスタンスメソッドを削除しておく
259
259
 
260
- send_receive_shared[action_name]
260
+ send_return_shared[action_name]
261
261
  end
262
262
  end
263
263
 
@@ -270,15 +270,15 @@ class DangoClientFramework
270
270
  def []=(key, value) # キーに対する書き込み(読み込みはないぞ)
271
271
  action_name = "action_notice_shared_#{key}"
272
272
  send_obj = {:data => value}
273
- @parent.cs_client_send_data(action_name, send_obj)
273
+ @parent.send_action(action_name, send_obj)
274
274
  end
275
275
  end
276
276
 
277
- def cs_client_notice_shared_init # 通知共有メモリの初期化
277
+ def dango_client_notice_shared_init # 通知共有メモリの初期化
278
278
  @client_notice_shared = ClientNoticeShared.new(self)
279
279
  end
280
280
 
281
- def cs_client_notice_shared # 通知共有メモリ
281
+ def dango_client_notice_shared # 通知共有メモリ
282
282
  @client_notice_shared
283
283
  end
284
284
 
@@ -106,33 +106,33 @@ module DangoFrameworkModule
106
106
  # 2 = Marshal
107
107
 
108
108
  # デバッグ出力用のメソッド
109
- def cs_debug_print(str)
110
- cs_logger.debug str
109
+ def debug_print(str)
110
+ logger.debug str
111
111
  puts str if $VERBOSE
112
112
  end
113
113
 
114
114
  # ロガーの定義
115
- def cs_logger
116
- # if !@cs_logger # これだと警告が出てうざいので
117
- if !self.instance_variables.find{|iv| iv == '@cs_logger'} # @cs_loggerが未定義なら
115
+ def logger
116
+ # if !@logger # これだと警告が出てうざいので
117
+ if !self.instance_variables.find{|iv| iv == '@logger'} # @loggerが未定義なら
118
118
  if @log_file != ""
119
119
  log_dir = File.dirname(@log_file)
120
120
  Dir.mkdir(log_dir) if !File.exist?(log_dir)
121
- @cs_logger = Logger.new(@log_file)
122
- @cs_logger.level = @log_level
123
- @cs_logger.datetime_format = "%Y-%m-%dT%H:%M:%S"
124
- # @cs_logger.datetime_format = "aaaaa"
125
- @cs_logger.progname = "toid=#{Thread.current.object_id}"
121
+ @logger = Logger.new(@log_file)
122
+ @logger.level = @log_level
123
+ @logger.datetime_format = "%Y-%m-%dT%H:%M:%S"
124
+ # @logger.datetime_format = "aaaaa"
125
+ @logger.progname = "toid=#{Thread.current.object_id}"
126
126
  end
127
127
  end
128
- @cs_logger
128
+ @logger
129
129
  end
130
130
 
131
131
  # データ受信処理
132
- def cs_receive_data(sock)
132
+ def dango_receive_data(sock)
133
133
  ret_data = ""
134
134
 
135
- # cs_logger.debug "receive_data(#{sock})"
135
+ # logger.debug "dango_receive_data(#{sock})"
136
136
 
137
137
  begin
138
138
  # size_str = sock.readpartial(CommMaxDigit + 1)
@@ -152,9 +152,9 @@ module DangoFrameworkModule
152
152
 
153
153
  ## Flash のpolicyファイルだった場合(特殊)
154
154
  if size_str == "<polic"
155
- cs_logger.debug "size_str=#{size_str.inspect}"
155
+ logger.debug "size_str=#{size_str.inspect}"
156
156
  receive_data = sock.recv(18)
157
- cs_logger.debug "receive_data=#{receive_data}"
157
+ logger.debug "dango_receive_data:receive_data=#{receive_data}"
158
158
  raise(DangoFrameworkFlashPolicyError)
159
159
  end
160
160
 
@@ -171,7 +171,7 @@ module DangoFrameworkModule
171
171
  raise(DangoFrameworkConnectionError, "too big... size=#{size}:size_str=#{size_str.inspect}")
172
172
  end
173
173
 
174
- # cs_logger.debug "size=#{size}:size_str=#{size_str.inspect}"
174
+ # logger.debug "size=#{size}:size_str=#{size_str.inspect}"
175
175
 
176
176
  ret_data_orig = ""
177
177
 
@@ -186,16 +186,16 @@ module DangoFrameworkModule
186
186
  end
187
187
 
188
188
  ret_data_orig += this_ret_data_orig
189
- # cs_logger.debug "size:#{size.inspect}:this_ret_data_orig:#{this_ret_data_orig.inspect}"
189
+ # logger.debug "size:#{size.inspect}:this_ret_data_orig:#{this_ret_data_orig.inspect}"
190
190
 
191
191
  size -= this_ret_data_orig.size
192
- # cs_logger.debug "size:#{size.inspect}"
192
+ # logger.debug "size:#{size.inspect}"
193
193
  end
194
194
 
195
- # cs_logger.debug "ret_data_orig:#{ret_data_orig.inspect}"
195
+ # logger.debug "ret_data_orig:#{ret_data_orig.inspect}"
196
196
 
197
- ret_data = cs_receive_decrypt(ret_data_orig[0..-2])
198
- # cs_logger.debug "ret_data:#{ret_data.inspect}"
197
+ ret_data = dango_receive_decrypt(ret_data_orig[0..-2])
198
+ # logger.debug "ret_data:#{ret_data.inspect}"
199
199
 
200
200
  @recv_count += 1 if @recv_count # 受信回数カウント
201
201
 
@@ -215,8 +215,8 @@ module DangoFrameworkModule
215
215
  end
216
216
 
217
217
  # データ送信処理
218
- def cs_send_data(sock, send_obj, options = {})
219
- # cs_logger.debug "cs_send_data:send_obj=#{send_obj.inspect}"
218
+ def dango_send_data(sock, send_obj, options = {})
219
+ # logger.debug "dango_send_data:send_obj=#{send_obj.inspect}"
220
220
 
221
221
  dtype = options[:type] || DefaultDataType
222
222
 
@@ -230,11 +230,11 @@ module DangoFrameworkModule
230
230
  send_data_orig = Marshal.dump(send_obj)
231
231
  end
232
232
 
233
- send_data = cs_send_encrypt(send_data_orig) + "\n"
234
- # send_data = cs_send_encrypt(send_data_orig) + "\r\n"
235
- # send_data = cs_send_encrypt(send_data_orig) + "\015\012"
233
+ send_data = dango_send_encrypt(send_data_orig) + "\n"
234
+ # send_data = dango_send_encrypt(send_data_orig) + "\r\n"
235
+ # send_data = dango_send_encrypt(send_data_orig) + "\015\012"
236
236
 
237
- # cs_logger.debug "start send_data:#{send_data.inspect}"
237
+ # logger.debug "start dango_send_data:#{send_data.inspect}"
238
238
 
239
239
  size = send_data.size
240
240
 
@@ -246,10 +246,10 @@ module DangoFrameworkModule
246
246
  # size_str = sprintf("%0#{CommMaxDigit}d", size)
247
247
 
248
248
  size_str = [dtype, size].pack("cN")
249
- # cs_logger.debug "size=#{size}:size_str=#{size_str.inspect}"
249
+ # logger.debug "size=#{size}:size_str=#{size_str.inspect}"
250
250
 
251
251
  send_buf = size_str + "\n" + send_data
252
- # cs_logger.debug "send_buf:#{send_buf.inspect}"
252
+ # logger.debug "send_buf:#{send_buf.inspect}"
253
253
 
254
254
  begin
255
255
  sock.write send_buf
@@ -263,8 +263,8 @@ module DangoFrameworkModule
263
263
  end
264
264
 
265
265
  @send_count += 1 if @send_count # 受信回数カウント
266
- # cs_logger.debug "finish send_data:#{send_data.inspect}"
267
- # cs_logger.debug "finish send_data:#{Time.now_to_s}:toid=#{Thread.current.object_id} #{sock} #{sock.closed?}"
266
+ # logger.debug "finish dango_send_data:#{send_data.inspect}"
267
+ # logger.debug "finish dango_send_data:#{Time.now_to_s}:toid=#{Thread.current.object_id} #{sock} #{sock.closed?}"
268
268
 
269
269
  sock
270
270
  end
@@ -25,7 +25,7 @@ class DangoMonitorClient < DangoClientFramework
25
25
  public
26
26
 
27
27
  # 起動処理
28
- def cs_client_init
28
+ def dango_client_init
29
29
  # ログ出力情報
30
30
  @connection_client_log_file = "#{RAILS_ROOT}/log/dango_monitor_#{@env}.log"
31
31
  @connection_client_log_level = Logger::DEBUG
@@ -37,44 +37,50 @@ class DangoMonitorClient < DangoClientFramework
37
37
 
38
38
  # サーバーの全情報取得
39
39
  def get_all_info
40
- cs_logger.debug "DangoMonitorClient:get_all_info:#{ENV['RAILS_ROOT']}"
40
+ logger.debug "DangoMonitorClient:get_all_info:#{ENV['RAILS_ROOT']}"
41
41
  begin
42
- ret_obj = cs_client_send_receive_data('_monitor_all_info', {})
42
+ ret_obj = send_action_return_notice('_monitor_all_info', {})
43
+ raise("code is not 0 (faild). :code=#{ret_obj['code']}") if ret_obj['code'] != 0
44
+ return(ret_obj['all_info'])
43
45
  rescue DangoFrameworkConnectionError
44
46
  raise("monitor_all_info Connection error")
45
47
  rescue DangoFrameworkTimeoutError
46
48
  raise("monitor_all_info Timeout error")
49
+ ensure
50
+ dango_client_close
47
51
  end
48
- raise("code is not 0 (faild). :code=#{ret_obj['code']}") if ret_obj['code'] != 0
49
- ret_obj['all_info']
50
52
  end
51
53
 
52
54
  # サーバーのデータリロード
53
55
  def server_reload
54
- cs_logger.debug "DangoMonitorClient:server_reload"
56
+ logger.debug "DangoMonitorClient:server_reload"
55
57
  begin
56
- ret_obj = cs_client_send_receive_data('_monitor_server_reload', {})
58
+ ret_obj = send_action_return_notice('_monitor_server_reload', {})
59
+ raise("code is not 0 (faild). :code=#{ret_obj['code']}") if ret_obj['code'] != 0
60
+ return(true)
57
61
  rescue DangoFrameworkConnectionError
58
62
  raise("monitor_server_reload Connection error")
59
63
  rescue DangoFrameworkTimeoutError
60
64
  raise("monitor_server_reload Timeout error")
65
+ ensure
66
+ dango_client_close
61
67
  end
62
- raise("code is not 0 (faild). :code=#{ret_obj['code']}") if ret_obj['code'] != 0
63
- true
64
68
  end
65
69
 
66
70
  # システムメッセージの送信
67
71
  def send_system_message(message = "")
68
- cs_logger.debug "DangoMonitorClient:send_system_message"
72
+ logger.debug "DangoMonitorClient:send_system_message"
69
73
  begin
70
- ret_obj = cs_client_send_receive_data('_monitor_send_system_message', {:message=>message})
74
+ ret_obj = send_action_return_notice('_monitor_send_system_message', {:message=>message})
75
+ raise("code is not 0 (faild). :code=#{ret_obj['code']}") if ret_obj['code'] != 0
76
+ return(true)
71
77
  rescue DangoFrameworkConnectionError
72
78
  raise("monitor_send_system_message Connection error")
73
79
  rescue DangoFrameworkTimeoutError
74
80
  raise("monitor_send_system_message Timeout error")
81
+ ensure
82
+ dango_client_close
75
83
  end
76
- raise("code is not 0 (faild). :code=#{ret_obj['code']}") if ret_obj['code'] != 0
77
- true
78
84
  end
79
85
  end
80
86
 
@@ -12,7 +12,7 @@ class ServerMonitorAction
12
12
  @parent = parent
13
13
  @config = config
14
14
 
15
- @cs_logger = @parent.cs_logger
15
+ @logger = @parent.logger
16
16
  @shared = @parent.shared
17
17
  @session = @parent.session
18
18
  @socket_list = @parent.socket_list
@@ -21,30 +21,30 @@ class ServerMonitorAction
21
21
  # アクション名
22
22
  action_name = ret_obj["action"].to_s
23
23
 
24
- cs_check_monitor_error(sock, action_name)
24
+ dango_check_monitor_error(sock, action_name)
25
25
 
26
26
  if action_name == '_monitor_all_info' # メンテナンスアクション名なら
27
- cs_server_monitor_all_info(ret_obj)
27
+ dango_server_monitor_all_info(ret_obj)
28
28
 
29
29
  elsif action_name == '_monitor_server_reload' # メンテナンスアクション名なら
30
- cs_server_monitor_server_reload(ret_obj)
30
+ dango_server_monitor_server_reload(ret_obj)
31
31
 
32
32
  elsif action_name == '_monitor_send_system_message' # メンテナンスアクション名なら
33
- cs_server_monitor_send_system_message(ret_obj)
33
+ dango_server_monitor_send_system_message(ret_obj)
34
34
 
35
35
  else
36
36
  end
37
37
  end
38
38
 
39
- attr_reader(:cs_logger, :shared, :session, :socket_list, :session_list)
39
+ attr_reader(:logger, :shared, :session, :socket_list, :session_list)
40
40
 
41
41
  private
42
42
 
43
43
  # メンテナンスコマンド:エラーの場合
44
- def cs_check_monitor_error(sock, action_name)
44
+ def dango_check_monitor_error(sock, action_name)
45
45
  peerhost, peeraddr = sock.peeraddr[2, 2]
46
46
  backdoor_host = @config['server']['backdoor_host']
47
- cs_logger.debug "cs_check_monitor_error:peerhost=#{peerhost.inspect} peeraddr=#{peeraddr.inspect} backdoor_host=#{backdoor_host.inspect}"
47
+ logger.debug "dango_check_monitor_error:peerhost=#{peerhost.inspect} peeraddr=#{peeraddr.inspect} backdoor_host=#{backdoor_host.inspect}"
48
48
 
49
49
  match = false
50
50
  if peerhost == backdoor_host # ホスト名で書いてある時の一致確認
@@ -62,14 +62,14 @@ class ServerMonitorAction
62
62
  if !match
63
63
  notice_name = "return_" + action_name
64
64
  send_obj = {'code'=>1, 'message'=>"error your ip address"}
65
- @parent.cs_server_send_data(session[:sid], notice_name, send_obj, :type=>2)
65
+ @parent.send_notice(session[:sid], notice_name, send_obj, :type=>2)
66
66
  raise(DangoFrameworkMonitorSecurityError)
67
67
  end
68
68
  end
69
69
 
70
70
  # メンテナンスコマンド:サーバーからクライアントへのデータ送信
71
- def cs_server_monitor_all_info(ret_obj)
72
- cs_logger.debug "cs_server_monitor_all_info:#{ret_obj.inspect}"
71
+ def dango_server_monitor_all_info(ret_obj)
72
+ logger.debug "dango_server_monitor_all_info:#{ret_obj.inspect}"
73
73
  all_info = {
74
74
  'shareds' => shared.to_hash,
75
75
  'socket_list' => socket_list.keys,
@@ -86,31 +86,31 @@ class ServerMonitorAction
86
86
  }
87
87
 
88
88
  send_obj = {'code'=>0, 'all_info'=>all_info}
89
- @parent.cs_server_send_data(session[:sid], 'return__monitor_all_info', send_obj, :type=>2)
89
+ @parent.send_notice(session[:sid], 'return__monitor_all_info', send_obj, :type=>2)
90
90
  end
91
91
 
92
92
  # メンテナンスコマンド:サーバーデータ再読み込み
93
- def cs_server_monitor_server_reload(ret_obj)
94
- cs_logger.debug "cs_server_monitor_server_reload"
93
+ def dango_server_monitor_server_reload(ret_obj)
94
+ logger.debug "dango_server_monitor_server_reload"
95
95
  @server_reload = true
96
- cs_logger.debug "@server_reload=#{@server_reload.inspect}"
96
+ logger.debug "@server_reload=#{@server_reload.inspect}"
97
97
  send_obj = {'code'=>0, 'message'=>'success'}
98
- @parent.cs_server_send_data(session[:sid], 'return__monitor_server_reload', send_obj, :type=>2)
98
+ @parent.send_notice(session[:sid], 'return__monitor_server_reload', send_obj, :type=>2)
99
99
  end
100
100
 
101
101
  # メンテナンスコマンド:接続者全員へメッセージ送信
102
- def cs_server_monitor_send_system_message(ret_obj)
103
- cs_logger.debug "cs_server_monitor_send_system_message:#{ret_obj.inspect}"
102
+ def dango_server_monitor_send_system_message(ret_obj)
103
+ logger.debug "dango_server_monitor_send_system_message:#{ret_obj.inspect}"
104
104
 
105
105
  # 全員へ_notice_system_messageを通知
106
106
  socket_list.keys.each do |sid|
107
107
  next if session[:sid] == sid
108
108
  send_obj = { "message" => ret_obj["message"] }
109
- @parent.cs_server_send_data(sid, '_notice_system_message', send_obj)
109
+ @parent.send_notice(sid, '_notice_system_message', send_obj)
110
110
  end
111
111
 
112
112
  send_obj = {'code'=>0, }
113
- @parent.cs_server_send_data(session[:sid], 'return__monitor_send_system_message', send_obj, :type=>2)
113
+ @parent.send_notice(session[:sid], 'return__monitor_send_system_message', send_obj, :type=>2)
114
114
  end
115
115
 
116
116
  end
@@ -81,12 +81,12 @@ class DangoServerFramework
81
81
  def server_start()
82
82
  set_server_variables() # 各種サーバー仕様の変数設定
83
83
 
84
- cs_logger.debug("===== server initialize =====") # loggerの準備
85
- cs_logger.debug("#{Time.now_to_s}")
86
- cs_logger.debug("Process.pid=#{Process.pid}")
87
- cs_logger.debug("port=#{@connection_server_port}")
88
- cs_logger.debug("host=#{@connection_server_host}")
89
- cs_logger.debug("max_connections=#{@connection_server_max_connections}")
84
+ logger.debug("===== server initialize =====") # loggerの準備
85
+ logger.debug("#{Time.now_to_s}")
86
+ logger.debug("Process.pid=#{Process.pid}")
87
+ logger.debug("port=#{@connection_server_port}")
88
+ logger.debug("host=#{@connection_server_host}")
89
+ logger.debug("max_connections=#{@connection_server_max_connections}")
90
90
 
91
91
  open("tmp/pids/dango.pid", "wb"){|fh| fh.write Process.pid.to_s }
92
92
 
@@ -96,7 +96,7 @@ class DangoServerFramework
96
96
  socket_list_init() # ソケット一覧を初期化
97
97
  mutex_socket_list_init() # ソケット毎用のmutexを初期化
98
98
  @mutex_proc_thread = Mutex.new # スレッドが同時起動しないようにするためのMutex
99
- cs_server_init() # 初期設定読み込み
99
+ dango_server_init() # 初期設定読み込み
100
100
  heart_beat_thread_start() # ハートビートスレッドの開始
101
101
 
102
102
  @mutex_send_response = Mutex.new # 送信レスポンス用のMutex
@@ -111,7 +111,7 @@ class DangoServerFramework
111
111
  @gserver.start
112
112
  rescue Exception
113
113
  error_msg = "#{$!.class} #{$!.message} #{$!.backtrace.pretty_inspect}"
114
- cs_logger.error error_msg
114
+ logger.error error_msg
115
115
  puts error_msg
116
116
  end
117
117
  end
@@ -125,9 +125,9 @@ class DangoServerFramework
125
125
  puts "-- stopping server"
126
126
 
127
127
  # 強制的に接続しているsocketをクローズ
128
- cs_logger.debug "socket_list.keys:#{socket_list.keys.inspect}"
128
+ logger.debug "socket_list.keys:#{socket_list.keys.inspect}"
129
129
  socket_list.keys.each do |sk|
130
- cs_logger.debug "sk:#{socket_list[sk].inspect}"
130
+ logger.debug "sk:#{socket_list[sk].inspect}"
131
131
  socket_list[sk].close if ! socket_list[sk].closed?
132
132
  socket_list[sk]
133
133
  end
@@ -138,7 +138,7 @@ class DangoServerFramework
138
138
  while(!@gserver.stopped?) do
139
139
  sleep 1
140
140
  puts "waiting... #{@gserver.stopped?}"
141
- cs_logger.debug "waiting... #{@gserver.stopped?} #{@gserver.connections}"
141
+ logger.debug "waiting... #{@gserver.stopped?} #{@gserver.connections}"
142
142
  end
143
143
 
144
144
  @gserver = nil
@@ -177,26 +177,26 @@ class DangoServerFramework
177
177
  server_start() # サーバー開始
178
178
  end
179
179
  rescue Exception
180
- cs_logger.error "#{$!.class}:#{$!.message}\n#{$!.backtrace.pretty_inspect}"
180
+ logger.error "#{$!.class}:#{$!.message}\n#{$!.backtrace.pretty_inspect}"
181
181
  end
182
182
  end
183
183
 
184
184
  # gserver接続開始処理
185
185
  def connecting(sock)
186
- cs_logger.debug "connecting:sock=#{sock} peeraddr=#{sock.peeraddr.inspect} addr=#{sock.addr.inspect}"
187
- # cs_logger.debug "getpeername=#{Socket.unpack_sockaddr_in(sock.getpeername).inspect} getsockname=#{Socket.unpack_sockaddr_in(sock.getsockname).inspect}"
186
+ logger.debug "connecting:sock=#{sock} peeraddr=#{sock.peeraddr.inspect} addr=#{sock.addr.inspect}"
187
+ # logger.debug "getpeername=#{Socket.unpack_sockaddr_in(sock.getpeername).inspect} getsockname=#{Socket.unpack_sockaddr_in(sock.getsockname).inspect}"
188
188
  end
189
189
 
190
190
  # gserver接続開始処理
191
191
  def disconnecting(port)
192
- cs_logger.debug "disconnecting:port=#{port} #{Time.now_to_s}"
192
+ logger.debug "disconnecting:port=#{port} #{Time.now_to_s}"
193
193
  end
194
194
 
195
195
  # gserverのserveメソッド:スレッド開始処理
196
196
  def thread_main(sock)
197
- cs_logger.debug "thread_main:start"
198
- # cs_logger.debug "#{sock} is accepted. thread.current=#{Thread.current.object_id} sock_id=#{sock.object_id}"
199
- cs_logger.debug "#{sock} is accepted. thread.current=#{Thread.current.object_id}"
197
+ logger.debug "thread_main:start"
198
+ # logger.debug "#{sock} is accepted. thread.current=#{Thread.current.object_id} sock_id=#{sock.object_id}"
199
+ logger.debug "#{sock} is accepted. thread.current=#{Thread.current.object_id}"
200
200
 
201
201
  begin
202
202
  sock.binmode
@@ -208,12 +208,12 @@ class DangoServerFramework
208
208
  socket_list.add(sid, sock)
209
209
  mutex_socket_list.add(sid)
210
210
 
211
- cs_connect() # 接続時メソッド呼び出し
211
+ dango_connect() # 接続時メソッド呼び出し
212
212
 
213
213
  # 接続直後のsid通知
214
214
  send_obj = {"_sid"=>sid}
215
- cs_server_send_data(sid, "_notice_sid", send_obj)
216
- cs_logger.debug "_notice_sid #{sid} #{Time.now_to_s}"
215
+ send_notice(sid, "_notice_sid", send_obj)
216
+ logger.debug "_notice_sid #{sid} #{Time.now_to_s}"
217
217
 
218
218
  # 誰かが接続したときに60秒以上経った@arr_send_responseを削除
219
219
  @mutex_send_response.synchronize do
@@ -223,33 +223,33 @@ class DangoServerFramework
223
223
  # メインループ入り
224
224
  loop do
225
225
  if sock.closed?
226
- cs_logger.debug "#{sock.inspect}:sock is closed..."
226
+ logger.debug "#{sock.inspect}:sock is closed..."
227
227
  break
228
228
  end
229
229
 
230
230
  ret_obj = nil
231
231
  begin
232
- ret_obj = cs_receive_data(sock) # データ受信処理
232
+ ret_obj = dango_receive_data(sock) # データ受信処理
233
233
  is_flash_policy_file = false
234
234
  rescue DangoFrameworkFlashPolicyError
235
235
  is_flash_policy_file = true
236
236
  end
237
237
 
238
238
  if is_flash_policy_file && @policy_file_request # Flashのポリシーファイルが来たら
239
- cs_logger.debug "is_flash_policy_file #{sid} #{Time.now_to_s}"
239
+ logger.debug "is_flash_policy_file #{sid} #{Time.now_to_s}"
240
240
  policy_data = '<?xml version="1.0"?><cross-domain-policy><allow-access-from domain="*" to-ports="*" /></cross-domain-policy>' + "\0" + "\n"
241
- cs_logger.debug policy_data
241
+ logger.debug policy_data
242
242
  sock.write policy_data
243
243
  sock.flush
244
244
  sleep 1
245
245
  raise(DangoFrameworkFlashPolicyError, "policy file sent. disconnectiong...")
246
246
 
247
247
  elsif ret_obj == {} # 受信データがなければ
248
- # cs_logger.debug "ret_obj is empty. #{Time.now_to_s}"
248
+ # logger.debug "ret_obj is empty. #{Time.now_to_s}"
249
249
 
250
250
  else # 受信データがあれば
251
251
  if !(ret_obj && ret_obj["action"]) # actionが無い場合はエラー
252
- cs_logger.error "no action error:#{ret_obj.inspect}"
252
+ logger.error "no action error:#{ret_obj.inspect}"
253
253
  raise(DangoFrameworkError, "no action error")
254
254
  end
255
255
 
@@ -259,19 +259,19 @@ class DangoServerFramework
259
259
  @mutex_proc_thread.synchronize do
260
260
 
261
261
  if action_name == '_response' # 送信パケットの返事なら
262
- # cs_logger.debug "action_name=#{action_name} #{Time.now_to_s}"
262
+ # logger.debug "action_name=#{action_name} #{Time.now_to_s}"
263
263
  action_name_is_response(ret_obj)
264
264
 
265
265
  elsif action_name[0, 9] == '_monitor_' # メンテナンスアクション名なら
266
266
  ServerMonitorAction.new(self, @config, sock, ret_obj)
267
267
 
268
268
  else # メンテナンスコマンド以外のユーザーアクション名なら
269
- cs_logger.debug "action_name=#{action_name} #{sid} #{Time.now_to_s}"
269
+ logger.debug "action_name=#{action_name} #{sid} #{Time.now_to_s}"
270
270
  begin
271
- __send__("cs_receive_#{action_name}", ret_obj)
271
+ __send__("dango_receive_#{action_name}", ret_obj)
272
272
  rescue NoMethodError
273
273
  @recv_fail_count += 1 if @recv_fail_count # 受信失敗回数カウント
274
- cs_logger.error "not find action #{action_name}:#{sid}:#{error_message($!, 'u')}"
274
+ logger.error "not find action #{action_name}:#{sid}:#{error_message($!, 'u')}"
275
275
  end
276
276
  end
277
277
 
@@ -281,41 +281,41 @@ class DangoServerFramework
281
281
  end # loop
282
282
 
283
283
  rescue DangoFrameworkFlashPolicyError
284
- cs_logger.debug "Flash policy file send. #{sid} #{Time.now_to_s}"
284
+ logger.debug "Flash policy file send. #{sid} #{Time.now_to_s}"
285
285
 
286
286
  rescue DangoFrameworkMonitorSecurityError
287
- cs_logger.debug "Monitor Security Error #{sid} #{Time.now_to_s}"
287
+ logger.debug "Monitor Security Error #{sid} #{Time.now_to_s}"
288
288
 
289
289
  rescue DangoFrameworkReadNoDataError
290
- cs_logger.debug "read no data. maybe client closed. #{sid} #{Time.now_to_s}"
290
+ logger.debug "read no data. maybe client closed. #{sid} #{Time.now_to_s}"
291
291
 
292
292
  rescue DangoFrameworkConnectionError
293
293
  @recv_fail_count += 1 if @recv_fail_count # 受信失敗回数カウント
294
- cs_logger.debug "connection error. #{sid} #{Time.now_to_s}\n#{error_message($!, 'u')}"
294
+ logger.debug "connection error. #{sid} #{Time.now_to_s}\n#{error_message($!, 'u')}"
295
295
 
296
296
  rescue DangoFrameworkError
297
- cs_logger.debug "DangoFrameworkError. #{sid} #{Time.now_to_s}\n#{error_message($!, 'u')}"
297
+ logger.debug "DangoFrameworkError. #{sid} #{Time.now_to_s}\n#{error_message($!, 'u')}"
298
298
 
299
299
  rescue Exception
300
- cs_logger.error "Exception #{sid} #{Time.now_to_s} #{error_message($!, 'u')}"
300
+ logger.error "Exception #{sid} #{Time.now_to_s} #{error_message($!, 'u')}"
301
301
 
302
302
  ensure
303
- cs_logger.debug "#{sock.inspect} #{sid} is gone"
303
+ logger.debug "#{sock.inspect} #{sid} is gone"
304
304
 
305
305
  @mutex_proc_thread.synchronize do
306
306
  begin
307
- cs_close() # 接続解除時に呼び出されるメソッド
307
+ dango_close() # 接続解除時に呼び出されるメソッド
308
308
  rescue Exception
309
- cs_logger.error "#{error_message($!, 'u')}"
309
+ logger.error "#{sock.inspect} #{sid} ERROR\n#{error_message($!, 'u')}"
310
310
  ensure
311
311
  socket_list.delete(sid) # ソケットリストから削除
312
312
  begin
313
313
  sock.close if !sock.closed? # ソケットを閉じる
314
314
  rescue IOError
315
- cs_logger.debug "IOError #{sock} #{sid}"
315
+ logger.debug "IOError #{sock} #{sid}"
316
316
  end
317
317
 
318
- cs_logger.debug "#{sock.inspect} #{sid} is gone 2"
318
+ logger.debug "#{sock.inspect} #{sid} is gone 2"
319
319
  end
320
320
 
321
321
  end
@@ -326,7 +326,7 @@ class DangoServerFramework
326
326
 
327
327
  # action_nameが送信パケットの返事なら
328
328
  def action_name_is_response(ret_obj)
329
- # cs_logger.warn "action_name_is_response:#{ret_obj['_id']} #{session[:sid]} #{Time.now_to_s}"
329
+ # logger.warn "action_name_is_response:#{ret_obj['_id']} #{session[:sid]} #{Time.now_to_s}"
330
330
  @mutex_send_response.synchronize do
331
331
  @arr_send_response.push({:_id => ret_obj["_id"], :time => Time.now})
332
332
  end
@@ -372,7 +372,7 @@ class DangoServerFramework
372
372
 
373
373
  attr_reader(:start_time, :recv_count, :send_count, :recv_fail_count, :send_fail_count)
374
374
 
375
- def cs_server_init # 初期設定
375
+ def dango_server_init # 初期設定
376
376
  end
377
377
 
378
378
  # コンフィグのshared_database_managerによる使用クラスの選択
@@ -449,10 +449,10 @@ class DangoServerFramework
449
449
 
450
450
  self[key] = value
451
451
 
452
- @parent.cs_logger.debug "self.get_connectables(key):#{self.get_connectables(key).inspect}"
452
+ @parent.logger.debug "self.get_connectables(key):#{self.get_connectables(key).inspect}"
453
453
 
454
454
  self.get_connectables(key).each do |sid|
455
- @parent.cs_server_send_data(sid, "notice_shared_#{key}".to_sym, value)
455
+ @parent.send_notice(sid, "notice_shared_#{key}".to_sym, value)
456
456
  end
457
457
  end
458
458
 
@@ -508,26 +508,28 @@ class DangoServerFramework
508
508
  attr_accessor(:mutex_socket_list)
509
509
 
510
510
  # 接続時に呼び出されるメソッド
511
- def cs_connect; end
511
+ def dango_connect
512
+ end
512
513
 
513
514
  # 接続解除時に呼び出されるメソッド
514
- def cs_close; end
515
+ def dango_close
516
+ end
515
517
 
516
518
 
517
519
  # サーバーの暗号化処理
518
- def cs_server_send_encrypt(str) # 継承用
520
+ def dango_server_send_encrypt(str) # 継承用
519
521
  str
520
522
  end
521
- def cs_send_encrypt(str) # フレームワークから呼ばれる部分
522
- cs_server_send_encrypt(str)
523
+ def dango_send_encrypt(str) # フレームワークから呼ばれる部分
524
+ dango_server_send_encrypt(str)
523
525
  end
524
526
 
525
527
  # サーバーの復号化処理
526
- def cs_server_receive_decrypt(str) # 継承用
528
+ def dango_server_receive_decrypt(str) # 継承用
527
529
  str
528
530
  end
529
- def cs_receive_decrypt(str) # フレームワークから呼ばれる部分
530
- cs_server_receive_decrypt(str)
531
+ def dango_receive_decrypt(str) # フレームワークから呼ばれる部分
532
+ dango_server_receive_decrypt(str)
531
533
  end
532
534
 
533
535
  # ハートビートスレッドの開始
@@ -538,29 +540,29 @@ class DangoServerFramework
538
540
  sleep @herat_beat_interval_sec
539
541
 
540
542
  if ! @gserver.stopped? # gserverが起動していれば
541
- cs_logger.debug "heart_beat_thread_start #{Time.now_to_s}"
543
+ logger.debug "heart_beat_thread_start #{Time.now_to_s}"
542
544
 
543
545
  # 全員へheart_beatパケットを送信
544
546
  socket_list.keys.each do |sid|
545
547
  # sock = socket_list[sid]
546
- # cs_logger.debug "heart_beat_thread_start:sid=#{sid} #{sock} #{sock.closed?}"
547
- # cs_send_data(sock, {})
548
- cs_logger.debug "heart_beat_thread_start:sid=#{sid}"
549
- cs_server_send_data(sid, "_heart_beat", {}, {:timeout=>@heart_beat_response_wait_sec})
548
+ # logger.debug "heart_beat_thread_start:sid=#{sid} #{sock} #{sock.closed?}"
549
+ # dango_send_data(sock, {})
550
+ logger.debug "heart_beat_thread_start:sid=#{sid}"
551
+ send_notice(sid, "_heart_beat", {}, {:timeout=>@heart_beat_response_wait_sec})
550
552
  end
551
553
  end
552
554
 
553
555
  rescue
554
- cs_logger.error "Exception heart_beat_thread_start #{Time.now_to_s} #{error_message($!, 'u')}"
556
+ logger.error "Exception heart_beat_thread_start #{Time.now_to_s} #{error_message($!, 'u')}"
555
557
  end
556
558
  end
557
559
  end
558
560
  end
559
561
 
560
562
  # サーバーからクライアントへのデータ送信
561
- def cs_server_send_data(sid, notice_name, send_obj, options = {})
562
- cs_logger.debug "cs_server_send_data(#{sid.inspect}, #{notice_name.inspect}) #{Time.now_to_s}"
563
- # cs_logger.debug "cs_server_send_data(#{sid.inspect}, #{notice_name.inspect}, #{send_obj.inspect}, #{options.inspect})"
563
+ def send_notice(sid, notice_name, send_obj, options = {})
564
+ logger.debug "send_notice(#{sid.inspect}, #{notice_name.inspect}) #{Time.now_to_s}"
565
+ # logger.debug "send_notice(#{sid.inspect}, #{notice_name.inspect}, #{send_obj.inspect}, #{options.inspect})"
564
566
 
565
567
  raise(DangoFrameworkError, "send_obj is not Hash.") if ! send_obj.is_a?(Hash)
566
568
 
@@ -569,8 +571,8 @@ class DangoServerFramework
569
571
 
570
572
  sock = socket_list[sid]
571
573
  if !sock || sock.closed? # sockがないという事はすでに切断済み
572
- cs_logger.info "cs_server_send_data:already closed socket. sid=#{sid.inspect} sock=#{sock.inspect} #{Time.now_to_s}"
573
- return
574
+ logger.info "send_notice:already closed socket. sid=#{sid.inspect} sock=#{sock.inspect} #{Time.now_to_s}"
575
+ return(self)
574
576
  end
575
577
 
576
578
  # sidの通知の場合はレスポンスを気にしない
@@ -581,8 +583,8 @@ class DangoServerFramework
581
583
  send_obj_dup = send_obj.deep_dup
582
584
  send_obj_dup["notice"] = notice_name.to_s
583
585
 
584
- cs_send_data(sock, send_obj_dup, :type=>dtype) # データ送信
585
- # cs_logger.debug "cs_server_send_data:finish send data notice_name=#{notice_name.inspect}\n"
586
+ dango_send_data(sock, send_obj_dup, :type=>dtype) # データ送信
587
+ # logger.debug "send_notice:finish send data notice_name=#{notice_name.inspect}\n"
586
588
  else
587
589
  Thread.start(sid, notice_name, send_obj, dtype, timeout, sock) do
588
590
  begin
@@ -593,7 +595,7 @@ class DangoServerFramework
593
595
  send_obj_dup["notice"] = notice_name.to_s
594
596
 
595
597
  mutex_socket_list.synchronize(sid) do
596
- # cs_logger.debug "mutex_socket_list:synchronize:#{notice_name} #{sid} #{Time.now_to_s}"
598
+ # logger.debug "mutex_socket_list:synchronize:#{notice_name} #{sid} #{Time.now_to_s}"
597
599
 
598
600
  digest_key = sid.to_s + notice_name.to_s + Time.now.to_f.to_s + rand().to_s
599
601
  send_obj_dup["_id"] = Digest::MD5.hexdigest(digest_key)
@@ -601,31 +603,31 @@ class DangoServerFramework
601
603
 
602
604
  receive_thread = Thread.start(sock, send_obj_dup, dtype) do
603
605
  begin
604
- cs_send_data(sock, send_obj_dup, :type=>dtype) # データ送信
605
- # cs_logger.debug "cs_server_send_data:sent:notice_name=#{send_obj_dup['_id']} #{notice_name.inspect} #{sid} #{Time.now_to_s}"
606
+ dango_send_data(sock, send_obj_dup, :type=>dtype) # データ送信
607
+ # logger.debug "send_notice:sent:notice_name=#{send_obj_dup['_id']} #{notice_name.inspect} #{sid} #{Time.now_to_s}"
606
608
  rescue DangoFrameworkConnectionError
607
- cs_logger.debug "cs_server_send_data:DangoFrameworkConnectionError:notice_name=#{notice_name.inspect} #{sid} #{Time.now_to_s}"
609
+ logger.debug "send_notice:DangoFrameworkConnectionError:notice_name=#{notice_name.inspect} #{sid} #{Time.now_to_s}"
608
610
  rescue DangoFrameworkError
609
- cs_logger.debug "ERROR:cs_server_send_data:DangoFrameworkError:notice_name=#{notice_name.inspect} #{sid} #{Time.now_to_s}\n #{error_message($!, 'u')}"
611
+ logger.debug "ERROR:send_notice:DangoFrameworkError:notice_name=#{notice_name.inspect} #{sid} #{Time.now_to_s}\n #{error_message($!, 'u')}"
610
612
  end
611
613
  end
612
614
 
613
615
  # データ送信スレッドの終了待ち
614
616
  if !receive_thread.join(@send_timeout_sec)
615
617
  # タイムアウトの場合は
616
- cs_logger.warn "cs_server_send_data:send timeout:#{notice_name} #{sid} #{Time.now_to_s}"
618
+ logger.warn "send_notice:send timeout:#{notice_name} #{sid} #{Time.now_to_s}"
617
619
  else
618
- # cs_logger.warn "cs_server_send_data:sent after join:#{notice_name} #{sid} #{Time.now_to_s}"
620
+ # logger.warn "send_notice:sent after join:#{notice_name} #{sid} #{Time.now_to_s}"
619
621
  end_reserved_time = Time.now + timeout
620
622
 
621
623
  # タイムアウトチェック
622
624
  catch(:send_timeout) do
623
625
  (timeout.to_f / @send_receive_sleep_interval_sec).to_i.times do
624
626
  if Time.now > end_reserved_time
625
- cs_logger.debug "cs_server_send_data:receive timeout:#{notice_name}"
627
+ logger.debug "send_notice:receive timeout:#{notice_name}"
626
628
 
627
629
  if notice_name.to_s == "_heart_beat" # heart beatだったらsockを止める
628
- cs_logger.info "!!!! cs_server_send_data:heart_beat timeout"
630
+ logger.info "!!!! send_notice:heart_beat timeout"
629
631
  sock.close if !sock.closed?
630
632
  end
631
633
  break
@@ -635,7 +637,7 @@ class DangoServerFramework
635
637
  find_res = @arr_send_response.find{|r| r[:_id] == send_obj_dup["_id"]}
636
638
 
637
639
  if find_res
638
- cs_logger.debug "cs_server_send_data:find_res _heart_beat #{sid}" if notice_name.to_s == "_heart_beat"
640
+ logger.debug "send_notice:find_res _heart_beat #{sid}" if notice_name.to_s == "_heart_beat"
639
641
 
640
642
  @arr_send_response.delete(find_res)
641
643
  have_came_response = true
@@ -648,12 +650,12 @@ class DangoServerFramework
648
650
  end # catch 終わり
649
651
 
650
652
  if !have_came_response # 戻ってきたデータがあるかどうかチェック
651
- cs_logger.warn "!!! received data is none:#{notice_name} #{sid} #{Time.now_to_s}"
653
+ logger.warn "!!! received data is none:#{notice_name} #{sid} #{Time.now_to_s}"
652
654
  end
653
655
  end
654
656
  end # mutex
655
657
  rescue
656
- cs_logger.debug "send_response_thread error:#{error_message($!, 'u')}"
658
+ logger.debug "send_response_thread error:#{error_message($!, 'u')}"
657
659
  end
658
660
  end # Thread:end
659
661
 
@@ -664,31 +666,31 @@ class DangoServerFramework
664
666
 
665
667
  # 必要に応じて追加するメソッド
666
668
  def method_missing(name, *args)
667
- if name.to_s =~ /^cs_receive_action_notice_shared_(.+)/ # 共有メモリ変更通知なら
669
+ if name.to_s =~ /^dango_receive_action_notice_shared_(.+)/ # 共有メモリ変更通知なら
668
670
  key = $1
669
671
  method_action_notice_shared(key, name, *args)
670
672
  else
671
- cs_logger.info "method not found. #{name.inspect} #{args.inspect}"
673
+ logger.info "method not found. #{name.inspect} #{args.inspect}"
672
674
  raise(NameError, "method not found. #{name.inspect} #{args.inspect}")
673
675
  end
674
676
  end
675
677
 
676
678
  # 共有メモリ変更通知のメソッド
677
679
  def method_action_notice_shared(key, name, *args)
678
- cs_logger.debug "method_name:#{name}"
680
+ logger.debug "method_name:#{name}"
679
681
  send_obj = args[0]
680
682
  notice_shared.notice_change(key.to_sym, send_obj)
681
683
  end
682
684
 
683
685
  # メインループ用の定義をするためのメソッド
684
686
  def flameloop_thread(loop_method, options={})
685
- cs_logger.debug "flameloop_thread options:#{options.inspect}"
687
+ logger.debug "flameloop_thread options:#{options.inspect}"
686
688
 
687
689
  options = options.deep_dup
688
690
  options[:rate] ||= 10
689
691
 
690
692
  wait_sec = 1.0 / options[:rate]
691
- cs_logger.debug "flameloop_thread wait_sec:#{wait_sec.inspect}"
693
+ logger.debug "flameloop_thread wait_sec:#{wait_sec.inspect}"
692
694
 
693
695
  Thread.new do
694
696
  loop do
@@ -696,7 +698,7 @@ class DangoServerFramework
696
698
  begin
697
699
  __send__(loop_method)
698
700
  rescue
699
- cs_logger.debug "flameloop_thread error:#{error_message($!, 'u')}"
701
+ logger.debug "flameloop_thread error:#{error_message($!, 'u')}"
700
702
  end
701
703
  end
702
704
  sleep wait_sec
@@ -72,7 +72,7 @@ namespace :dango do
72
72
  begin
73
73
  dm = DangoMonitorClient.new()
74
74
  p dm.server_reload()
75
- dm.cs_client_close
75
+ dm.dango_client_close
76
76
  rescue
77
77
  p $!.class
78
78
  p $!.message
@@ -99,7 +99,7 @@ namespace :dango do
99
99
  begin
100
100
  dm = DangoMonitorClient.new()
101
101
  p dm.send_system_message(message)
102
- dm.cs_client_close
102
+ dm.dango_client_close
103
103
  rescue
104
104
  p $!.class
105
105
  p $!.message
@@ -90,14 +90,14 @@ class TestClient < DangoClientFramework
90
90
 
91
91
  attr_accessor(:client_name)
92
92
 
93
- # cs_client_send_receive_data用の共有メモリ
93
+ # dango_client_send_receive_data用の共有メモリ
94
94
  def send_receive_shared_init
95
95
  @send_receive_shared = SharedMemoryStore.new
96
96
  end
97
97
  attr_reader(:send_receive_shared)
98
98
 
99
99
  # 起動処理
100
- def cs_client_init
100
+ def dango_client_init
101
101
  # サーバー接続情報など
102
102
  @connection_client_host = @config["network"]["host"] # 自動でこのホスト名でサーバー開始
103
103
  @connection_client_port = @config["network"]["port"] # 自動でこのポートでサーバー開始
@@ -109,40 +109,40 @@ class TestClient < DangoClientFramework
109
109
 
110
110
  # テストサーバー
111
111
  def send(name, send_obj = {})
112
- cs_logger.debug("tester.send:send_obj=#{send_obj.inspect} #{Time.now_to_s}")
113
- cs_client_send_data(name, send_obj)
112
+ logger.debug("tester.send:send_obj=#{send_obj.inspect} #{Time.now_to_s}")
113
+ send_action(name, send_obj)
114
114
  end
115
115
 
116
116
  # trap_receive
117
- def trap_receive(receive_name, options = {})
118
- cs_logger.debug "trap_receive_data:#{receive_name}:#{Time.now_to_s}"
117
+ def trap_receive(notice_name, options = {})
118
+ logger.debug "trap_receive_data:#{notice_name}:#{Time.now_to_s}"
119
119
  timeout = options[:timeout] || ReceiveTrapTimeoutSec
120
120
  trap_proc = options[:proc] || nil
121
121
  trap_loop = options[:loop] || nil # procがある場合のみ有効なフラグ
122
122
  raise(ArgumentError, ":proc is not Proc class.") if trap_proc && ! trap_proc.is_a?(Proc)
123
123
 
124
124
  # 戻ってきたデータのチェックメソッド
125
- receive_name_sym = (receive_name.class == Symbol) ? (":"+receive_name.to_s) : ('"'+receive_name+'"')
125
+ notice_name_sym = (notice_name.class == Symbol) ? (":"+notice_name.to_s) : ('"'+notice_name+'"')
126
126
 
127
- if ! @receive_methods.include?(receive_name_sym)
128
- instance_method_name = "cs_receive_#{receive_name}"
127
+ if ! @receive_methods.include?(notice_name_sym)
128
+ instance_method_name = "dango_receive_#{notice_name}"
129
129
  expr = <<-EOF
130
130
  def self.#{instance_method_name}(ret_obj)
131
- cs_logger.debug "ret_obj:" + ret_obj.inspect + " " + Time.now_to_s
132
- send_receive_shared[#{receive_name_sym}] = ret_obj
131
+ logger.debug "ret_obj:" + ret_obj.inspect + " " + Time.now_to_s
132
+ send_receive_shared[#{notice_name_sym}] = ret_obj
133
133
  end
134
134
  EOF
135
135
  instance_eval expr
136
- @receive_methods.push(receive_name_sym)
136
+ @receive_methods.push(notice_name_sym)
137
137
  end
138
138
 
139
139
  # @trap_thread_hashにスレッド登録
140
- if ! @trap_thread_hash.has_key?(receive_name)
140
+ if ! @trap_thread_hash.has_key?(notice_name)
141
141
 
142
142
  # スレッド開始
143
- th = Thread.start(receive_name, timeout, trap_proc, trap_loop) do
143
+ th = Thread.start(notice_name, timeout, trap_proc, trap_loop) do
144
144
  loop do
145
- send_receive_shared[receive_name] = nil
145
+ send_receive_shared[notice_name] = nil
146
146
  if timeout == 0
147
147
  end_reserved_time = Time.at(0) # 0ならepochを入れる
148
148
  else
@@ -152,12 +152,12 @@ class TestClient < DangoClientFramework
152
152
  # タイムアウトチェック
153
153
  loop do
154
154
  if end_reserved_time != Time.at(0) && end_reserved_time < Time.now
155
- raise(DangoFrameworkTimeoutError, "timeout:timeout_sec=#{timeout}:\nclient_name=#{@client_name}(#{self.sid}):\nreceive_name=#{receive_name} \n#{Time.now_to_s}")
155
+ raise(DangoFrameworkTimeoutError, "timeout:timeout_sec=#{timeout}:\nclient_name=#{@client_name}(#{self.sid}):\nnotice_name=#{notice_name} \n#{Time.now_to_s}")
156
156
  end
157
157
 
158
158
  # 戻ってきたデータがあれば
159
- if send_receive_shared[receive_name]
160
- cs_logger.debug "receive_name:#{send_receive_shared[receive_name].inspect} #{Time.now_to_s}"
159
+ if send_receive_shared[notice_name]
160
+ logger.debug "notice_name:#{send_receive_shared[notice_name].inspect} #{Time.now_to_s}"
161
161
  break
162
162
  end
163
163
 
@@ -165,21 +165,21 @@ class TestClient < DangoClientFramework
165
165
  end
166
166
 
167
167
  # 戻ってきたデータがあるかどうかチェック
168
- if !send_receive_shared[receive_name]
169
- raise(DangoFrameworkError, "received data is none. sid=#{self.sid} receive_name=#{receive_name}")
168
+ if !send_receive_shared[notice_name]
169
+ raise(DangoFrameworkError, "received data is none. sid=#{self.sid} notice_name=#{notice_name}")
170
170
  end
171
171
 
172
172
  # :procが設定されている場合は、それを呼び出す
173
173
  if trap_proc
174
- cs_logger.debug "trap_receive_data:trap_proc:#{trap_proc.inspect} #{Time.now_to_s}"
175
- trap_proc.call(send_receive_shared[receive_name])
174
+ logger.debug "trap_receive_data:trap_proc:#{trap_proc.inspect} #{Time.now_to_s}"
175
+ trap_proc.call(send_receive_shared[notice_name])
176
176
  break if ! trap_loop # loopする必要がなければスレッド終了
177
177
 
178
178
  # :procが設定されていなければ、wait用に@receive_arrに入れておく
179
179
  else
180
180
  @receive_mutex.synchronize do
181
- cs_logger.debug "receive_name:#{receive_name}:#{send_receive_shared[receive_name].inspect} #{Time.now_to_s}"
182
- @receive_arr.push([receive_name, send_receive_shared[receive_name]])
181
+ logger.debug "notice_name:#{notice_name}:#{send_receive_shared[notice_name].inspect} #{Time.now_to_s}"
182
+ @receive_arr.push([notice_name, send_receive_shared[notice_name]])
183
183
  end
184
184
  break # スレッド終了
185
185
 
@@ -187,26 +187,32 @@ class TestClient < DangoClientFramework
187
187
  end # loop
188
188
  end # Thread
189
189
 
190
- @trap_thread_hash[receive_name] = th
190
+ @trap_thread_hash[notice_name] = th
191
191
  else
192
192
 
193
- cs_logger.debug "trap_receive_data:already register trap:receive_name:#{receive_name} #{Time.now_to_s}"
193
+ logger.debug "trap_receive_data:already register trap:notice_name:#{notice_name} #{Time.now_to_s}"
194
194
  end
195
195
 
196
196
  end
197
197
 
198
198
  # cancel trap_receive
199
- def cancel_trap_receive(receive_name, options = {})
200
- cs_logger.debug "cancel_trap_receive:#{receive_name}:#{Time.now_to_s}"
199
+ def cancel_trap_receive(notice_name, options = {})
200
+ logger.debug "cancel_trap_receive:#{notice_name}:#{Time.now_to_s}"
201
201
 
202
- @trap_thread_hash[receive_name].kill
202
+ # trapスレッドの削除
203
+ if @trap_thread_hash[notice_name]
204
+ @trap_thread_hash[notice_name].kill
205
+ @trap_thread_hash[notice_name].join
206
+
207
+ @trap_thread_hash.delete(notice_name)
208
+ end
203
209
 
204
- @trap_thread_hash.delete(receive_name)
210
+ send_receive_shared[notice_name] = nil # 受信データのごみを削除
205
211
  end
206
212
 
207
213
  # wait_receive
208
- def wait_receive(receive_name, options = {})
209
- cs_logger.debug "wait_receive_data:#{receive_name}:#{Time.now_to_s}"
214
+ def wait_receive(notice_name, options = {})
215
+ logger.debug "wait_receive_data:#{notice_name}:#{Time.now_to_s}"
210
216
  timeout = options[:timeout] || ReceiveWaitTimeoutSec
211
217
 
212
218
  # データ受信待ち
@@ -216,7 +222,7 @@ class TestClient < DangoClientFramework
216
222
 
217
223
  loop do
218
224
  @receive_mutex.synchronize do
219
- receive_data = @receive_arr.find{|r| r[0] == receive_name}.deep_dup
225
+ receive_data = @receive_arr.find{|r| r[0] == notice_name}.deep_dup
220
226
  end
221
227
 
222
228
  break if receive_data != nil
@@ -227,15 +233,15 @@ class TestClient < DangoClientFramework
227
233
 
228
234
  # タイムアウトなら
229
235
  if receive_data == nil
230
- raise(DangoFrameworkTimeoutError, "timeout:timeout_sec=#{timeout}:\nclient_name=#{@client_name}(#{self.sid})\:receive_name=#{receive_name} \n#{Time.now_to_s}")
236
+ raise(DangoFrameworkTimeoutError, "timeout:timeout_sec=#{timeout}:\nclient_name=#{@client_name}(#{self.sid})\:notice_name=#{notice_name} \n#{Time.now_to_s}")
231
237
  end
232
238
 
233
239
  # 結果を削除しておく
234
240
  @receive_mutex.synchronize do
235
- @receive_arr.delete_if{|r| r[0] == receive_name}
241
+ @receive_arr.delete_if{|r| r[0] == notice_name}
236
242
  end
237
243
 
238
- @trap_thread_hash.delete(receive_name)
244
+ @trap_thread_hash.delete(notice_name)
239
245
 
240
246
  receive_data[1]
241
247
  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 = 25
5
+ TINY = 26
6
6
 
7
7
  STRING = [MAJOR, MINOR, TINY].join('.')
8
8
  end
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.25
7
- date: 2007-10-31 00:00:00 +09:00
6
+ version: 0.0.26
7
+ date: 2007-11-03 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