dango 0.0.9 → 0.0.10

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/Manifest.txt CHANGED
@@ -7,6 +7,7 @@ lib/dango/monitor/dango_monitor_client.rb
7
7
  lib/dango/script/dango_server.rb
8
8
  lib/dango/shared/memory_store.rb
9
9
  lib/dango/tasks/dango_rake.rb
10
+ lib/dango/tester/dango_tester_client.rb
10
11
  lib/dango/version.rb
11
12
  setup.rb
12
13
  test/test_helper.rb
@@ -17,7 +17,8 @@ class DangoMonitorClient < DangoClientFramework
17
17
  ConnTimeout = 6
18
18
 
19
19
  def initialize()
20
- super(ENV['RAILS_ENV'])
20
+ env = ENV['RAILS_ENV'] || 'development'
21
+ super(env)
21
22
  end
22
23
 
23
24
  public
@@ -14,7 +14,9 @@ class ScriptDangoServer
14
14
  k =~ /\-\-(\w+?):(\w+?)$/
15
15
  key1 = Regexp.last_match(1)
16
16
  key2 = Regexp.last_match(2)
17
- config[key1][key2] = v
17
+ if key1 && key2
18
+ config[key1][key2] = v
19
+ end
18
20
  end
19
21
 
20
22
  # serverファイル名一覧を取得
@@ -0,0 +1,171 @@
1
+ #!ruby -Ku
2
+
3
+ =begin
4
+ = コネクション型サーバーフレームワーク
5
+ =end
6
+
7
+ require 'dango/client_framework' # コネクションクライアントフレームワークの呼び出し
8
+
9
+ # テスタークラス
10
+ class DangoTesterClient
11
+ # テスターのイニシャライズ
12
+ def initialize
13
+ @client_conns = {}
14
+ end
15
+
16
+ # クライアントを1個接続
17
+ def new_client(c_name, serv_info)
18
+ config = {
19
+ "network" => {
20
+ "host"=>serv_info["host"],
21
+ "port"=>serv_info["port"],
22
+ },
23
+ }
24
+ env = "development"
25
+
26
+ # 接続
27
+ client_conn = TestClient.new(env, config)
28
+
29
+ # client_nameメソッド作成とclient_nameを定義
30
+ client_conn.client_name = c_name
31
+
32
+ # 接続を入れて
33
+ @client_conns[c_name] = client_conn
34
+
35
+ # 接続インスタンスを返す
36
+ client_conn
37
+ end
38
+
39
+ attr_reader(:client_conns)
40
+ end
41
+
42
+ # テスト接続用のクラス
43
+ class TestClient < DangoClientFramework
44
+ SendReceiveSleepIntervalSec = 0.1 # データ送信後の順の際のタイムアウトチェック間隔秒
45
+ SendReceiveTimeoutSec = 5 # データ送信後の順の際のタイムアウトチェック間隔秒
46
+
47
+ def initialize(env, config)
48
+ @config = config
49
+ super(env, config)
50
+
51
+ @receive_mutex = Mutex.new # 送受信用の排他処理
52
+ @receive_arr = []
53
+ @receive_defined_names = []
54
+
55
+ @client_name = nil # クライアント名
56
+
57
+ send_receive_shared_init()
58
+ end
59
+
60
+ attr_accessor(:client_name)
61
+
62
+ # cs_client_send_receive_data用の共有メモリ
63
+ def send_receive_shared_init
64
+ @send_receive_shared = SharedMemoryStore.new
65
+ end
66
+ attr_reader(:send_receive_shared)
67
+
68
+ # 起動処理
69
+ def cs_client_init
70
+ # サーバー接続情報など
71
+ @connection_client_host = @config["network"]["host"] # 自動でこのホスト名でサーバー開始
72
+ @connection_client_port = @config["network"]["port"] # 自動でこのポートでサーバー開始
73
+
74
+ # ログ出力情報
75
+ @connection_client_log_file = "log/lt_client_base.log" # 自動でこのログファイル名を使う
76
+ @connection_client_log_level = Logger::DEBUG # 自動でこのログレベルになる
77
+ end
78
+
79
+ # テストサーバー
80
+ def send(name, send_obj = {})
81
+ cs_logger.debug("tester.send:send_obj=#{send_obj.inspect} #{Time.now}")
82
+ cs_client_send_data(name, send_obj)
83
+ end
84
+
85
+ # make_receive_stack
86
+ def make_receive_stack(receive_name, options = {})
87
+ timeout = options[:timeout] || SendReceiveTimeoutSec
88
+
89
+ @receive_defined_names.push(receive_name)
90
+
91
+ Thread.start do
92
+ send_receive_shared[receive_name] = nil
93
+ end_reserved_time = Time.now + timeout
94
+
95
+ # 戻ってきたデータのチェック
96
+ receive_name_sym = (receive_name.class == Symbol) ? (":"+receive_name.to_s) : ('"'+receive_name+'"')
97
+ instance_method_name = "cs_receive_#{receive_name}"
98
+ expr = <<-EOF
99
+ def self.#{instance_method_name}(ret_obj)
100
+ cs_logger.debug "ret_obj:" + ret_obj.inspect
101
+ send_receive_shared[#{receive_name_sym}] = ret_obj
102
+ end
103
+ EOF
104
+ instance_eval expr
105
+
106
+ # タイムアウトチェック
107
+ (timeout.to_f / SendReceiveSleepIntervalSec).to_i.times do
108
+ if Time.now > end_reserved_time
109
+ raise(DangoFrameworkTimeoutError, "timeout:client_name=#{@client_name}:receive_name=#{receive_name}")
110
+ end
111
+
112
+ # 戻ってきたデータがあれば
113
+ if send_receive_shared[receive_name]
114
+ cs_logger.debug "receive_name:#{send_receive_shared[receive_name].inspect}"
115
+ break
116
+ end
117
+
118
+ sleep SendReceiveSleepIntervalSec # スリープ
119
+ end
120
+
121
+ if !send_receive_shared[receive_name] # 戻ってきたデータがあるかどうかチェック
122
+ raise(DangoFrameworkError, "received data is none")
123
+ end
124
+
125
+ @receive_mutex.synchronize do
126
+ @receive_arr.push([receive_name, send_receive_shared[receive_name]])
127
+ # p @receive_arr
128
+ end
129
+ end
130
+ end
131
+
132
+ # wait_receive_data
133
+ def wait_receive_data(receive_name, options = {})
134
+ timeout = options[:timeout] || SendReceiveTimeoutSec
135
+
136
+ # データ受信待ち
137
+ receive_data = nil
138
+ (timeout.to_f / SendReceiveSleepIntervalSec).to_i.times do
139
+ @receive_mutex.synchronize do
140
+ receive_data = @receive_arr.find{|r| r[0] == receive_name}.deep_dup
141
+ # p @receive_arr
142
+ end
143
+ break if receive_data != nil
144
+ sleep SendReceiveSleepIntervalSec # スリープ
145
+ end
146
+
147
+ # タイムアウトなら
148
+ if receive_data == nil
149
+ raise(DangoFrameworkTimeoutError, "timeout:client_name=#{@client_name}:receive_name=#{receive_name}")
150
+ end
151
+
152
+ # 結果を削除しておく
153
+ @receive_mutex.synchronize do
154
+ @receive_arr.delete_if{|r| r[0] == receive_name}
155
+ end
156
+
157
+ receive_data[1]
158
+ end
159
+
160
+ # receive_arrの状態確認
161
+ def receive_arr
162
+ receive_arr = nil
163
+ @receive_mutex.synchronize do
164
+ receive_arr = @receive_arr.deep_dup
165
+ end
166
+ receive_arr
167
+ end
168
+
169
+ end
170
+
171
+
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 = 9
5
+ TINY = 10
6
6
 
7
7
  STRING = [MAJOR, MINOR, TINY].join('.')
8
8
  end
metadata CHANGED
@@ -3,7 +3,7 @@ rubygems_version: 0.9.4
3
3
  specification_version: 1
4
4
  name: dango
5
5
  version: !ruby/object:Gem::Version
6
- version: 0.0.9
6
+ version: 0.0.10
7
7
  date: 2007-10-15 00:00:00 +09:00
8
8
  summary: Ruby - Flash conneciton network flamework
9
9
  require_paths:
@@ -38,6 +38,7 @@ files:
38
38
  - lib/dango/script/dango_server.rb
39
39
  - lib/dango/shared/memory_store.rb
40
40
  - lib/dango/tasks/dango_rake.rb
41
+ - lib/dango/tester/dango_tester_client.rb
41
42
  - lib/dango/version.rb
42
43
  - setup.rb
43
44
  - test/test_helper.rb