Class: EventMachine::Selectable

Inherits:
Object
  • Object
show all
Defined in:
lib/em/pure_ruby.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(io) ⇒ Selectable

Returns a new instance of Selectable.



687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
# 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

Instance Attribute Details

#ioObject

Returns the value of attribute io.



684
685
686
# File 'lib/em/pure_ruby.rb', line 684

def io
  @io
end

#is_serverObject

Returns the value of attribute is_server.



684
685
686
# File 'lib/em/pure_ruby.rb', line 684

def is_server
  @is_server
end

#uuidObject (readonly)

Returns the value of attribute uuid.



685
686
687
# File 'lib/em/pure_ruby.rb', line 685

def uuid
  @uuid
end

Instance Method Details

#close_scheduled?Boolean

Returns:

  • (Boolean)


715
716
717
# File 'lib/em/pure_ruby.rb', line 715

def close_scheduled?
  @close_scheduled
end

#get_peernameObject



727
728
729
# File 'lib/em/pure_ruby.rb', line 727

def get_peername
  nil
end

#get_socknameObject



731
732
733
# File 'lib/em/pure_ruby.rb', line 731

def get_sockname
  nil
end

#heartbeatObject



739
740
# File 'lib/em/pure_ruby.rb', line 739

def heartbeat
end

#schedule_close(after_writing = false) ⇒ Object



742
743
744
745
746
747
748
# 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?Boolean

Returns:

  • (Boolean)


719
720
721
# File 'lib/em/pure_ruby.rb', line 719

def select_for_reading?
  false
end

#select_for_writing?Boolean

Returns:

  • (Boolean)


723
724
725
# File 'lib/em/pure_ruby.rb', line 723

def select_for_writing?
  false
end

#set_inactivity_timeout(tm) ⇒ Object



735
736
737
# File 'lib/em/pure_ruby.rb', line 735

def set_inactivity_timeout tm
  @inactivity_timeout = tm
end