class EventMachine::EvmaTCPServer

@private

Public Class Methods

new(io) click to toggle source
Calls superclass method EventMachine::Selectable::new
# File lib/em/pure_ruby.rb, line 1060
def initialize io
  super io
end
start_server(host, port) click to toggle source

Versions of ruby 1.8.4 later than May 26 2006 will work properly with an object of type TCPServer. Prior versions won’t so we play it safe and just build a socket.

# File lib/em/pure_ruby.rb, line 1051
def start_server host, port
  sd = Socket.new( Socket::AF_INET, Socket::SOCK_STREAM, 0 )
  sd.setsockopt( Socket::SOL_SOCKET, Socket::SO_REUSEADDR, true )
  sd.bind( Socket.pack_sockaddr_in( port, host ))
  sd.listen( 50 ) # 5 is what you see in all the books. Ain't enough.
  EvmaTCPServer.new sd
end

Public Instance Methods

eventable_read() click to toggle source
# File lib/em/pure_ruby.rb, line 1073
def eventable_read
  begin
    10.times {
      descriptor,peername = io.accept_nonblock
      sd = EvmaTCPClient.new descriptor
      sd.is_server = true
      EventMachine::event_callback uuid, ConnectionAccepted, sd.uuid
    }
  rescue Errno::EWOULDBLOCK, Errno::EAGAIN
  end
end
schedule_close() click to toggle source
# File lib/em/pure_ruby.rb, line 1087
def schedule_close
  @close_scheduled = true
end
select_for_reading?() click to toggle source
# File lib/em/pure_ruby.rb, line 1065
def select_for_reading?
  true
end