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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: b3225ad7e10a412888e773d999c3891af4a69d12
4
- data.tar.gz: a9dba35e923b127d8604245d2e70071eb76dc18e
3
+ metadata.gz: b8d1f455c52ec13b86faf4b292efdff4c3271af4
4
+ data.tar.gz: ad58fb2f509fd5f61e70e3d57380d550862cfc96
5
5
  SHA512:
6
- metadata.gz: cfcc0da84581bf7c38e23e5f53ebffba31f3bf8f1fa4ba92d9050643c44f45adca72eeb7b46f3bafd507aabd867de0759b16af4641dd9b3f9e6750df4520ee72
7
- data.tar.gz: 4b613077e54af4b556a9456d1df492f0dd80cf06eab0b33a13c9963d819db113e59d23fd7e53e2b1bb861dab1db7688c59d9114acd80ed4b4e23e8176a89e394
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:\n        "+@index.to_s if DEBUG
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 { |socket| socket.ping }
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 { |socket,client| socket.send Oj.dump('action' => 'heartbeat') if client.options['heartbeat'] }
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 { |socket,client| socket.close if Time.new - client.pong_time > 60 }
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.onpong &safety_net { SeapigWebsocketClient[client_socket].pong }
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
  })
@@ -1,3 +1,3 @@
1
1
  module SeapigServer
2
- VERSION = "0.2.0"
2
+ VERSION = "0.2.1"
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.2.0
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-02-26 00:00:00.000000000 Z
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: meh
97
+ description: Seapig is a master-slave object sharing system.
98
98
  email:
99
99
  - maciej.blomberg@mikoton.com
100
100
  executables: