ConnectionWriter
from panda3d.core import ConnectionWriter
- class ConnectionWriter
Bases:
This class handles threaded delivery of datagrams to various TCP or UDP sockets.
A ConnectionWriter may define an arbitrary number of threads (0 or more) to write its datagrams to sockets. The number of threads is specified at construction time and cannot be changed.
Inheritance diagram
- __init__(manager: ConnectionManager, num_threads: int, thread_name: str)
Creates a new
ConnectionWriter
with the indicated number of threads to handle output.If num_threads is 0, all datagrams will be sent immediately instead of queueing for later transmission by a thread.
- getManager() ConnectionManager
Returns a pointer to the
ConnectionManager
object that serves thisConnectionWriter
.
- getMaxQueueSize() int
Returns the maximum size the queue is allowed to grow to. See
setMaxQueueSize()
.
- getNumThreads() int
Returns the number of threads the
ConnectionWriter
has been created with.
- getRawMode() bool
Returns the current setting of the raw mode flag. See
setRawMode()
.
- getTcpHeaderSize() int
Returns the current setting of TCP header size. See
setTcpHeaderSize()
.
- isValidForUdp(datagram: Datagram) bool
Returns true if the datagram is small enough to be sent over a UDP packet, false otherwise.
- send(datagram: Datagram, connection: Connection, address: NetAddress, block: bool) bool
Enqueues a datagram for transmittal on the indicated socket. This form of the function allows the specification of a destination host address, and so is appropriate for UDP packets. Use the other send() method for sending TCP packets.
Returns true if successful, false if there was an error. In the normal, threaded case, this function only returns false if the send queue is filled; it’s impossible to detect a transmission error at this point.
If block is true, this will not return false if the send queue is filled; instead, it will wait until there is space available.
- send(datagram: Datagram, connection: Connection, block: bool) bool
Enqueues a datagram for transmittal on the indicated socket. Since the host address is not specified with this form, this function should only be used for sending TCP packets. Use the other send() method for sending UDP packets.
Returns true if successful, false if there was an error. In the normal, threaded case, this function only returns false if the send queue is filled; it’s impossible to detect a transmission error at this point.
If block is true, this will not return false if the send queue is filled; instead, it will wait until there is space available.
- setMaxQueueSize(max_size: int)
Limits the number of packets that may be pending on the outbound queue. This only has an effect when using threads; if num_threads is 0, then all packets are sent immediately.
- setRawMode(mode: bool)
Sets the
ConnectionWriter
into raw mode (or turns off raw mode). In raw mode, datagrams are not sent along with their headers; the bytes in the datagram are simply sent down the pipe.Setting the
ConnectionWriter
to raw mode must be done with care. This can only be done when the matchingConnectionReader
is also set to raw mode, or when theConnectionWriter
is communicating to a process that does not expect datagrams.
- setTcpHeaderSize(tcp_header_size: int)
Sets the header size of TCP packets. At the present, legal values for this are 0, 2, or 4; this specifies the number of bytes to use encode the datagram length at the start of each TCP datagram. Sender and receiver must independently agree on this.
- shutdown()
Stops all the threads and cleans them up. This is called automatically by the destructor, but it may be called explicitly before destruction.