Protocols

Communication protocol objects module

class easynetwork.protocol.BufferedStreamReceiver(serializer: BufferedIncrementalPacketSerializer[Any, _ReceivedPacketT, _BufferT], converter: None = ...)
class easynetwork.protocol.BufferedStreamReceiver(serializer: BufferedIncrementalPacketSerializer[Any, _ReceivedDTOPacketT, _BufferT], converter: AbstractPacketConverterComposite[Any, _ReceivedPacketT, Any, _ReceivedDTOPacketT])

Bases: Generic[_ReceivedPacketT, _BufferT]

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

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:

_BufferT

build_packet_from_buffer(buffer)

Creates a Python object representing the raw packet.

Parameters:

buffer (_BufferT) – 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[~_ReceivedPacketT, bytes | bytearray | memoryview]]

class easynetwork.protocol.DatagramProtocol(serializer: AbstractPacketSerializer[_SentPacketT, _ReceivedPacketT], converter: None = ...)
class easynetwork.protocol.DatagramProtocol(serializer: AbstractPacketSerializer[_SentDTOPacketT, _ReceivedDTOPacketT], converter: AbstractPacketConverterComposite[_SentPacketT, _ReceivedPacketT, _SentDTOPacketT, _ReceivedDTOPacketT])

Bases: Generic[_SentPacketT, _ReceivedPacketT]

A protocol object class for datagram communication.

Parameters:
make_datagram(packet)

Serializes a Python object to a raw datagram packet.

Parameters:

packet (_SentPacketT) – 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:

_ReceivedPacketT

class easynetwork.protocol.StreamProtocol(serializer: AbstractIncrementalPacketSerializer[_SentPacketT, _ReceivedPacketT], converter: None = ...)
class easynetwork.protocol.StreamProtocol(serializer: AbstractIncrementalPacketSerializer[_SentDTOPacketT, _ReceivedDTOPacketT], converter: AbstractPacketConverterComposite[_SentPacketT, _ReceivedPacketT, _SentDTOPacketT, _ReceivedDTOPacketT])

Bases: Generic[_SentPacketT, _ReceivedPacketT]

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 (_SentPacketT) – 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[_ReceivedPacketT, 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[~_ReceivedPacketT, bytes]]