seapig-server 0.1.2 → 0.1.3

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: 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