dango 0.3.2 → 0.3.3
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.
- data/lib/dango/client_framework.rb +1 -0
- data/lib/dango/controller_plugin/dango_controller_plugin.rb +28 -0
- data/lib/dango/framework_base.rb +0 -1
- data/lib/dango/monitor/dango_monitor_client.rb +0 -3
- data/lib/dango/monitor/server_monitor_action.rb +1 -1
- data/lib/dango/server_framework.rb +19 -5
- data/lib/dango/tester/dango_tester_client.rb +42 -10
- data/lib/dango/version.rb +1 -1
- metadata +13 -2
@@ -0,0 +1,28 @@
|
|
1
|
+
#!ruby -Ku
|
2
|
+
|
3
|
+
=begin
|
4
|
+
= Dangoサーバーのメンテナンス用モニタ
|
5
|
+
=end
|
6
|
+
|
7
|
+
|
8
|
+
# モニター用のdangoクライアントクラス
|
9
|
+
module DangoControllerPlugin
|
10
|
+
def self.dango_server_config(options = {})
|
11
|
+
if !options[:env]
|
12
|
+
options[:env] = ENV['RAILS_ENV']
|
13
|
+
end
|
14
|
+
config = YAML.load(open("#{RAILS_ROOT}/config/dango/#{options[:env]}.yml", "rb"){|fh| fh.read})
|
15
|
+
config
|
16
|
+
end
|
17
|
+
|
18
|
+
def self.dango_server_call(method_name, arg, options = {})
|
19
|
+
config = dango_server_config(options)
|
20
|
+
raise("backdoor_run_drb_server is false.") if !config['server']['backdoor_run_drb_server']
|
21
|
+
drb_uri = "druby://#{config['network']['host']}:#{config['server']['backdoor_run_drb_port']}"
|
22
|
+
drb_obj = DRbObject.new_with_uri(drb_uri)
|
23
|
+
drb_obj.__send__(method_name.to_s, arg)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
|
28
|
+
|
data/lib/dango/framework_base.rb
CHANGED
@@ -52,7 +52,7 @@ class ServerMonitorAction
|
|
52
52
|
# メンテナンスコマンド:エラーの場合
|
53
53
|
def dango_check_monitor_error(sock, action_name)
|
54
54
|
peerhost, peeraddr = sock.peeraddr[2, 2]
|
55
|
-
backdoor_host = @
|
55
|
+
backdoor_host = @backdoor_host
|
56
56
|
logger.debug "dango_check_monitor_error:peerhost=#{peerhost.inspect} peeraddr=#{peeraddr.inspect} backdoor_host=#{backdoor_host.inspect}"
|
57
57
|
|
58
58
|
match = false
|
@@ -164,6 +164,8 @@ class DangoServerFramework
|
|
164
164
|
begin
|
165
165
|
set_server_variables() # 各種サーバー仕様の変数設定
|
166
166
|
|
167
|
+
require 'resolv-replace' if @safe_resolver # 名前解決時のロックがかかってしまう件を解決できるはず
|
168
|
+
|
167
169
|
logger.warn("===== server initialize =====") # loggerの準備
|
168
170
|
logger.warn("network_port=#{@network_port}")
|
169
171
|
logger.warn("network_host=#{@network_host}")
|
@@ -189,11 +191,17 @@ class DangoServerFramework
|
|
189
191
|
|
190
192
|
TCPSocket.do_not_reverse_lookup = true # 逆引きを行わない
|
191
193
|
# TCPSocket.do_not_reverse_lookup = false # 逆引きを行う
|
192
|
-
|
194
|
+
|
195
|
+
if @backdoor_run_drb_server # backdoor用のdrbを起動
|
196
|
+
uri = "druby://#{@network_host}:#{@backdoor_run_drb_port}"
|
197
|
+
DRb.start_service(uri, self)
|
198
|
+
logger.warn("start drb server: uri=#{DRb.uri}")
|
199
|
+
end
|
200
|
+
|
193
201
|
@gserver = DangoGServer.new(self, @network_port, @server_host, @server_max_connections)
|
194
202
|
@gserver.audit = true # Turn logging on.
|
195
203
|
@gserver.debug = true # debug
|
196
|
-
|
204
|
+
|
197
205
|
gserver_log_fh = open(@gserver_log_file, "a")
|
198
206
|
@gserver.stdlog = gserver_log_fh
|
199
207
|
|
@@ -519,9 +527,15 @@ EOF
|
|
519
527
|
|
520
528
|
@policy_file_allow_domain = @config['server']['policy_file_allow_domain']
|
521
529
|
@policy_file_allow_domain = [@network_host] if @policy_file_allow_domain.class != Array
|
522
|
-
|
530
|
+
|
531
|
+
@safe_resolver = @config['server']['safe_resolver'] || false # require 'resolv-replace'するかどうか
|
532
|
+
|
523
533
|
@statistics_process_memory = @config['server']['statistics_process_memory'] || false # プロセスのメモリ使用量統計を取る
|
524
|
-
|
534
|
+
|
535
|
+
@backdoor_run_drb_server = @config['server']['backdoor_run_drb_server'] || false # バックドア用のdrbサーバーを起動するかどうか
|
536
|
+
@backdoor_run_drb_port = @config['server']['backdoor_run_drb_port'] || 12345 # バックドア用のdrbサーバーのポート番号
|
537
|
+
@backdoor_host = @config['server']['backdoor_host'] || '127.0.0.1' # バックドアのアクセス可能ホスト名
|
538
|
+
|
525
539
|
# ログレベルの設定
|
526
540
|
log_level_hash = {
|
527
541
|
"FATAL" => Logger::FATAL,
|
@@ -714,7 +728,7 @@ EOF
|
|
714
728
|
|
715
729
|
# クライアントから来たheart_beatなら
|
716
730
|
def dango_receive__notice_heart_beat(ret_obj)
|
717
|
-
logger.debug "dango_receive__notice_heart_beat:#{session[:sid]}:#{ret_obj['_hb_id']} "
|
731
|
+
# logger.debug "dango_receive__notice_heart_beat:#{session[:sid]}:#{ret_obj['_hb_id']} "
|
718
732
|
|
719
733
|
shared.transaction(:_heart_beat_time_hash) do |heart_beat_time_hash|
|
720
734
|
heart_beat_time_hash[session[:sid]] = Time.now
|
@@ -4,8 +4,9 @@
|
|
4
4
|
= コネクション型サーバーフレームワーク
|
5
5
|
=end
|
6
6
|
|
7
|
-
require 'dango/client_framework' # コネクションクライアントフレームワークの呼び出し
|
8
7
|
require 'thread'
|
8
|
+
require 'pp'
|
9
|
+
require 'dango/client_framework' # コネクションクライアントフレームワークの呼び出し
|
9
10
|
|
10
11
|
# テスタークラス
|
11
12
|
class DangoTesterClient
|
@@ -18,6 +19,8 @@ class DangoTesterClient
|
|
18
19
|
def initialize(debug = false)
|
19
20
|
@debug = debug
|
20
21
|
|
22
|
+
original_print("Dango Version=#{Dango::VERSION::STRING}\n") if debug
|
23
|
+
|
21
24
|
@client_conns = {}
|
22
25
|
Thread.abort_on_exception = true
|
23
26
|
|
@@ -25,6 +28,29 @@ class DangoTesterClient
|
|
25
28
|
@gc_interval_sec = GCIntervalSec
|
26
29
|
gc_thread_start() # GCスレッドの開始
|
27
30
|
|
31
|
+
def self.die(str)
|
32
|
+
original_print "============ die ============ #{Time.now_to_s}\n"
|
33
|
+
original_print caller().pretty_inspect + "\n"
|
34
|
+
original_print str.to_s + "\n"
|
35
|
+
exit 1
|
36
|
+
end
|
37
|
+
|
38
|
+
# def self.print(str)
|
39
|
+
# original_print("#{str}")
|
40
|
+
# end
|
41
|
+
|
42
|
+
def self.puts(str)
|
43
|
+
original_print("#{str}\n")
|
44
|
+
end
|
45
|
+
|
46
|
+
def self.p(obj)
|
47
|
+
original_print("#{obj.inspect}\n")
|
48
|
+
end
|
49
|
+
|
50
|
+
def self.pp(obj)
|
51
|
+
original_print("#{obj.pretty_inspect}\n")
|
52
|
+
end
|
53
|
+
|
28
54
|
end
|
29
55
|
|
30
56
|
# クライアントを1個接続
|
@@ -68,15 +94,21 @@ class DangoTesterClient
|
|
68
94
|
|
69
95
|
attr_reader(:client_conns)
|
70
96
|
|
71
|
-
def
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
97
|
+
def original_print(str)
|
98
|
+
disp_str = ""
|
99
|
+
if ENV['LANG'] =~ /euc/i || ENV['LANG'] =~ /ujis/i
|
100
|
+
disp_str = str.to_s.toeuc
|
101
|
+
elsif ENV['LANG'] =~ /sjis/i
|
102
|
+
disp_str = str.to_s.tosjis
|
103
|
+
elsif ENV['LANG'] =~ /UTF\-8/i
|
104
|
+
disp_str = str.to_s.toutf8
|
105
|
+
elsif RUBY_PLATFORM == 'i386-mswin32' || RUBY_PLATFORM == 'i386-cygwin'
|
106
|
+
disp_str = str.to_s.tosjis
|
107
|
+
else
|
108
|
+
disp_str = str.to_s
|
109
|
+
end
|
110
|
+
|
111
|
+
print(disp_str)
|
80
112
|
end
|
81
113
|
|
82
114
|
# GCスレッドの開始
|
data/lib/dango/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dango
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Keisuke Minami
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2008-
|
12
|
+
date: 2008-07-20 00:00:00 +09:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -32,6 +32,16 @@ dependencies:
|
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: 0.3.0
|
34
34
|
version:
|
35
|
+
- !ruby/object:Gem::Dependency
|
36
|
+
name: hoe
|
37
|
+
type: :development
|
38
|
+
version_requirement:
|
39
|
+
version_requirements: !ruby/object:Gem::Requirement
|
40
|
+
requirements:
|
41
|
+
- - ">="
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: 1.7.0
|
44
|
+
version:
|
35
45
|
description: Realtime communications network framework for Ruby and Flash on Rails.
|
36
46
|
email: keisuke@rccn.com
|
37
47
|
executables: []
|
@@ -50,6 +60,7 @@ files:
|
|
50
60
|
- lib/dango/mutex_socket_list.rb
|
51
61
|
- lib/dango/socket_list.rb
|
52
62
|
- lib/dango/session_manager.rb
|
63
|
+
- lib/dango/controller_plugin/dango_controller_plugin.rb
|
53
64
|
- lib/dango/monitor/dango_monitor_client.rb
|
54
65
|
- lib/dango/monitor/server_monitor_action.rb
|
55
66
|
- lib/dango/script/dango_server.rb
|