runtimepy.net.udp package

Contents

runtimepy.net.udp package#

Subpackages#

Submodules#

runtimepy.net.udp.connection module#

A module implementing a UDP connection interface.

class runtimepy.net.udp.connection.EchoUdpConnection(transport: DatagramTransport, protocol: UdpQueueProtocol, **kwargs)[source]#

Bases: UdpConnection, EchoConnection

An echo connection for UDP.

async process_datagram(data: bytes, addr: tuple[str, int]) bool[source]#

Process a datagram.

class runtimepy.net.udp.connection.NullUdpConnection(transport: DatagramTransport, protocol: UdpQueueProtocol, **kwargs)[source]#

Bases: UdpConnection, NullConnection

A null UDP connection.

async process_datagram(data: bytes, addr: tuple[str, int]) bool[source]#

Process a datagram.

class runtimepy.net.udp.connection.UdpConnection(transport: DatagramTransport, protocol: UdpQueueProtocol, **kwargs)[source]#

Bases: Connection, TransportMixin

A UDP connection interface.

async close() None[source]#

Close this connection.

async classmethod create_connection(markdown: str = None, **kwargs) T[source]#

Create a UDP connection.

async classmethod create_pair() tuple[T, T][source]#

Create a connection pair.

env: ChannelEnvironment#
latest_rx_address: tuple[str, int] | None#
log_alias = 'UDP'#
logger: LoggerType#
markdown: str#
abstractmethod async process_datagram(data: bytes, addr: tuple[str, int]) bool[source]#

Process a datagram.

remote_address: _Optional[_IpHost]#
async restart() bool[source]#

Reset necessary underlying state for this connection to ‘process’ again.

send_binary(data: bytes | bytearray | memoryview) None[source]#

Enqueue a binary message to send.

send_text(data: str) None[source]#

Enqueue a text message to send.

sendto(data: bytes, addr: IPv4Host | IPv6Host | tuple[str, int] | tuple[str, int, int, int] = None) None[source]#

Send to a specific address.

set_remote_address(addr: IPv4Host | IPv6Host) None[source]#

Set a new remote address. Note that this doesn’t interact with or attempt to ‘connect’ the underlying socket. That should be done at creation time.

should_connect: bool = True#
uses_binary_tx_queue = False#
uses_text_tx_queue = False#

runtimepy.net.udp.create module#

A module for instantiating the underlying networking resources for UdpConnection.

async runtimepy.net.udp.create.try_udp_transport_protocol(callback: Callable[[tuple[DatagramTransport, UdpQueueProtocol]], None] = None, **kwargs) tuple[DatagramTransport, UdpQueueProtocol] | None[source]#

Attempt to create a transport and protocol pair.

async runtimepy.net.udp.create.udp_transport_protocol(**kwargs) tuple[DatagramTransport, UdpQueueProtocol][source]#

Create a transport and protocol pair relevant for this class’s implementation.

async runtimepy.net.udp.create.udp_transport_protocol_backoff(backoff: ExponentialBackoff = None, **kwargs) tuple[DatagramTransport, UdpQueueProtocol][source]#

Create a transport and protocol pair relevant for this class’s implementation.

runtimepy.net.udp.protocol module#

A module implementing a DatagramProtocol for UdpConnection.

class runtimepy.net.udp.protocol.UdpQueueProtocol[source]#

Bases: DatagramProtocol

A simple UDP protocol that populates a message queue.

conn: Connection#
datagram_received(data: bytes, addr: Tuple[str, int]) None[source]#

Handle incoming data.

error_received(exc: Exception) None[source]#

Log any received errors.

logger: Logger | LoggerAdapter[Any]#

runtimepy.net.udp.queue module#

A module implementing a simple queue-based UDP interface.

class runtimepy.net.udp.queue.QueueUdpConnection(transport: DatagramTransport, protocol: UdpQueueProtocol, **kwargs)[source]#

Bases: UdpConnection

An echo connection for UDP.

datagrams: Queue[tuple[bytes, tuple[str, int]]]#
init() None[source]#

Initialize this instance.

async process_datagram(data: bytes, addr: tuple[str, int]) bool[source]#

Process a datagram.

Module contents#

A module implementing networking utilities relevant to UDP.

class runtimepy.net.udp.EchoUdpConnection(transport: DatagramTransport, protocol: UdpQueueProtocol, **kwargs)[source]#

Bases: UdpConnection, EchoConnection

An echo connection for UDP.

async process_datagram(data: bytes, addr: tuple[str, int]) bool[source]#

Process a datagram.

class runtimepy.net.udp.NullUdpConnection(transport: DatagramTransport, protocol: UdpQueueProtocol, **kwargs)[source]#

Bases: UdpConnection, NullConnection

A null UDP connection.

async process_datagram(data: bytes, addr: tuple[str, int]) bool[source]#

Process a datagram.

class runtimepy.net.udp.QueueUdpConnection(transport: DatagramTransport, protocol: UdpQueueProtocol, **kwargs)[source]#

Bases: UdpConnection

An echo connection for UDP.

datagrams: Queue[tuple[bytes, tuple[str, int]]]#
env: ChannelEnvironment#
init() None[source]#

Initialize this instance.

latest_rx_address: _Optional[tuple[str, int]]#
logger: LoggerType#
markdown: str#
async process_datagram(data: bytes, addr: tuple[str, int]) bool[source]#

Process a datagram.

remote_address: _Optional[_IpHost]#
class runtimepy.net.udp.UdpConnection(transport: DatagramTransport, protocol: UdpQueueProtocol, **kwargs)[source]#

Bases: Connection, TransportMixin

A UDP connection interface.

async close() None[source]#

Close this connection.

async classmethod create_connection(markdown: str = None, **kwargs) T[source]#

Create a UDP connection.

async classmethod create_pair() tuple[T, T][source]#

Create a connection pair.

env: ChannelEnvironment#
latest_rx_address: tuple[str, int] | None#
log_alias = 'UDP'#
logger: LoggerType#
markdown: str#
abstractmethod async process_datagram(data: bytes, addr: tuple[str, int]) bool[source]#

Process a datagram.

remote_address: _Optional[_IpHost]#
async restart() bool[source]#

Reset necessary underlying state for this connection to ‘process’ again.

send_binary(data: bytes | bytearray | memoryview) None[source]#

Enqueue a binary message to send.

send_text(data: str) None[source]#

Enqueue a text message to send.

sendto(data: bytes, addr: IPv4Host | IPv6Host | tuple[str, int] | tuple[str, int, int, int] = None) None[source]#

Send to a specific address.

set_remote_address(addr: IPv4Host | IPv6Host) None[source]#

Set a new remote address. Note that this doesn’t interact with or attempt to ‘connect’ the underlying socket. That should be done at creation time.

should_connect: bool = True#
uses_binary_tx_queue = False#
uses_text_tx_queue = False#