seapig-client 0.0.5 → 0.0.6

Sign up to get free protection for your applications and to get access to all the features.
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