Class: Myxi::Listener

Inherits:
Object
  • Object
show all
Defined in:
lib/myxi/listener.rb

Instance Method Summary collapse

Constructor Details

#initialize(event_loop, options) ⇒ Listener

Returns a new instance of Listener.



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# File 'lib/myxi/listener.rb', line 6

def initialize(event_loop, options)
  @event_loop = event_loop
  port = (options[:port] || ENV['MYXI_PORT'] || ENV['PORT'] || 5005).to_i
  Myxi.logger.info "Running Myxi Web Socket Server on 0.0.0.0:#{port}"
  if ENV['SERVER_FD']
    @socket = TCPServer.for_fd(ENV['SERVER_FD'].to_i)
    Process.kill('TERM', Process.ppid)
  else
    @socket = TCPServer.open(options[:bind_address] || ENV['MYXI_BIND_ADDRESS'], port)
    ENV['SERVER_FD'] = @socket.to_i.to_s
  end
  @socket.close_on_exec = false
  monitor = event_loop.selector.register(@socket, :r)
  monitor.value = self
end

Instance Method Details

#closeObject



28
29
30
31
# File 'lib/myxi/listener.rb', line 28

def close
  @socket.close
  @event_loop.selector.deregister(@socket)
end

#handle_rObject



22
23
24
25
26
# File 'lib/myxi/listener.rb', line 22

def handle_r
  # Incoming client connection
  client_socket = @socket.accept
  Session.new(@event_loop, client_socket)
end