seapig-client 0.0.5 → 0.0.6

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: 40e03252696dd652e32f57c27c9eb21bc5b46305
4
- data.tar.gz: 57da37b0536d9ce54d22d08b697140d7828bf59c
3
+ metadata.gz: e86d63970d638a4afdcc306f55860780274b6ad4
4
+ data.tar.gz: bb6e591c5b89a89873abda0bbf3742e86a4d9ca3
5
5
  SHA512:
6
- metadata.gz: 466f428a9e0ec11d2adec3595a90ae6abdb1cbd36cd1e06165a95e7658404d431d0f2264d77f08ac7e9b53512804ca4b962425d4fb82fd642efcedcf052c8ef9
7
- data.tar.gz: d2c93c3b8427851dfea92da95c77f81abea1693294916a27ce25107c6ea6d44cc7f2ab887d344a2f732bad4aca1b05edc3a75a1ba75febb3e8eb31447c58a236
6
+ metadata.gz: 2b6bbf8d050f5b3ad6bfb568d6e8d2921839b19f88fe71ea58b0d7bc19b268e8e60231641cb8319f337c20e4a23dcf913a8a12b06156f54371ae17bb18e0339e
7
+ data.tar.gz: 9dd877bcf3f0d5a55061e9d0880c055f552e4f7147c3fe750e5c127a75ad04797c97f2ab2d02f553ccdeade3084c7d4c0946124873140df566aa9f933ef75c3b
data/bin/seapig-observer CHANGED
@@ -7,6 +7,7 @@ EM.run {
7
7
 
8
8
  SeapigServer.new(ARGV[0],name: 'observer').slave(ARGV[1]).onchange { |what|
9
9
  puts "-"*80 + " " + Time.new.to_s
10
+ puts what.object_id
10
11
  puts what.version
11
12
  pp what
12
13
  puts
data/lib/seapig/client.rb CHANGED
@@ -62,8 +62,9 @@ class SeapigServer
62
62
  object.destroy(message) if object.matches?(message['id'])
63
63
  }
64
64
  when 'object-produce'
65
- @master_objects[message['id']].onproduce_proc.call(message['id']) if @master_objects[message['id']].onproduce_proc
66
- @master_objects[message['id']].upload(0,{}) if @master_objects[message['id']]
65
+ handler = @master_objects.keys.find { |key| key.include?('*') and (message['id'] =~ Regexp.new(Regexp.escape(key).gsub('\*','.*?'))) or (message['id'] == key) }
66
+ @master_objects[handler].onproduce_proc.call(message['id']) if @master_objects[handler].onproduce_proc
67
+ @master_objects[handler].upload(0,{},message['id']) if @master_objects[handler]
67
68
  else
68
69
  p :wtf, message
69
70
  end
@@ -88,7 +89,7 @@ class SeapigServer
88
89
 
89
90
 
90
91
 
91
- def disconnect(detach_fd: false)
92
+ def disconnect(detach_fd = false)
92
93
  @connected = false
93
94
  if @timeout_timer
94
95
  @timeout_timer.cancel
@@ -129,7 +130,7 @@ end
129
130
 
130
131
  class SeapigObject < Hash
131
132
 
132
- attr_accessor :version, :object_id, :valid, :onproduce_proc, :stall
133
+ attr_accessor :version, :object_id, :valid, :onproduce_proc, :stall, :parent, :destroyed
133
134
 
134
135
 
135
136
  def matches?(id)
@@ -137,7 +138,7 @@ class SeapigObject < Hash
137
138
  end
138
139
 
139
140
 
140
- def initialize(server, object_id)
141
+ def initialize(server, object_id, parent = nil)
141
142
  @server = server
142
143
  @object_id = object_id
143
144
  @version = 0
@@ -146,6 +147,8 @@ class SeapigObject < Hash
146
147
  @valid = false
147
148
  @shadow = JSON.load(JSON.dump(self))
148
149
  @stall = false
150
+ @parent = parent
151
+ @destroyed = false
149
152
  end
150
153
 
151
154
 
@@ -194,7 +197,7 @@ class SeapigObject < Hash
194
197
  old_object = @shadow
195
198
  @version += 1
196
199
  @shadow = sanitized
197
- upload(old_version, old_object)
200
+ upload(old_version, old_object, @object_id)
198
201
  end
199
202
 
200
203
 
@@ -203,9 +206,9 @@ class SeapigObject < Hash
203
206
  end
204
207
 
205
208
 
206
- def upload(old_version, old_object)
209
+ def upload(old_version, old_object, object_id)
207
210
  message = {
208
- id: @object_id,
211
+ id: object_id,
209
212
  action: 'object-patch',
210
213
  old_version: old_version,
211
214
  new_version: @version,
@@ -228,16 +231,18 @@ class SeapigWildcardObject < SeapigObject
228
231
 
229
232
 
230
233
  def patch(message)
231
- self[message['id']] ||= SeapigObject.new(@server, message['id'])
234
+ self[message['id']] ||= SeapigObject.new(@server, message['id'], self)
232
235
  self[message['id']].patch(message)
233
236
  # puts JSON.dump(self)
234
- @onchange.call(self) if @onchange
237
+ @onchange_proc.call(self[message['id']]) if @onchange_proc
235
238
  end
236
239
 
237
240
 
238
241
  def destroy(message)
239
- self.delete(message['id'])
240
- @onchange.call(self) if @onchange
242
+ if destroyed = self.delete(message['id'])
243
+ destroyed.destroyed = true
244
+ @onchange_proc.call(destroyed) if @onchange_proc
245
+ end
241
246
  end
242
247
 
243
248
  end
@@ -1,3 +1,3 @@
1
1
  module Seapig
2
- VERSION = "0.0.5"
2
+ VERSION = "0.0.6"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: seapig-client
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - yunta
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-03-20 00:00:00.000000000 Z
11
+ date: 2016-03-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: websocket-eventmachine-client