module Flic::Protocol

This module contains an implementation of the Flic binary protocol. Of particular external interest is `Flic::Protocol::Connection` which provides a wrapper for the binary protocol around a socket instance.

Public Instance Methods

parse_command(serialized_command) click to toggle source

Deserializes an instance of a protocol command class from a binary string @param serialized_command [String] binary string @return [Flic::Protocol::Commands::Command]

# File lib/flic/protocol.rb, line 34
def parse_command(serialized_command)
  command = Commands::Command.read(serialized_command)
  opcode = command.opcode
  command_class = Commands::Command.command_class_for_opcode(opcode)

  if command_class
    command_class.read(serialized_command)
  else
    raise NotImplementedError, "Unknown command opcode #{opcode}"
  end
rescue
  raise Error, "Cannot parse event `#{serialized_command.inspect}`"
end
parse_event(serialized_event) click to toggle source

Deserializes an instance of a protocol event class from a binary string @param serialized_event [String] binary string @return [Flic::Protocol::Events::Event]

# File lib/flic/protocol.rb, line 65
def parse_event(serialized_event)
  event = Events::Event.read(serialized_event)
  opcode = event.opcode
  event_class = Events.event_class_for_opcode(opcode)

  if event_class
    event_class.read(serialized_event)
  else
    raise NotImplementedError, "Unknown event opcode #{opcode}"
  end
rescue
  raise Error, "Cannot parse event `#{serialized_event.inspect}`"
end
serialize_command(command) click to toggle source

Serializes an instance of a protocol command class to a binary string @param command [Flic::Protocol::Commands::Command] @return [String] binary string

# File lib/flic/protocol.rb, line 20
def serialize_command(command)
  case command
    when Commands::Command
      command.to_binary_s
    else
      raise NotImplementedError
  end
rescue
  raise Error, "Cannot serialize command `#{command.inspect}`"
end
serialize_event(event) click to toggle source

Serializes an instance of a protocol event class to a binary string @param event [Flic::Protocol::Events::Event] @return [String] binary string

# File lib/flic/protocol.rb, line 51
def serialize_event(event)
  case event
    when Commands::Event
      event.to_binary_s
    else
      raise NotImplementedError
  end
rescue
  raise Error, "Cannot serialize event `#{event.inspect}`"
end