seapig-client-ruby 0.2.0 → 0.2.1
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/bin/seapig-observer +2 -1
- data/bin/seapig-worker +2 -1
- data/lib/seapig-client-ruby/client.rb +14 -14
- data/lib/seapig-client-ruby/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 10d50a61c5dd7f36d2a6530bdf9d303dec754827
|
4
|
+
data.tar.gz: b4148df117120608d84f0f41c7cb4cdb363f2202
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 90ea378ee0ee331981f43c32f4801bb3435f1969545f83462b7862058fc453c69dcbb95758e27ecd3d5461cb316d65aedff2cc9bee5442592caf1c152b10c947
|
7
|
+
data.tar.gz: 2062f52ae81b2aba65d8a79ace7ccfa8db6820d140197886d67fc634f399aba3334888cd76aeb907f8196b6740100d549dcae8f77a8b8b341fae536a2fe2dba7
|
data/bin/seapig-observer
CHANGED
@@ -7,12 +7,13 @@ require 'pp'
|
|
7
7
|
|
8
8
|
OPTIONS = Slop.parse { |o|
|
9
9
|
o.string '-c', '--connect', "Seapig server address (default: ws://127.0.0.1:3001)", default: "ws://127.0.0.1:3001"
|
10
|
+
o.bool '-d', '--debug', 'Show debug messages'
|
10
11
|
o.on '-h', '--help' do puts o; exit end
|
11
12
|
}
|
12
13
|
|
13
14
|
EM.run {
|
14
15
|
|
15
|
-
SeapigClient.new(OPTIONS["connect"],name: 'observer').slave(OPTIONS.arguments[0]).
|
16
|
+
SeapigClient.new(OPTIONS["connect"], name: 'observer', debug: OPTIONS.debug?).slave(OPTIONS.arguments[0]).onstatuschange { |what|
|
16
17
|
puts "-"*80 + " " + Time.new.to_s
|
17
18
|
puts what.id
|
18
19
|
if what.destroyed
|
data/bin/seapig-worker
CHANGED
@@ -8,6 +8,7 @@ STDOUT.sync = true
|
|
8
8
|
|
9
9
|
OPTIONS = Slop.parse { |o|
|
10
10
|
o.string '-c', '--connect', "Seapig server address (default: ws://127.0.0.1:3001)", default: "ws://127.0.0.1:3001"
|
11
|
+
o.bool '-d', '--debug', 'Show debug messages'
|
11
12
|
o.on '-h', '--help' do puts o; exit end
|
12
13
|
}
|
13
14
|
|
@@ -33,7 +34,7 @@ end
|
|
33
34
|
|
34
35
|
EM.run {
|
35
36
|
|
36
|
-
client = SeapigClient.new(OPTIONS["connect"], name: 'worker')
|
37
|
+
client = SeapigClient.new(OPTIONS["connect"], name: 'worker', debug: OPTIONS.debug?)
|
37
38
|
|
38
39
|
Producer.all.each { |producer|
|
39
40
|
producer.patterns.each { |pattern|
|
@@ -68,6 +68,7 @@ class SeapigClient
|
|
68
68
|
}
|
69
69
|
@master_objects.each_pair { |id, object|
|
70
70
|
@socket.send JSON.dump(action: 'object-producer-register', pattern: id, :"version-known" => object.version)
|
71
|
+
object.children.each { |child_id, child| child.upload(0, {}, child.version, true) } if id.include?('*')
|
71
72
|
}
|
72
73
|
@last_communication_at = Time.new.to_f
|
73
74
|
}
|
@@ -100,17 +101,17 @@ class SeapigClient
|
|
100
101
|
}
|
101
102
|
when 'object-destroy'
|
102
103
|
@slave_objects.each_pair { |id, object|
|
103
|
-
object.destroy(message) if object.matches(message['id'])
|
104
|
+
object.destroy(message['id']) if object.matches(message['id'])
|
104
105
|
}
|
105
106
|
@master_objects.each_pair { |id, object|
|
106
|
-
object.destroy(message) if object.matches(message['id'])
|
107
|
+
object.destroy(message['id']) if object.matches(message['id'])
|
107
108
|
}
|
108
109
|
when 'object-produce'
|
109
110
|
handler = @master_objects.values.find { |object| object.matches(message['id']) }
|
110
111
|
puts 'Seapig server submitted invalid "produce" request: '+message.inspect if (not handler) and @options[:debug]
|
111
112
|
handler.produce(message['id'],message['version-inferred']) if handler
|
112
113
|
else
|
113
|
-
raise 'Seapig server submitted an unsupported message: '+message.inspect
|
114
|
+
raise 'Seapig server submitted an unsupported message: '+message.inspect if @options[:debug]
|
114
115
|
end
|
115
116
|
@last_communication_at = Time.new.to_f
|
116
117
|
}
|
@@ -133,7 +134,7 @@ class SeapigClient
|
|
133
134
|
@reconnection_timer = nil
|
134
135
|
end
|
135
136
|
if @socket
|
136
|
-
if detach_fd
|
137
|
+
if detach_fd #FIXME: this is, most likely, broken
|
137
138
|
IO.new(@socket.detach).close
|
138
139
|
@socket.onclose {}
|
139
140
|
@socket_onclose.call("fd detach", "fd detach")
|
@@ -146,7 +147,7 @@ class SeapigClient
|
|
146
147
|
end
|
147
148
|
|
148
149
|
|
149
|
-
def detach_fd
|
150
|
+
def detach_fd #FIXME: this is, most likely, broken
|
150
151
|
disconnect(true)
|
151
152
|
end
|
152
153
|
|
@@ -350,11 +351,10 @@ class SeapigMasterObject < SeapigObject
|
|
350
351
|
end
|
351
352
|
end
|
352
353
|
|
353
|
-
private
|
354
354
|
|
355
355
|
def upload(version_old, data_old, version_new, data_new)
|
356
356
|
if @client.connected
|
357
|
-
if version_old == 0 or data_new == false
|
357
|
+
if version_old == 0 or data_new == false or data_new == true
|
358
358
|
@client.socket.send JSON.dump(id: @id, action: 'object-patch', :"version-new" => version_new, value: data_new)
|
359
359
|
else
|
360
360
|
diff = JsonDiff.generate(data_old, data_new)
|
@@ -377,7 +377,7 @@ class SeapigWildcardSlaveObject < SeapigSlaveObject
|
|
377
377
|
|
378
378
|
|
379
379
|
def patch(message)
|
380
|
-
self[message['id']] ||= SeapigSlaveObject.new(@client, message['id'],{}).onchange(&@onchange_proc)
|
380
|
+
self[message['id']] ||= SeapigSlaveObject.new(@client, message['id'],{}).onchange(&@onchange_proc).onstatuschange(&@onstatuschange_proc).ondestroy(&@ondestroy_proc)
|
381
381
|
self[message['id']].patch(message)
|
382
382
|
end
|
383
383
|
|
@@ -393,16 +393,17 @@ end
|
|
393
393
|
|
394
394
|
class SeapigWildcardMasterObject < SeapigMasterObject
|
395
395
|
|
396
|
+
attr_reader :children
|
397
|
+
|
396
398
|
def initialize(client, id, options)
|
397
399
|
super(client, id, options)
|
398
|
-
@children =
|
400
|
+
@children = {}
|
399
401
|
@options = options
|
400
402
|
end
|
401
403
|
|
402
404
|
|
403
405
|
def [](id)
|
404
|
-
|
405
|
-
@children[(key or id)] ||= SeapigMasterObject.new(@client, id, @options)
|
406
|
+
@children[id] ||= SeapigMasterObject.new(@client, id, @options).ondestroy(&@ondestroy_proc)
|
406
407
|
end
|
407
408
|
|
408
409
|
|
@@ -416,9 +417,8 @@ class SeapigWildcardMasterObject < SeapigMasterObject
|
|
416
417
|
end
|
417
418
|
|
418
419
|
|
419
|
-
def destroy(
|
420
|
-
|
421
|
-
return if not (key and destroyed = @children[key])
|
420
|
+
def destroy(id)
|
421
|
+
return if not (destroyed = @children.delete(id))
|
422
422
|
destroyed.destroy(id)
|
423
423
|
end
|
424
424
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: seapig-client-ruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- yunta
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-03-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: websocket-eventmachine-client
|