Class: KeyServer

Inherits:
Object
  • Object
show all
Includes:
Celluloid
Defined in:
lib/server/key_server.rb

Constant Summary collapse

READSIZE =
4096

Instance Method Summary collapse

Constructor Details

#initialize(port, callback) ⇒ KeyServer

Returns a new instance of KeyServer.



9
10
11
12
# File 'lib/server/key_server.rb', line 9

def initialize port, callback
  @port     = port
  @callback = callback
end

Instance Method Details

#disconnected(socket) ⇒ Object



39
40
41
42
43
# 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

#listenObject

screen_server.listen



15
16
17
18
19
# File 'lib/server/key_server.rb', line 15

def listen
  Thread.new do
    Socket.tcp_server_loop @port, &register
  end
end

#registerObject



21
22
23
24
25
26
27
28
29
30
31
# 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