class Myxi::Listener

Public Class Methods

new(event_loop, options) click to toggle source
# 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

Public Instance Methods

close() click to toggle source
# File lib/myxi/listener.rb, line 28
def close
  @socket.close
  @event_loop.selector.deregister(@socket)
end
handle_r() click to toggle source
# File lib/myxi/listener.rb, line 22
def handle_r
  # Incoming client connection
  client_socket = @socket.accept
  Session.new(@event_loop, client_socket)
end