module ServerEngine::SocketManager

Constants

INTERNAL_TOKEN

This token is used for communication between peers. If token is mismatched, messages will be discarded

Public Class Methods

recv_peer(peer) click to toggle source
# File lib/serverengine/socket_manager.rb, line 209
def self.recv_peer(peer)
  res = peer.read(4)
  return nil if res.nil?

  len = res.unpack('N').first
  data = peer.read(len)
  data = JSON.parse(data)
  return nil if SocketManager::INTERNAL_TOKEN != data.first

  Marshal.load(Base64.strict_decode64(data.last))
end
send_peer(peer, obj) click to toggle source
# File lib/serverengine/socket_manager.rb, line 202
def self.send_peer(peer, obj)
  data = [SocketManager::INTERNAL_TOKEN, Base64.strict_encode64(Marshal.dump(obj))]
  data = JSON.generate(data)
  peer.write [data.bytesize].pack('N')
  peer.write data
end