seapig-server 0.2.0 → 0.2.1
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 -12
- data/lib/seapig-server/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b8d1f455c52ec13b86faf4b292efdff4c3271af4
|
4
|
+
data.tar.gz: ad58fb2f509fd5f61e70e3d57380d550862cfc96
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ff1c37ef39bb2348c3722c510ded44ceac377393a57b1ed6e70d6c8fb23c727389ba2883b1b4eb1e871649784319e17b186a690d2aa9c6ae9dc653ccfefc27b6
|
7
|
+
data.tar.gz: 79a48ab267ec13b1dcd5661c361143e2b6178cd4b186129a9f37a576acb13b0a3963bd32272b524f814e82b2695dfc77ff514c81fc7ea05d0213f64bc44358d9
|
data/bin/seapig-server
CHANGED
@@ -65,8 +65,6 @@ end
|
|
65
65
|
|
66
66
|
|
67
67
|
if OPTIONS["debug-memory"]
|
68
|
-
#require 'memory_profiler'
|
69
|
-
#MemoryProfiler.start
|
70
68
|
require 'objspace'
|
71
69
|
ObjectSpace.trace_object_allocations_start
|
72
70
|
$dump_heap = false
|
@@ -305,6 +303,8 @@ class SeapigObjectStore
|
|
305
303
|
}
|
306
304
|
end
|
307
305
|
enqueue(object)
|
306
|
+
else
|
307
|
+
client.object_destroy(id) if data != nil
|
308
308
|
end
|
309
309
|
|
310
310
|
if was_producing and not client.producing
|
@@ -863,11 +863,12 @@ class SeapigWebsocketClient
|
|
863
863
|
end
|
864
864
|
|
865
865
|
|
866
|
-
def destroy
|
867
|
-
puts "Client disconnected
|
866
|
+
def destroy(reason)
|
867
|
+
puts "Client %s disconnected: %s\n"%[id, reason.inspect] if DEBUG
|
868
868
|
@@clients_by_socket.delete(@socket)
|
869
869
|
@seapig_object_store.client_unregister(self, self)
|
870
870
|
@seapig_object_store.connection_unregister(self)
|
871
|
+
@socket.close
|
871
872
|
end
|
872
873
|
|
873
874
|
|
@@ -983,17 +984,17 @@ class SeapigWebsocketClient
|
|
983
984
|
|
984
985
|
|
985
986
|
def self.send_pings
|
986
|
-
@@clients_by_socket.keys.each { |
|
987
|
+
@@clients_by_socket.keys.each { |client_socket| client_socket.ping }
|
987
988
|
end
|
988
989
|
|
989
990
|
|
990
991
|
def self.send_heartbeats
|
991
|
-
@@clients_by_socket.each_pair { |
|
992
|
+
@@clients_by_socket.each_pair { |client_socket, client| client_socket.send Oj.dump('action' => 'heartbeat') if client.options['heartbeat'] }
|
992
993
|
end
|
993
994
|
|
994
995
|
|
995
996
|
def self.check_ping_timeouts
|
996
|
-
@@clients_by_socket.each_pair { |
|
997
|
+
@@clients_by_socket.each_pair { |client_socket, client| SeapigWebsocketClient[client_socket].destroy("Ping timeout") if Time.new - client.pong_time > 60 }
|
997
998
|
end
|
998
999
|
|
999
1000
|
end
|
@@ -1035,8 +1036,8 @@ EM.run {
|
|
1035
1036
|
WebSocket::EventMachine::Server.start(host: HOST, port: PORT) { |client_socket|
|
1036
1037
|
|
1037
1038
|
client_socket.onmessage &safety_net { |message_json|
|
1039
|
+
next if not client = SeapigWebsocketClient[client_socket]
|
1038
1040
|
started_at = Time.new
|
1039
|
-
client = SeapigWebsocketClient[client_socket]
|
1040
1041
|
message = Oj.load message_json
|
1041
1042
|
puts "-"*80 + ' ' + Time.new.to_s if DEBUG
|
1042
1043
|
print "Message:\n from: %-20s\n action: %-30s\n param: %-50s "%[client.id, message['action'], Oj.dump(message.select { |k,v| ['pattern','id','options'].include?(k) })] if DEBUG
|
@@ -1077,8 +1078,9 @@ EM.run {
|
|
1077
1078
|
|
1078
1079
|
|
1079
1080
|
client_socket.onopen &safety_net { SeapigWebsocketClient.new(seapig_object_store, client_socket) }
|
1080
|
-
client_socket.onclose &safety_net { SeapigWebsocketClient[client_socket].destroy if SeapigWebsocketClient[client_socket] }
|
1081
|
-
client_socket.
|
1081
|
+
client_socket.onclose &safety_net { SeapigWebsocketClient[client_socket].destroy("Connection closed") if SeapigWebsocketClient[client_socket] }
|
1082
|
+
client_socket.onerror &safety_net { |error| SeapigWebsocketClient[client_socket].destroy(error) if SeapigWebsocketClient[client_socket] }
|
1083
|
+
client_socket.onpong &safety_net { SeapigWebsocketClient[client_socket].pong if SeapigWebsocketClient[client_socket] }
|
1082
1084
|
}
|
1083
1085
|
|
1084
1086
|
puts "Listening on %s:%s"%[HOST,PORT] if INFO or DEBUG
|
@@ -1097,8 +1099,6 @@ EM.run {
|
|
1097
1099
|
if $dump_heap
|
1098
1100
|
$dump_heap = false
|
1099
1101
|
GC.start
|
1100
|
-
#MemoryProfiler.stop.pretty_print(to_file: "memory_"+Time.new.strftime("%Y%m%d%H%M%S"))
|
1101
|
-
#MemoryProfiler.start
|
1102
1102
|
open("heap_dump_"+Time.new.strftime("%Y%m%d%H%M%S"),"w") { |file| ObjectSpace.dump_all(output: file) }
|
1103
1103
|
end
|
1104
1104
|
})
|
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.2.
|
4
|
+
version: 0.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- yunta
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-03-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: websocket-eventmachine-server
|
@@ -94,7 +94,7 @@ dependencies:
|
|
94
94
|
- - ">="
|
95
95
|
- !ruby/object:Gem::Version
|
96
96
|
version: '0'
|
97
|
-
description:
|
97
|
+
description: Seapig is a master-slave object sharing system.
|
98
98
|
email:
|
99
99
|
- maciej.blomberg@mikoton.com
|
100
100
|
executables:
|