leads.comm.prototype#
Module Contents#
Classes#
Functions#
API#
- class leads.comm.prototype.Service(port: int)[source]#
Initialization
- Parameters:
port – the port on which the service listens
- abstractmethod run(*args, **kwargs) None[source]#
Override this method to define the specific workflow. :param args: args :param kwargs: kwargs
- _run(*args, **kwargs) None[source]#
This method is equivalent to run(). It leaves a middle layer for possible features in subclasses. :param args: args passed to run() :param kwargs: kwargs passed to run()
- _register_process(*args, **kwargs) None[source]#
Register the multithread worker. :param args: args passed to run() :param kwargs: kwargs passed to run() :exception RuntimeError: duplicated registration
- _parallel_run(*args, **kwargs) None[source]#
This method is similar to Service._run() except that it runs the workflow in a child thread. :param args: args passed to run() :param kwargs: kwargs passed to run()
- class leads.comm.prototype.ConnectionBase(remainder: bytes, separator: bytes)[source]#
Initialization
- Parameters:
remainder – the message remained from the last connection
separator – the symbol that splits the stream into messages
- use_remainder() bytes[source]#
Parse the remainder queue. :return: the first message from the remainder queue
- with_remainder(msg: bytes) bytes[source]#
Parse the raw message and store the remaining part in the remainder queue. :param msg: the raw message :return: the first message
- class leads.comm.prototype.Connection(socket: socket.socket, address: tuple[str, int], remainder: bytes = b'', separator: bytes = b';', on_close: Callable[[Self], None] = lambda _: ...)[source]#
Bases:
leads.comm.prototype.ConnectionBaseInitialization
- Parameters:
socket – the socket used for this connection (must be open)
address – [address, port]
remainder – the message remained from the last connection
separator – the symbol that splits the stream into messages
on_close – callback method when the connection is closed
- _require_open_socket(mandatory: bool = True) socket.socket[source]#
Check if the socket is active and return it. :param mandatory: True: an open socket is required; False: a closed socket is acceptable :return: the socket object :exception IOError: the socket is closed
- class leads.comm.prototype.Callback(chain: Self | None = None)[source]#
Bases:
leads.callback.CallbackChainInitialization
- on_initialize(service: leads.comm.prototype.Service) None[source]#
- on_fail(service: leads.comm.prototype.Service, error: Exception) None[source]#
- on_connect(service: leads.comm.prototype.Service, connection: leads.comm.prototype.ConnectionBase) None[source]#
- on_receive(service: leads.comm.prototype.Service, msg: bytes) None[source]#
- on_disconnect(service: leads.comm.prototype.Service, connection: leads.comm.prototype.ConnectionBase) None[source]#
- class leads.comm.prototype.Entity(port: int, callback: leads.comm.prototype.Callback)[source]#
Bases:
leads.comm.prototype.ServiceInitialization
- Parameters:
port – the port that the service listens on or connects to
callback – the callback interface
- set_callback(callback: leads.comm.prototype.Callback) None[source]#
- Parameters:
callback – the callback interface
- _stage(connection: leads.comm.prototype.ConnectionBase) None[source]#
Stage the connection. It loops and blocks to listen for income messages. :param connection: the connection to stage