class EventMachine::SerialPort
Public Class Methods
new(io)
click to toggle source
Calls superclass method
# File lib/em-rubyserial.rb, line 57 def initialize(io) super end
open(dev, baud, databits)
click to toggle source
# File lib/em-rubyserial.rb, line 47 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 61 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