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.



702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
# File 'lib/em/pure_ruby.rb', line 702

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.



699
700
701
# File 'lib/em/pure_ruby.rb', line 699

def io
  @io
end

#is_serverObject

Returns the value of attribute is_server.



699
700
701
# File 'lib/em/pure_ruby.rb', line 699

def is_server
  @is_server
end

#uuidObject (readonly)

Returns the value of attribute uuid.



700
701
702
# File 'lib/em/pure_ruby.rb', line 700

def uuid
  @uuid
end

Instance Method Details

#close_scheduled?Boolean

Returns:

  • (Boolean)


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

def close_scheduled?
  @close_scheduled
end

#get_peernameObject



742
743
744
# File 'lib/em/pure_ruby.rb', line 742

def get_peername
  nil
end

#get_socknameObject



746
747
748
# File 'lib/em/pure_ruby.rb', line 746

def get_sockname
  nil
end

#heartbeatObject



754
755
# File 'lib/em/pure_ruby.rb', line 754

def heartbeat
end

#schedule_close(after_writing = false) ⇒ Object



757
758
759
760
761
762
763
# File 'lib/em/pure_ruby.rb', line 757

def schedule_close(after_writing=false)
  if after_writing
    @close_requested = true
  else
    @close_scheduled = true
  end
end

#select_for_reading?Boolean

Returns:

  • (Boolean)


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

def select_for_reading?
  false
end

#select_for_writing?Boolean

Returns:

  • (Boolean)


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

def select_for_writing?
  false
end

#set_inactivity_timeout(tm) ⇒ Object



750
751
752
# File 'lib/em/pure_ruby.rb', line 750

def set_inactivity_timeout tm
  @inactivity_timeout = tm
end