tupelo 0.8 → 0.9

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: 1a19d73a0cfead5fa7d4078521ac079bc69b6654
4
- data.tar.gz: 24d0e5206aa04688072768f90c630d95bff54636
3
+ metadata.gz: 241bdc610aa513222cd452c8624bcf69cd9b2686
4
+ data.tar.gz: 674756c0a1156745007199a4e476df72df7183ef
5
5
  SHA512:
6
- metadata.gz: c06d448f481f6e18b2d944e2961af9fb3007a2e56eaf69b65fa82975023c622abf5beca87142f3e844af0fa1e4e7eba2905b8c6c83b06c4193309d33345fac21
7
- data.tar.gz: 97163417cc8366be36adb87b3ee3b1b1cbfcedf007dc817d579782231790c0cdaf0177c4104abde51fd4034c40ff88d2e90ef836442a66944b4c9a00cee7f9d4
6
+ metadata.gz: c6b2e338a9d11abfe109ed608b8b51807bc69994a75824978c37f0b2ad00327efc080b8e8ee1eb85303b9fee3961045fbae1b2b9bc6fa5c6776a743e7f818f67
7
+ data.tar.gz: 026cf80f84292493865f5f644f54ce883defa9351d99c6268c02791d500edd88cbeaa0cc4c25c556d0a96f3cee424f33dea1a4d97d1f421bfd1532803a323d21
@@ -160,14 +160,11 @@ class Tupelo::Client
160
160
 
161
161
  def read_messages_from_seq
162
162
  seq.each do |msg|
163
- ## skip msg if tags not relevant
164
- ## (and client must apply tags--i.e. not using multicast)
165
163
  self << msg
166
164
  end
167
165
  end
168
166
 
169
167
  def run_worker_thread
170
- update_to_tick @start_tick
171
168
  run_request_loop
172
169
  rescue => ex
173
170
  log.error ex
@@ -222,7 +219,7 @@ class Tupelo::Client
222
219
 
223
220
  log.info "requesting tuplespace from arc"
224
221
  arc << [GET_TUPLESPACE, nil, tick]
225
- ## replace nil with template tuples, if any
222
+ ## replace nil with tags, if any
226
223
 
227
224
  begin
228
225
  arc_tick = arc.read[0]
@@ -256,19 +253,28 @@ class Tupelo::Client
256
253
  def handle_message msg
257
254
  log.debug {"seq sent #{msg.inspect}"}
258
255
 
259
- if msg.global_tick != global_tick + 1
260
- if msg.global_tick < global_tick + 1
261
- log.debug {"discarding redundant message at #{msg.global_tick}"}
262
- # due to archiver timing, for example
263
- return
264
- elsif msg.global_tick > global_tick + 1
265
- log.fatal "message out of order: #{msg.inspect}, " +
266
- "received at global_tick=#{global_tick}"
267
- raise "fatal error"
256
+ if msg.control?
257
+ client.handle_ack msg
258
+ op_type, *args = msg.control_op
259
+ if op_type == Funl::SUBSCRIBE_ALL
260
+ update_to_tick msg.global_tick
261
+ else
262
+ raise "Unimplemented: #{msg.inspect}"
268
263
  end
264
+ return
265
+ end
266
+
267
+ if !global_tick
268
+ raise "bug: should have subscribed and received ack before data"
269
+ end
270
+
271
+ if msg.global_tick < global_tick + 1
272
+ log.debug {"discarding redundant message at #{msg.global_tick}"}
273
+ # due to archiver timing, for example
274
+ return
269
275
  end
270
276
 
271
- @global_tick += 1
277
+ @global_tick = msg.global_tick
272
278
  @delta = 0
273
279
 
274
280
  record_history msg
data/lib/tupelo/client.rb CHANGED
@@ -27,6 +27,7 @@ module Tupelo
27
27
  def start
28
28
  super
29
29
  worker.start
30
+ subscribe_all ## for now, but eventually should start without subs
30
31
  end
31
32
 
32
33
  def stop
@@ -1,3 +1,3 @@
1
1
  module Tupelo
2
- VERSION = "0.8"
2
+ VERSION = "0.9"
3
3
  end
data/test/lib/mock-msg.rb CHANGED
@@ -44,4 +44,8 @@ class MockMessage
44
44
  def hash
45
45
  @client_id.hash ^ @local_tick.hash ^ @global_tick.hash
46
46
  end
47
+
48
+ def control?
49
+ false
50
+ end
47
51
  end
@@ -10,8 +10,7 @@ Tupelo.application do |app|
10
10
  child_pid = app.child do |client|
11
11
  # Test that tuples written before this client started are readable.
12
12
  a = client.read_all [Integer]
13
- client.write result: a
14
- sleep 0.1
13
+ client.write_wait result: a
15
14
  end
16
15
 
17
16
  # Normally we would wait using tuples, but in this case we want more
metadata CHANGED
@@ -1,69 +1,69 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tupelo
3
3
  version: !ruby/object:Gem::Version
4
- version: '0.8'
4
+ version: '0.9'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Joel VanderWerf
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-09-19 00:00:00.000000000 Z
11
+ date: 2013-10-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: atdo
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - '>='
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
19
  version: '0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - '>='
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: easy-serve
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - '>='
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
33
  version: '0'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - '>='
38
+ - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: funl
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - '>='
45
+ - - ">="
46
46
  - !ruby/object:Gem::Version
47
47
  version: '0'
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - '>='
52
+ - - ">="
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: object-template
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - '>='
59
+ - - ">="
60
60
  - !ruby/object:Gem::Version
61
61
  version: '0'
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - '>='
66
+ - - ">="
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
69
  description: Distributed tuplespace.
@@ -177,28 +177,28 @@ licenses:
177
177
  metadata: {}
178
178
  post_install_message:
179
179
  rdoc_options:
180
- - --quiet
181
- - --line-numbers
182
- - --inline-source
183
- - --title
180
+ - "--quiet"
181
+ - "--line-numbers"
182
+ - "--inline-source"
183
+ - "--title"
184
184
  - tupelo
185
- - --main
185
+ - "--main"
186
186
  - README.md
187
187
  require_paths:
188
188
  - lib
189
189
  required_ruby_version: !ruby/object:Gem::Requirement
190
190
  requirements:
191
- - - '>='
191
+ - - ">="
192
192
  - !ruby/object:Gem::Version
193
193
  version: '0'
194
194
  required_rubygems_version: !ruby/object:Gem::Requirement
195
195
  requirements:
196
- - - '>='
196
+ - - ">="
197
197
  - !ruby/object:Gem::Version
198
198
  version: '0'
199
199
  requirements: []
200
200
  rubyforge_project:
201
- rubygems_version: 2.1.3
201
+ rubygems_version: 2.1.4
202
202
  signing_key:
203
203
  specification_version: 4
204
204
  summary: Distributed tuplespace