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