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



682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
# File 'lib/em/pure_ruby.rb', line 682

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



679
680
681
# File 'lib/em/pure_ruby.rb', line 679

def io
  @io
end

#is_serverObject

Returns the value of attribute is_server



679
680
681
# File 'lib/em/pure_ruby.rb', line 679

def is_server
  @is_server
end

#uuidObject (readonly)

Returns the value of attribute uuid



680
681
682
# File 'lib/em/pure_ruby.rb', line 680

def uuid
  @uuid
end

Instance Method Details

#close_scheduled?Boolean



710
711
712
# File 'lib/em/pure_ruby.rb', line 710

def close_scheduled?
  @close_scheduled
end

#get_peernameObject



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

def get_peername
  nil
end

#get_socknameObject



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

def get_sockname
  nil
end

#heartbeatObject



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

def heartbeat
end

#schedule_close(after_writing = false) ⇒ Object



737
738
739
740
741
742
743
# File 'lib/em/pure_ruby.rb', line 737

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

#select_for_reading?Boolean



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

def select_for_reading?
  false
end

#select_for_writing?Boolean



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

def select_for_writing?
  false
end

#set_inactivity_timeout(tm) ⇒ Object



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

def set_inactivity_timeout tm
  @inactivity_timeout = tm
end