seapig-client-ruby 0.2.0 → 0.2.1
Sign up to get free protection for your applications and to get access to all the features.
- 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
|