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 +4 -4
- data/bin/seapig-server +12 -7
- data/lib/seapig/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 867ee8657bbc0f1f9cdf2f8d56627179e10860f2
|
4
|
+
data.tar.gz: e9102a3be76c639d1717d45c1366271cc9f97721
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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] =
|
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] =
|
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
|
-
|
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
|
|
data/lib/seapig/version.rb
CHANGED
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.
|
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-
|
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
|