seapig-server 0.0.3 → 0.0.4
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 +26 -13
- 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: b946a0834e2eba8cd49a00ceec8e851c757955f6
|
4
|
+
data.tar.gz: 5466488806f71b47122e604224f7f8ca8d560963
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5d0378f7d671db57df6366d5e1f58051a45fa7eeacda6aa9c222dde0a337c7e6d363d38d65d7a3c95d03f99258b9cbfa9091cc53c806c7071f79ae21b5ad0217
|
7
|
+
data.tar.gz: 34de72650fad7d8b8476757927c40abe2b8f79ba130035c2a07c3aa316f33cb7464edd97eb06da12379c9db2a294d1a53dac1babb4fc26446a1919404ef87a6c
|
data/bin/seapig-server
CHANGED
@@ -57,6 +57,7 @@ class SeapigObject
|
|
57
57
|
@valid = false
|
58
58
|
@object = {}
|
59
59
|
@version = 0
|
60
|
+
@stall_after = nil
|
60
61
|
@@objects_by_id[@id] = self
|
61
62
|
end
|
62
63
|
|
@@ -78,34 +79,45 @@ class SeapigObject
|
|
78
79
|
|
79
80
|
|
80
81
|
def patch(patch, value, from_version, new_version)
|
81
|
-
print "Patching:\n
|
82
|
+
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 --> "
|
82
83
|
if from_version == @version or from_version == 0
|
83
|
-
puts '
|
84
|
+
puts 'clean'
|
85
|
+
if value and @stall_after
|
86
|
+
puts ' UNSTALL'
|
87
|
+
@version = @stall_after
|
88
|
+
@stall_after = nil
|
89
|
+
end
|
84
90
|
old_object = JSON.load(JSON.dump(@object))
|
85
91
|
old_version = @version
|
86
|
-
@object.clear if from_version == 0 or value
|
92
|
+
@object.clear if from_version == 0 or value != nil
|
87
93
|
begin
|
88
94
|
Hana::Patch.new(patch).apply(@object) if patch
|
89
95
|
rescue Exception => e
|
90
|
-
puts "Patching failed!\n
|
96
|
+
puts "Patching failed!\n Old object: "+old_object.inspect+"\n Patch: "+patch.inspect
|
91
97
|
raise e
|
92
98
|
end
|
99
|
+
if value == false and not @stall_after
|
100
|
+
puts ' STALL'
|
101
|
+
@stall_after = old_version
|
102
|
+
end
|
93
103
|
@object.merge!(value) if value
|
94
104
|
@version = new_version
|
95
|
-
Client.all.each { |client|
|
105
|
+
Client.all.each { |client| upload(client, old_version, old_object) }
|
96
106
|
SeapigObject.all.each { |object| object.check_validity }
|
97
107
|
elsif from_version > @version
|
98
|
-
puts "
|
108
|
+
puts "lost some updates, reinitializing object"
|
99
109
|
@version = 0
|
100
110
|
@object.clear
|
101
111
|
@valid = false
|
112
|
+
#assign mb?
|
102
113
|
else
|
103
|
-
puts "
|
114
|
+
puts "late update, ignoring"
|
104
115
|
end
|
105
116
|
end
|
106
117
|
|
107
118
|
|
108
|
-
def
|
119
|
+
def upload(client, old_version, old_object, patch = nil)
|
120
|
+
return false if @stall_after
|
109
121
|
return false if not client.consumes.find { |object| (object == self) or self.matches?(object.id) }
|
110
122
|
puts 'Sending '+self.id
|
111
123
|
client.socket.send JSON.dump(
|
@@ -125,7 +137,7 @@ class SeapigObject
|
|
125
137
|
|
126
138
|
|
127
139
|
def inspect
|
128
|
-
'<SO:%s:%s:%s>'%[@id, @version, (@valid and 'V' or 'I')]
|
140
|
+
'<SO:%s:%s:%s%s>'%[@id, @version, (@valid and 'V' or 'I'), (@stall_after and 'S' or 'U')]
|
129
141
|
end
|
130
142
|
|
131
143
|
end
|
@@ -187,7 +199,7 @@ class Client
|
|
187
199
|
Client.all.each { |client| client.produces.each { |pattern| SeapigObject[pattern] if (not pattern.starexp?) and (pattern =~ object.id.starexp) } } if object.id.starexp?
|
188
200
|
SeapigObject.matching(object.id).each { |object|
|
189
201
|
Client.all.find { |client| client.assign(object) }
|
190
|
-
object.
|
202
|
+
object.upload(self,0,{}) if object.valid
|
191
203
|
}
|
192
204
|
end
|
193
205
|
|
@@ -277,9 +289,10 @@ EM.run {
|
|
277
289
|
end
|
278
290
|
processing_times << (Time.new.to_f - started_at.to_f)
|
279
291
|
processing_times_sum += processing_times[-1]
|
280
|
-
puts "Clients:\n"+Client.all.map { |client| "
|
281
|
-
puts "Objects:\n"+SeapigObject.all.map { |object| "
|
282
|
-
puts "Processing:\n
|
292
|
+
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"
|
293
|
+
puts "Objects:\n"+SeapigObject.all.map { |object| " %s"%[object.inspect] }.join("\n")+"\n"
|
294
|
+
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]
|
295
|
+
STDOUT.flush
|
283
296
|
}
|
284
297
|
|
285
298
|
|
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.0.
|
4
|
+
version: 0.0.4
|
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-
|
11
|
+
date: 2016-03-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: websocket-eventmachine-server
|