seapig-server 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: 0c8d5a4a1af89805ec7bc0969ee5901724a36898
4
- data.tar.gz: 1f0e34780c4eae224e13e940ca9a7f3113c46f98
3
+ metadata.gz: bc1dfab75d86ebb7523b8c222a9ddddc04f0f964
4
+ data.tar.gz: 70a80882af69611cb10a40c62194c6d6ef1cddc3
5
5
  SHA512:
6
- metadata.gz: 49aae39196e5eee0da10cab70517b9e07277018dbe15142fe34a7a775b5aa4065869cbe53c910e3262ebe4dab564aa13ed97ae22d55c5546f1f23356286f63dc
7
- data.tar.gz: d97c5d559b848c0dbfdb9d778a8fefed8c2bb4f61546137194232a79433c469f2b8649af288206392b1ca26074e2c0212025d9439e3ae47305fe41e905ba3b15
6
+ metadata.gz: e25f0d0f2af7aa1047e7e8b27b57a81f8694557b9e6df353e56ed6386fe1dd9ab82570570cf438d74e0d5873971b95a214f3937ccceacf08c270fd5e88b115e5
7
+ data.tar.gz: 022fb4c73f3151623c89fc9fbe754d3e995a93b27f131d7cc957980326789664f72c1572bedeaae04a2aa6894851bc7e16ea8651cadac17616ec19675c856b3e
data/bin/seapig-server CHANGED
@@ -65,6 +65,7 @@ class SeapigObject
65
65
 
66
66
  def self.gc
67
67
  used_object_ids = Set.new
68
+ Client.all.each { |client| used_object_ids << client.producing if client.producing } #objects currently being produced
68
69
  Client.all.each { |client| used_object_ids.merge(client.consumes.map { |object| object.id }) } #objects with direct consuments (no pattern matching)
69
70
  @@objects_by_id.values.each { |object| used_object_ids << object.id if Client.all.find { |client| client.produces.include?(object.id) } and Client.all.find { |client| client.consumes.find { |consumed| consumed.id.starexp? and object.id =~ consumed.id.starexp } } } #objects having producers AND wildcard consuments
70
71
  @@objects_by_id.values.each { |object| object.version.keys.each { |key| used_object_ids << key } if object.version.kind_of?(Hash) } # objects that others depend on
@@ -80,11 +81,11 @@ class SeapigObject
80
81
 
81
82
 
82
83
  def patch(patch, value, from_version, new_version)
83
- print "Patching:\n        version:"+@version.inspect+"\n from_version: "+from_version.inspect+"\n new_version: "+new_version.inspect+"\n patch_size: "+(patch and patch.size.to_s or "nil")+"\n --> "
84
+ print "Patching:\n        version:"+@version.inspect+"\n        from_version: "+from_version.inspect+"\n        new_version: "+new_version.inspect+"\n        patch_size: "+(patch and patch.size.to_s or "nil")+"\n        --> "
84
85
  if from_version == @version or from_version == 0
85
86
  puts 'clean'
86
87
  if value and @stall_after
87
- puts ' UNSTALL'
88
+ puts '        UNSTALL'
88
89
  @version = @stall_after
89
90
  @stall_after = nil
90
91
  end
@@ -94,11 +95,11 @@ class SeapigObject
94
95
  begin
95
96
  Hana::Patch.new(patch).apply(@object) if patch
96
97
  rescue Exception => e
97
- puts "Patching failed!\n Old object: "+old_object.inspect+"\n Patch: "+patch.inspect
98
+ puts "Patching failed!\n        Old object: "+old_object.inspect+"\n        Patch: "+patch.inspect
98
99
  raise e
99
100
  end
100
101
  if value == false and not @stall_after
101
- puts ' STALL'
102
+ puts '        STALL'
102
103
  @stall_after = old_version
103
104
  end
104
105
  @object.merge!(value) if value
@@ -120,13 +121,14 @@ class SeapigObject
120
121
  def upload(client, old_version, old_object, patch = nil)
121
122
  return false if @stall_after
122
123
  return false if not client.consumes.find { |object| (object == self) or self.matches?(object.id) }
123
- puts 'Sending '+self.id
124
- client.socket.send JSON.dump(
125
- action: 'object-update',
126
- id: @id,
127
- old_version: old_version,
128
- new_version: @version,
129
- patch: (patch or JsonDiff.generate(old_object, @object)))
124
+ json = JSON.dump(
125
+ action: 'object-update',
126
+ id: @id,
127
+ old_version: old_version,
128
+ new_version: @version,
129
+ patch: (patch or JsonDiff.generate(old_object, @object)))
130
+ puts "Sending %8iB %s to "%[json.size, self.id, client.id]
131
+ client.socket.send json
130
132
  end
131
133
 
132
134
 
@@ -276,12 +278,10 @@ EM.run {
276
278
  client.producer_unregister(message['pattern'])
277
279
  when 'object-patch'
278
280
  fail unless message['id'] and message['new_version'] and message['old_version']
281
+ client.release(object)
279
282
  SeapigObject.gc
280
- if SeapigObject.all.include?(object) # ignoring objects nobody listens to
281
- object.patch(message['patch'], message['value'], message['old_version'], message['new_version'])
282
- client.release(object)
283
- SeapigObject.all.each { |object| Client.all.find { |client| client.assign(object) } }
284
- end
283
+ object.patch(message['patch'], message['value'], message['old_version'], message['new_version']) if SeapigObject.all.include?(object) # ignoring objects nobody listens to
284
+ SeapigObject.all.each { |object| Client.all.find { |client| client.assign(object) } }
285
285
  when 'object-consumer-register'
286
286
  fail unless message['id']
287
287
  client.consumer_register(object)
@@ -296,9 +296,9 @@ EM.run {
296
296
  end
297
297
  processing_times << (Time.new.to_f - started_at.to_f)
298
298
  processing_times_sum += processing_times[-1]
299
- puts "Clients:\n"+Client.all.map { |client| " %-20s produces:%s consumes:%s"%[client.id,client.produces.inspect,client.consumes.map { |obj| obj.id }] }.join("\n")+"\n"
300
- puts "Objects:\n"+SeapigObject.all.map { |object| " %s"%[object.inspect] }.join("\n")+"\n"
301
- puts "Processing:\n time: %.3fs\n count: %i\n average: %.3fs\n total: %.3fs"%[processing_times[-1], processing_times.size, processing_times_sum / processing_times.size, processing_times_sum]
299
+ puts "Clients:\n"+Client.all.map { |client| "        %-20s produces:%s consumes:%s"%[client.id,client.produces.inspect,client.consumes.map { |obj| obj.id }] }.join("\n")+"\n"
300
+ puts "Objects:\n"+SeapigObject.all.map { |object| "        %s"%[object.inspect] }.join("\n")+"\n"
301
+ puts "Processing:\n        time: %.3fs\n        count: %i\n        average: %.3fs\n        total: %.3fs"%[processing_times[-1], processing_times.size, processing_times_sum / processing_times.size, processing_times_sum]
302
302
  STDOUT.flush
303
303
  }
304
304
 
@@ -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-server
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-13 00:00:00.000000000 Z
11
+ date: 2016-03-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: websocket-eventmachine-server