class KeyServer

Constants

READSIZE

Public Class Methods

new(port, callback) click to toggle source
# File lib/server/key_server.rb, line 9
def initialize port, callback
  @port     = port
  @callback = callback
end

Public Instance Methods

disconnected(socket) click to toggle source
# File lib/server/key_server.rb, line 39
def disconnected(socket)
  socket_info = Socket.unpack_sockaddr_in(socket.local_address)
  puts "A key client disconnected: #{socket_info}"
  return false
end
listen() click to toggle source

screen_server.listen

# File lib/server/key_server.rb, line 15
def listen
  Thread.new do
    Socket.tcp_server_loop @port, &register
  end
end
register() click to toggle source
# File lib/server/key_server.rb, line 21
def register
  ->(socket, client_info) {
    socket.sync = true
    Thread.new do
      loop {
        key_data = read_key(socket) or break
        @callback.( key_data )
      }
    end
  }
end

Private Instance Methods

read_key(socket) click to toggle source
# File lib/server/key_server.rb, line 33
def read_key(socket)
  return socket.readpartial( READSIZE )
  rescue EOFError; disconnected(socket)
end