em-rocketio-linda-client 1.0.0 → 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/History.txt +4 -0
- data/lib/em-rocketio-linda-client/client.rb +14 -0
- data/lib/em-rocketio-linda-client/version.rb +1 -1
- data/sample/sample.rb +4 -0
- data/test/test_blocking_read_take.rb +37 -0
- data/test/test_em_rocketio_linda_client.rb +42 -3
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a15ca83f00ae8e5e6bc71edc2da3216e5b14bd74
|
4
|
+
data.tar.gz: dfa050a61c09993ae3bc68d9ab424bffb0654c94
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4e03ca5d2b34da1c771bb9e35dba97e17b07421c1bcd5c60763f213f18266ee82cda8ef1b6a72e0548e6e6a7416f9fa1d57517358f0e1c9b1be2f21b307e8d92
|
7
|
+
data.tar.gz: 8ca32be12723bfb4e55c81995a7babca40295ee31c92b7d52916efbb00abd7918b8642863aa1422c7021372770f4c2132d9f39f4aa96cb782079a3b7f54ba934
|
data/History.txt
CHANGED
@@ -95,6 +95,20 @@ module EM
|
|
95
95
|
@linda.io.push "__linda_watch", [@name, tuple, callback_id]
|
96
96
|
end
|
97
97
|
|
98
|
+
def list(tuple, &block)
|
99
|
+
unless [Hash, Array].include? tuple.class
|
100
|
+
raise ArgumentError, "tuple must be Array or Hash"
|
101
|
+
end
|
102
|
+
callback_id = "#{Time.now.to_i}#{Time.now.usec}_#{rand(1000000).to_i}"
|
103
|
+
if block_given?
|
104
|
+
@linda.io.once "__linda_list_callback_#{callback_id}" do |list|
|
105
|
+
block.call list
|
106
|
+
end
|
107
|
+
@linda.io.push "__linda_list", [@name, tuple, callback_id]
|
108
|
+
return
|
109
|
+
end
|
110
|
+
end
|
111
|
+
|
98
112
|
end
|
99
113
|
|
100
114
|
end
|
data/sample/sample.rb
CHANGED
@@ -70,4 +70,41 @@ class TestBlockingReadTake < MiniTest::Test
|
|
70
70
|
assert_equal results.shift, ["blocking", "read", 3]
|
71
71
|
end
|
72
72
|
|
73
|
+
def test_blocking_list
|
74
|
+
ts_name = "ts_blocking_read_#{rand Time.now.to_i}"
|
75
|
+
_tuple1 = ["a", "b", "c"]
|
76
|
+
_tuple2 = ["a", "b"]
|
77
|
+
_tuple3 = ["a", "b", "c", 1234]
|
78
|
+
_result1 = nil
|
79
|
+
_result2 = nil
|
80
|
+
EM::run do
|
81
|
+
client = EM::RocketIO::Linda::Client.new App.url
|
82
|
+
ts = client.tuplespace[ts_name]
|
83
|
+
client.io.on :connect do
|
84
|
+
ts.write _tuple1
|
85
|
+
ts.write _tuple2
|
86
|
+
ts.write _tuple3
|
87
|
+
|
88
|
+
_result1 = ts.list ["a", "b"]
|
89
|
+
p _result1
|
90
|
+
_result2 = ts.list ["a", "b", "c"]
|
91
|
+
p _result2
|
92
|
+
end
|
93
|
+
|
94
|
+
EM::defer do
|
95
|
+
50.times do
|
96
|
+
sleep 0.1
|
97
|
+
puts "waiting list"
|
98
|
+
break if _result2
|
99
|
+
end
|
100
|
+
EM::add_timer 1 do
|
101
|
+
EM::stop
|
102
|
+
end
|
103
|
+
end
|
104
|
+
end
|
105
|
+
|
106
|
+
assert_equal _result1, [_tuple3, _tuple2, _tuple1]
|
107
|
+
assert_equal _result2, [_tuple3, _tuple1]
|
108
|
+
end
|
109
|
+
|
73
110
|
end
|
@@ -196,12 +196,51 @@ class TestEmRocketIOLindaClient < MiniTest::Test
|
|
196
196
|
assert_equal _tuple1, [1,2,3]
|
197
197
|
assert_equal _tuple2, [1,2,3]
|
198
198
|
assert_equal _tuple3, [1,2,3]
|
199
|
-
assert_equal _info1.class,
|
200
|
-
assert_equal _info2.class,
|
201
|
-
assert_equal _info3.class,
|
199
|
+
assert_equal _info1.class, EM::RocketIO::Linda::Client::TupleInfo
|
200
|
+
assert_equal _info2.class, EM::RocketIO::Linda::Client::TupleInfo
|
201
|
+
assert_equal _info3.class, EM::RocketIO::Linda::Client::TupleInfo
|
202
202
|
assert _info1.from =~ /^\d+\.\d+\.\d+\.\d+$/
|
203
203
|
assert _info2.from =~ /^\d+\.\d+\.\d+\.\d+$/
|
204
204
|
assert _info3.from =~ /^\d+\.\d+\.\d+\.\d+$/
|
205
205
|
end
|
206
206
|
|
207
|
+
def test_tuple_list
|
208
|
+
_tuple1 = ["a", "b", "c"]
|
209
|
+
_tuple2 = ["a", "b"]
|
210
|
+
_tuple3 = ["a", "b", "c", 1234]
|
211
|
+
_result1 = nil
|
212
|
+
_result2 = nil
|
213
|
+
EM::run do
|
214
|
+
client = EM::RocketIO::Linda::Client.new App.url
|
215
|
+
ts = client.tuplespace["ts_#{rand Time.now.to_i}"]
|
216
|
+
|
217
|
+
client.io.on :connect do
|
218
|
+
ts.write _tuple1
|
219
|
+
ts.write _tuple2
|
220
|
+
ts.write _tuple3
|
221
|
+
|
222
|
+
ts.list ["a","b"] do |list|
|
223
|
+
_result1 = list
|
224
|
+
end
|
225
|
+
|
226
|
+
ts.list ["a", "b", "c"] do |list|
|
227
|
+
_result2 = list
|
228
|
+
end
|
229
|
+
end
|
230
|
+
|
231
|
+
EM::defer do
|
232
|
+
50.times do
|
233
|
+
sleep 0.1
|
234
|
+
break if _result2
|
235
|
+
end
|
236
|
+
EM::add_timer 1 do
|
237
|
+
EM::stop
|
238
|
+
end
|
239
|
+
end
|
240
|
+
end
|
241
|
+
|
242
|
+
assert_equal _result1, [_tuple3, _tuple2, _tuple1]
|
243
|
+
assert_equal _result2, [_tuple3, _tuple1]
|
244
|
+
end
|
245
|
+
|
207
246
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: em-rocketio-linda-client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sho Hashimoto
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-
|
11
|
+
date: 2013-11-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -182,7 +182,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
182
182
|
version: '0'
|
183
183
|
requirements: []
|
184
184
|
rubyforge_project:
|
185
|
-
rubygems_version: 2.
|
185
|
+
rubygems_version: 2.0.3
|
186
186
|
signing_key:
|
187
187
|
specification_version: 4
|
188
188
|
summary: RocketIO Linda client for eventmachine
|