em-rocketio-linda-client 1.0.0 → 1.1.0
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.
- 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
|