obci.core.messages package

Submodules

obci.core.messages.protobuf_serializer module

class obci.core.messages.protobuf_serializer.ProtobufMessageSerializerBase[source]

Bases: obci.core.messages.MessageSerializer

Serializer for protobuf objects.

Deserializer will be created dynamically using gen_deserialize_func function.

static deserialize(data)[source]
static serialize(data)[source]
obci.core.messages.protobuf_serializer.gen_deserialize_func(ProtoClass)[source]

Generate deserialize for specified protobuf class.

Parameters:ProtoClass – protobuf class
Returns:deserializer function
obci.core.messages.protobuf_serializer.generate_protobuf_serializer(proto_class)[source]

Generate serializer for specified protobuf class.

obci.core.messages.protobuf_serializer.register_serializers() → None[source]

Register serializers for all protobuf objects.

obci.core.messages.types module

Predefined message types.

Module contents

class obci.core.messages.JsonMessageSerializer[source]

Bases: obci.core.messages.MessageSerializer

Serializes any JSON-serializable objects.

static deserialize(data)[source]
static serialize(data)[source]
class obci.core.messages.Message(type_id: str, subtype_id: str = '', data: typing.Any = None)[source]

Bases: object

Message consists of:

  • type - can be any string
  • subtype - can be any string
  • data - deserialized message payload

New message type must be registered using Message.register_serializer method before creating Message objects with such type.

Parameters:
  • type_id – type of this message
  • subtype_id – usually interpreted as sender peer ID
  • data – message payload
static deserialize(msg: typing.List[bytes]) → obci.core.messages.Message[source]

Create Message object from ZMQ multipart message.

Parameters:msg (List) – multipart message received by ZMQ
Returns:Message object
static register_serializer(msg_type: str, serializer_class) → None[source]

Unregister serializer for specified message type.

Parameters:
  • msg_type (str) – message type
  • serializer_class – class derived from MessageSerializer
serialize() → typing.List[bytes][source]

Serialize to ZMQ multipart message.

Returns:ZMQ multipart message
serializers = {'Tag': <abc.Tag_ProtobufMessageSerializer object>, 'OK': <obci.core.messages.NullMessageSerializer object>, 'Blink': <abc.Blink_ProtobufMessageSerializer object>, 'BROKER_REGISTER_QUERY_HANDLER': <obci.core.messages.JsonMessageSerializer object>, 'BROKER_REGISTER_PEER_RESPONSE': <obci.core.messages.JsonMessageSerializer object>, 'IntVariable': <abc.IntVariable_ProtobufMessageSerializer object>, 'BROKER_UNREGISTER_QUERY_HANDLER': <obci.core.messages.JsonMessageSerializer object>, 'INVALID_REQUEST': <obci.core.messages.StringMessageSerializer object>, 'HEARTBEAT': <obci.core.messages.NullMessageSerializer object>, 'Diode': <abc.Diode_ProtobufMessageSerializer object>, 'Sample': <abc.Sample_ProtobufMessageSerializer object>, 'TagVector': <abc.TagVector_ProtobufMessageSerializer object>, 'BlinkVector': <abc.BlinkVector_ProtobufMessageSerializer object>, 'BROKER_HELLO': <obci.core.messages.JsonMessageSerializer object>, 'QUERY': <obci.core.messages.JsonMessageSerializer object>, 'ERROR': <obci.core.messages.StringMessageSerializer object>, 'BROKER_HEARTBEAT': <obci.core.messages.JsonMessageSerializer object>, 'PEERS_READY_RECEIVED': <obci.core.messages.NullMessageSerializer object>, 'UgmUpdate': <abc.UgmUpdate_ProtobufMessageSerializer object>, 'BROKER_REGISTER_PEER': <obci.core.messages.JsonMessageSerializer object>, 'VariableVector': <abc.VariableVector_ProtobufMessageSerializer object>, 'Sample2D': <abc.Sample2D_ProtobufMessageSerializer object>, 'BROKER_HEARTBEAT_RESPONSE': <obci.core.messages.JsonMessageSerializer object>, 'INTERNAL_ERROR': <obci.core.messages.StringMessageSerializer object>, 'Variable': <abc.Variable_ProtobufMessageSerializer object>, 'SampleVector': <abc.SampleVector_ProtobufMessageSerializer object>, 'PEERS_READY': <obci.core.messages.NullMessageSerializer object>, 'REDIRECT': <obci.core.messages.JsonMessageSerializer object>, 'BROKER_HELLO_RESPONSE': <obci.core.messages.JsonMessageSerializer object>}
subtype
type
static unregister_serializer(msg_type: str) → None[source]

Unregister serializer for specified message type.

Parameters:msg_type (str) – message type
class obci.core.messages.MessageSerializer[source]

Bases: object

Message serializer implements two methods serialize and deserialize to convert to and from bytes to desired data type.

static deserialize(data: bytes) → typing.Any[source]
static serialize(data: typing.Any) → bytes[source]
exception obci.core.messages.NoSerializerRegistered[source]

Bases: Exception

Raised when no serializer was registered for used message type.

class obci.core.messages.NullMessageSerializer[source]

Bases: obci.core.messages.MessageSerializer

Serialize data to empty (None) object.

deserialize method always returns None.

static deserialize(data)[source]
static serialize(data)[source]
class obci.core.messages.StringMessageSerializer[source]

Bases: obci.core.messages.MessageSerializer

Serializes strings.

static deserialize(data)[source]
static serialize(data)[source]