class EventMachine::Selectable

@private

Attributes

io[RW]
is_server[RW]
uuid[R]

Public Class Methods

new(io) click to toggle source
# File lib/em/pure_ruby.rb, line 687
def initialize io
  @io = io
  @uuid = UuidGenerator.generate
  @is_server = false
  @last_activity = Reactor.instance.current_loop_time

  if defined?(Fcntl::F_GETFL)
    m = @io.fcntl(Fcntl::F_GETFL, 0)
    @io.fcntl(Fcntl::F_SETFL, Fcntl::O_NONBLOCK | m)
  else
    # Windows doesn't define F_GETFL.
    # It's not very reliable about setting descriptors nonblocking either.
    begin
      s = Socket.for_fd(@io.fileno)
      s.fcntl( Fcntl::F_SETFL, Fcntl::O_NONBLOCK )
    rescue Errno::EINVAL, Errno::EBADF
      warn "Serious error: unable to set descriptor non-blocking"
    end
  end
  # TODO, should set CLOEXEC on Unix?

  @close_scheduled = false
  @close_requested = false

  se = self; @io.instance_eval { @my_selectable = se }
  Reactor.instance.add_selectable @io
end

Public Instance Methods

close_scheduled?() click to toggle source
# File lib/em/pure_ruby.rb, line 715
def close_scheduled?
  @close_scheduled
end
get_peername() click to toggle source
# File lib/em/pure_ruby.rb, line 727
def get_peername
  nil
end
get_sockname() click to toggle source
# File lib/em/pure_ruby.rb, line 731
def get_sockname
  nil
end
heartbeat() click to toggle source
# File lib/em/pure_ruby.rb, line 739
def heartbeat
end
schedule_close(after_writing=false) click to toggle source
# File lib/em/pure_ruby.rb, line 742
def schedule_close(after_writing=false)
  if after_writing
    @close_requested = true
  else
    @close_scheduled = true
  end
end
select_for_reading?() click to toggle source
# File lib/em/pure_ruby.rb, line 719
def select_for_reading?
  false
end
select_for_writing?() click to toggle source
# File lib/em/pure_ruby.rb, line 723
def select_for_writing?
  false
end
set_inactivity_timeout(tm) click to toggle source
# File lib/em/pure_ruby.rb, line 735
def set_inactivity_timeout tm
  @inactivity_timeout = tm
end