seapig-server 0.1.2 → 0.1.3

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: c560bf0cf2a5bab92a5b099d388f0c98a25bcbcb
4
- data.tar.gz: ad6f5bf5c8e1f4059a6e9bbeb65fd8ab8e5a22cd
3
+ metadata.gz: 867ee8657bbc0f1f9cdf2f8d56627179e10860f2
4
+ data.tar.gz: e9102a3be76c639d1717d45c1366271cc9f97721
5
5
  SHA512:
6
- metadata.gz: 12068e910301f964671983318f26ee5ea82608d3624d73b49d5f6977876ad1b6d28651e2a9b4124af03c6f3dbf643f7de047287b2ae5777b92f78809350dcc52
7
- data.tar.gz: b8d90983add600b9c1c33d46444057d7d7955a55c17f8f2e5ee5854696bef692a3e688f99c8455f61d680eedd3f14d1524887de18db4b9dfe9538c6b37b09686
6
+ metadata.gz: eb28661eaa20bad43f3935c63b66a8ce0ba95febba2f8da5bd0742ab9d1b4e0acadd8eecdbcf6f59e31ebcefca57ed34c5558a9e74a60d88527d09bf7e82d3b8
7
+ data.tar.gz: 18d635f7e0ef27f966a4d858e8ea8c4696942f4c780c27635a58ad96d754564f5bfb29c66714f560e3f1adc172971143563c184605c525608573dffe95212c80
data/bin/seapig-server CHANGED
@@ -1,6 +1,5 @@
1
1
  #!/bin/env ruby
2
2
  # coding: utf-8
3
-
4
3
  require 'websocket-eventmachine-server'
5
4
  require 'narray'
6
5
  require 'oj'
@@ -161,6 +160,7 @@ module SeapigObjectStore
161
160
  object = (@@objects_by_id[id] or self.spawn(id))
162
161
  accepted = object.version_set(data, version, requested_version)
163
162
  if accepted
163
+ puts "Version accepted" if DEBUG
164
164
  (@@dependents[id] or Set.new).each { |dependent_id|
165
165
  raise if not @@objects_by_id.has_key?(dependent_id)
166
166
  next if not (dependent = @@objects_by_id[dependent_id])
@@ -174,11 +174,11 @@ module SeapigObjectStore
174
174
  old_dependencies = (@@dependencies[id] or Set.new)
175
175
  new_dependencies = (@@dependencies[id] = Set.new(version.keys))
176
176
  (new_dependencies - old_dependencies).each { |added_dependency|
177
- object.version_needed[added_dependency] = [(@@objects_by_id[added_dependency] ? @@objects_by_id[added_dependency].version_latest : 0), (version[added_dependency] or 0)].max
177
+ object.version_needed[added_dependency] = SeapigObject.version_newer((@@objects_by_id[added_dependency] ? @@objects_by_id[added_dependency].version_latest : 0), (version[added_dependency] or 0))
178
178
  dependent_add(added_dependency, object.id)
179
179
  }
180
180
  (old_dependencies & new_dependencies).each { |kept_dependency|
181
- object.version_needed[kept_dependency] = [(@@objects_by_id[kept_dependency] ? @@objects_by_id[kept_dependency].version_latest : 0), (version[kept_dependency] or 0)].max
181
+ object.version_needed[kept_dependency] = SeapigObject.version_newer((@@objects_by_id[kept_dependency] ? @@objects_by_id[kept_dependency].version_latest : 0), (version[kept_dependency] or 0))
182
182
  }
183
183
  (old_dependencies - new_dependencies).each { |removed_dependency|
184
184
  object.version_needed.delete(removed_dependency)
@@ -265,17 +265,23 @@ private
265
265
 
266
266
 
267
267
  def self.version_newer?(latest,vb)
268
+ # return true if latest.nil? and (not vb.nil?)
269
+ # return false if (not latest.nil?) and vb.nil?
268
270
  return latest < vb if (not latest.kind_of?(Hash)) and (not vb.kind_of?(Hash))
269
271
  return true if (not latest.kind_of?(Hash)) and ( vb.kind_of?(Hash))
270
272
  return false if ( latest.kind_of?(Hash)) and (not vb.kind_of?(Hash))
271
273
  (latest.keys & vb.keys).each { |key|
272
- # return true if latest[key] and (vb[key] == nil or vb[key] > latest[key])
273
- return true if vb[key] > latest[key]
274
+ return true if version_newer?(latest[key], vb[key])
274
275
  }
275
276
  return vb.size < latest.size #THINK: is this the right way to go...
276
277
  end
277
278
 
278
279
 
280
+ def self.version_newer(va,vb)
281
+ version_newer?(va,vb) ? vb : va
282
+ end
283
+
284
+
279
285
  def consumer_register(pattern,client)
280
286
  return false if ((not pattern.starexp?) and @direct_consumers.include?(client)) or (pattern.starexp? and @wildcard_consumers[client] and @wildcard_consumers[client].include?(pattern))
281
287
  if pattern.starexp?
@@ -600,7 +606,7 @@ class Client
600
606
  raise "Client already producing something (producing: %s, trying to assign: %s)"%[@producing.inspect, [object_id,object_version].inspect] if @producing
601
607
  raise "Can't produce that pattern: "+@produces.inspect+" "+object_id.inspect if not @produces.find { |pattern| object_id =~ pattern.starexp }
602
608
  puts "Assigning:\n        "+object_id+':'+object_version.inspect+' to: '+self.id if DEBUG
603
- @socket.send Oj.dump("action" => 'object-produce', "id" => object_id)
609
+ @socket.send Oj.dump("action" => 'object-produce', "id" => object_id, "version"=>object_version)
604
610
  @producing = [object_id, object_version]
605
611
  end
606
612
 
@@ -652,7 +658,6 @@ end
652
658
  # * change protocol to use "pattern" instead of "id"
653
659
  # * change "object-patch" to something nicer
654
660
 
655
-
656
661
  processing_times = []
657
662
  processing_times_sum = 0
658
663
 
@@ -1,3 +1,3 @@
1
1
  module Seapig
2
- VERSION = "0.1.2"
2
+ VERSION = "0.1.3"
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.1.2
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - yunta
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-10-16 00:00:00.000000000 Z
11
+ date: 2016-11-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: websocket-eventmachine-server