seapig-server 0.2.0 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
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: