dango 0.0.25 → 0.0.26

Sign up to get free protection for your applications and to get access to all the features.
@@ -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