class Telos::Device
Attributes
host[RW]
port[RW]
Public Class Methods
new(host:, port: 9998)
click to toggle source
# File lib/telos/device.rb, line 7 def initialize(host:, port: 9998) self.host = host self.port = port end
Public Instance Methods
connect(reader_thread: false) { || ... }
click to toggle source
# File lib/telos/device.rb, line 15 def connect(reader_thread: false) @server = TCPSocket.new host, port start_reader_thread if reader_thread if block_given? yield stop_reader_thread if reader_thread @server.close end end
disconnect()
click to toggle source
# File lib/telos/device.rb, line 25 def disconnect @server.close end
read()
click to toggle source
# File lib/telos/device.rb, line 35 def read if @mutex @mutex.synchronize do @messages.shift end else _read end end
shows()
click to toggle source
# File lib/telos/device.rb, line 12 def shows end
write(command, arguments = {})
click to toggle source
# File lib/telos/device.rb, line 29 def write(command, arguments = {}) message = Message.outgoing(command, arguments) @server.write(message.to_bytes) end
Private Instance Methods
_read()
click to toggle source
# File lib/telos/device.rb, line 46 def _read response_size = Message.response_size(@server.read(8)) Message.incoming(@server.read(response_size)) end
start_reader_thread()
click to toggle source
# File lib/telos/device.rb, line 51 def start_reader_thread @messages = [] @mutex = Mutex.new @reader_thread ||= Thread.start(@messages) do |messages| loop do message = _read @mutex.synchronize do messages << message end end end Thread.pass # Make sure the reader thread starts end
stop_reader_thread()
click to toggle source
# File lib/telos/device.rb, line 65 def stop_reader_thread @reader_thread.terminate if @reader_thread end