class NetworkedRFID::RFIDReaderRepository

Репозиторий всех ридеров, с которыми взаимодействует система.

Public Instance Methods

<<(reader) click to toggle source

Добавить ридер в репозиторий.

# File lib/networked_rfid/rfid_reader_repository.rb, line 20
def <<(reader)
  readers[reader.ip] = reader
end
poll() click to toggle source

Опросить состояние ридеров и передать каждому полученный ответ на обработку.

# File lib/networked_rfid/rfid_reader_repository.rb, line 8
def poll
  readers.values.each do |reader|
    reader.poll(socket)
  end

  while have_replies?
    reply_packet = socket.recvfrom_nonblock(64)
    readers[reply_packet[1][2].to_s].process_response reply_packet[0]
  end
end

Protected Instance Methods

have_replies?() click to toggle source
# File lib/networked_rfid/rfid_reader_repository.rb, line 26
def have_replies?
  result = IO.select([ socket ], nil, nil, 0.125)
  !result.nil? && result[0].size > 0
end
readers() click to toggle source
# File lib/networked_rfid/rfid_reader_repository.rb, line 35
def readers
  @readers ||= { }
end
socket() click to toggle source
# File lib/networked_rfid/rfid_reader_repository.rb, line 31
def socket
  @socket ||= UDPSocket.new
end