class EventMachine::SerialPort

Public Class Methods

new(io) click to toggle source
Calls superclass method
# File lib/em-rubyserial.rb, line 56
def initialize(io)
  super
end
open(dev, baud, databits) click to toggle source
# File lib/em-rubyserial.rb, line 46
def self.open(dev, baud, databits)
  serialport = ::Serial.new(dev, baud, databits)
  if RUBY_PLATFORM == "java"
    io = FFI::FileDescriptorIO.new(serialport.instance_variable_get(:@fd).to_i)
  else
    io = IO.new(serialport.instance_variable_get(:@fd), 'r+')
  end
  self.new(io)
end

Public Instance Methods

eventable_read() click to toggle source
# File lib/em-rubyserial.rb, line 60
def eventable_read
  @last_activity = Reactor.instance.current_loop_time
  begin
    if io.respond_to?(:read_nonblock)
      10.times {
        data = io.read_nonblock(4096)
        EventMachine::event_callback uuid, ConnectionData, data
      }
    else
      data = io.sysread(4096)
      EventMachine::event_callback uuid, ConnectionData, data
    end
  rescue Errno::EAGAIN, Errno::EWOULDBLOCK, EOFError
    # no-op
  rescue Errno::ECONNRESET, Errno::ECONNREFUSED
    @close_scheduled = true
    EventMachine::event_callback uuid, ConnectionUnbound, nil
  end
end