Protocols

Communication protocol objects module

class easynetwork.protocol.BufferedStreamReceiver(serializer: BufferedIncrementalPacketSerializer[Any, _T_ReceivedPacket, _T_Buffer], converter: None = ...)
class easynetwork.protocol.BufferedStreamReceiver(serializer: BufferedIncrementalPacketSerializer[Any, _T_ReceivedDTOPacket, _T_Buffer], converter: AbstractPacketConverterComposite[Any, _T_ReceivedPacket, Any, _T_ReceivedDTOPacket])

Bases: Generic[_T_ReceivedPacket, _T_Buffer]

A specialization of StreamProtocol in order to use a buffered incremental serializer.

Warning

It is not recommended to instantiate BufferedStreamReceiver objects directly; use StreamProtocol.buffered_receiver() instead.

Parameters:
create_buffer(sizehint)

Called to allocate a new receive buffer.

See BufferedIncrementalPacketSerializer.create_deserializer_buffer() for details.

Return type:

_T_Buffer

build_packet_from_buffer(buffer)

Creates a Python object representing the raw packet.

Parameters:

buffer (_T_Buffer) – The buffer allocated by create_buffer().

Raises:
Yields:

until the whole packet has been deserialized.

See BufferedIncrementalPacketSerializer.buffered_incremental_deserialize() for details.

Returns:

a tuple with the deserialized Python object and the unused trailing data.

See BufferedIncrementalPacketSerializer.buffered_incremental_deserialize() for details.

Return type:

Generator[int | None, int, tuple[~_T_ReceivedPacket, bytes | bytearray | memoryview]]

class easynetwork.protocol.DatagramProtocol(serializer: AbstractPacketSerializer[_T_SentPacket, _T_ReceivedPacket], converter: None = ...)
class easynetwork.protocol.DatagramProtocol(serializer: AbstractPacketSerializer[_T_SentDTOPacket, _T_ReceivedDTOPacket], converter: AbstractPacketConverterComposite[_T_SentPacket, _T_ReceivedPacket, _T_SentDTOPacket, _T_ReceivedDTOPacket])

Bases: Generic[_T_SentPacket, _T_ReceivedPacket]

A protocol object class for datagram communication.

Parameters:
make_datagram(packet)

Serializes a Python object to a raw datagram packet.

Parameters:

packet (_T_SentPacket) – The packet as a Python object to serialize.

Returns:

the serialized packet.

Return type:

bytes

build_packet_from_datagram(datagram)

Creates a Python object representing the raw datagram packet.

Parameters:

datagram (bytes) – The datagram packet to deserialize.

Raises:
Returns:

the deserialized packet.

Return type:

_T_ReceivedPacket

class easynetwork.protocol.StreamProtocol(serializer: AbstractIncrementalPacketSerializer[_T_SentPacket, _T_ReceivedPacket], converter: None = ...)
class easynetwork.protocol.StreamProtocol(serializer: AbstractIncrementalPacketSerializer[_T_SentDTOPacket, _T_ReceivedDTOPacket], converter: AbstractPacketConverterComposite[_T_SentPacket, _T_ReceivedPacket, _T_SentDTOPacket, _T_ReceivedDTOPacket])

Bases: Generic[_T_SentPacket, _T_ReceivedPacket]

A protocol object class for connection-oriented stream communication.

Parameters:
generate_chunks(packet)

Serializes a Python object to a raw packet part by part.

Parameters:

packet (_T_SentPacket) – The packet as a Python object to serialize.

Yields:

all the parts of the packet.

Return type:

Generator[bytes, None, None]

buffered_receiver()

Get a specialization interface in order to use the buffer API.

Raises:

UnsupportedOperation – The serializer does not derive from BufferedIncrementalPacketSerializer.

Return type:

BufferedStreamReceiver[_T_ReceivedPacket, bytearray | memoryview]

build_packet_from_chunks()

Creates a Python object representing the raw packet.

Raises:
Yields:

None until the whole packet has been deserialized.

Returns:

a tuple with the deserialized Python object and the unused trailing data.

Return type:

Generator[None, bytes, tuple[~_T_ReceivedPacket, bytes]]