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 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