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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d086a2200e04156cd3d5b5ac51af52214fb327f4
4
- data.tar.gz: c530e1da28c79b35e5b99657d5435992560e64b8
3
+ metadata.gz: a15ca83f00ae8e5e6bc71edc2da3216e5b14bd74
4
+ data.tar.gz: dfa050a61c09993ae3bc68d9ab424bffb0654c94
5
5
  SHA512:
6
- metadata.gz: 310a6c7198955a044b2c8fed74dda469981afde1877c320b707a5e0829189c83550edebfc7da75d9ed5bea2ce33fa71d65c4e410816eeea85dcc153d3968b4ca
7
- data.tar.gz: 11b0d3acb0fffb21267b72769801b37ff29a3c5e4287d09b64194680b173d0980f6317a9e0fef4d2dfbb4b6f737e4f6800165875280c03e83cb7e0e762b8b77a
6
+ metadata.gz: 4e03ca5d2b34da1c771bb9e35dba97e17b07421c1bcd5c60763f213f18266ee82cda8ef1b6a72e0548e6e6a7416f9fa1d57517358f0e1c9b1be2f21b307e8d92
7
+ data.tar.gz: 8ca32be12723bfb4e55c81995a7babca40295ee31c92b7d52916efbb00abd7918b8642863aa1422c7021372770f4c2132d9f39f4aa96cb782079a3b7f54ba934
@@ -1,3 +1,7 @@
1
+ === 1.1.0 2013-11-19
2
+
3
+ * add TupleSpace#list #5
4
+
1
5
  === 1.0.0 2013-10-03
2
6
 
3
7
  * !!! protocol was updated
@@ -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
@@ -2,7 +2,7 @@ module EM
2
2
  module RocketIO
3
3
  module Linda
4
4
  class Client
5
- VERSION = "1.0.0"
5
+ VERSION = "1.1.0"
6
6
  end
7
7
  end
8
8
  end
@@ -18,6 +18,10 @@ EM::run do
18
18
 
19
19
  EM::add_periodic_timer 1 do
20
20
  ts.write [1,2, Time.now]
21
+
22
+ ts.list [1,2] do |list|
23
+ puts "#{list.size} tuples in exists"
24
+ end
21
25
  end
22
26
  end
23
27
 
@@ -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, Sinatra::RocketIO::Linda::Client::TupleInfo
200
- assert_equal _info2.class, Sinatra::RocketIO::Linda::Client::TupleInfo
201
- assert_equal _info3.class, Sinatra::RocketIO::Linda::Client::TupleInfo
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.0.0
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-10-03 00:00:00.000000000 Z
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.1.5
185
+ rubygems_version: 2.0.3
186
186
  signing_key:
187
187
  specification_version: 4
188
188
  summary: RocketIO Linda client for eventmachine