boss.multiprocess

Attributes

Classes

Message

MethodCallMessage

AttributeGetMessage

AttributeSetMessage

ResultMessage

ErrorMessage

MultiprocessRPC

Use the communication between two processes via a pipe to implement RPC.

Module Contents

boss.multiprocess.POLLING_INTERVAL = 0.01
class boss.multiprocess.Message(*args, **kwargs)[source]
fields = ['id', 'type']
_decode(raw_message)[source]
encode()[source]
static parse(raw_message)[source]
class boss.multiprocess.MethodCallMessage(*args, **kwargs)[source]

Bases: Message

TYPE = 'c'
fields = ['method', 'args', 'kwargs']
class boss.multiprocess.AttributeGetMessage(*args, **kwargs)[source]

Bases: Message

TYPE = 'g'
fields = ['name']
class boss.multiprocess.AttributeSetMessage(*args, **kwargs)[source]

Bases: Message

TYPE = 's'
fields = ['name', 'value']
class boss.multiprocess.ResultMessage(*args, **kwargs)[source]

Bases: Message

TYPE = 'r'
fields = ['payload']
class boss.multiprocess.ErrorMessage(*args, **kwargs)[source]

Bases: Message

TYPE = 'e'
fields = ['error']
class boss.multiprocess.MultiprocessRPC(loop, pipe)[source]

Use the communication between two processes via a pipe to implement RPC.

In BOSS this is used to communicate between the BOSS object in the main process and the BOSSRemote running in a separate process. This becomes necessary since zenoh/rust/pyO3 does not allow to run in the main process and in dynamically generated processes.

_loop
_pipe
_pending_results
_shutdown = False
_communicatation_task
async _communicate()[source]
_send_message(message)[source]
_handle_message(message)[source]
_rpc(method_name, *args, _cb=None, **kwargs)[source]
_get_attribute(name: str, local_name: str | None = None)[source]
_set_attribute(name: str, value: object)[source]
_rpc_stop()[source]