A general purpose bidirectional packet stream connection.
Latest release 20240412:
- PacketConnection: now subclasses MultiOpenMixin, big refactor.
- PacketConnection.init: use @promote to turn the recv parameter into a CornuCopyBuffer.
- Fix a deadlock.
Class Packet(cs.binary.SimpleBinary)
A protocol packet.
Method Packet.__str__(self):
pylint: disable=signature-differs
Method Packet.parse(bfr):
Parse a Packet from a buffer.
Method Packet.transcribe(self):
Transcribe this packet.
Class PacketConnection(cs.resources.MultiOpenMixin)
A bidirectional binary connection for exchanging requests and responses.
Method PacketConnection.__init__(self, recv: cs.buffer.CornuCopyBuffer, send, request_handler=None, name=None, packet_grace=None, tick=None, recv_len_func=None, send_len_func=None):
Initialise the PacketConnection.
Parameters:
recv: inbound binary stream. This value is automatically promoted to acs.buffer.CornuCopyBufferby theCornuCopyBuffer.promotemethod.recv_len_func: optional function to compute the data length of a received packet; the default watches the offset on the receive streamsend: outbound binary stream. If this is anintit is taken to be an OS file descriptor, otherwise it should be a binary file like object with.write(bytes)and.flush()methods. This objects is not closed by thePacketConnection; the caller has responsibility for that.send_len_func: optional function to compute the data length of a sent packet; the default watches the offset on the send streampacket_grace: default pause in the packet sending worker to allow another packet to be queued before flushing the output stream. Default:DEFAULT_PACKET_GRACEs. A value of0will flush immediately if the queue is empty.request_handler: an optional callable accepting (rq_type,flags,payload). The request_handler may return one of 5 values on success:None: response will be 0 flags and an empty payload.int: flags only. Response will be the flags and an empty payload.bytes: payload only. Response will be 0 flags and the payload.str: payload only. Response will be 0 flags and the str encoded as bytes using UTF-8.(int, bytes): Specify flags and payload for response. An unsuccessful request should raise an exception, which will cause a failure response packet.
tick: optional tick parameter, defaultNone. IfNone, do nothing. If a Boolean, calltick_fd_2if true, otherwise do nothing. Otherwisetickshould be a callable accepting a byteslike value.
Method PacketConnection.do(self, *a, **kw):
Wrapper function to check that this instance is not closed.
Method PacketConnection.join(self):
Wait for the receive side of the connection to terminate.
Method PacketConnection.request(self, *a, **kw):
Wrapper function to check that this instance is not closed.
Class Request_State(builtins.tuple)
RequestState(decode_response, result)
Property Request_State.decode_response:
Alias for field number 0
Property Request_State.result:
Alias for field number 1
Function tick_fd_2(bs)
A low level tick function to write a short binary tick to the standard error file descriptor.
This may be called by the send and receive workers to give an indication of activity type.
Release Log
Release 20240412:
- PacketConnection: now subclasses MultiOpenMixin, big refactor.
- PacketConnection.init: use @promote to turn the recv parameter into a CornuCopyBuffer.
- Fix a deadlock.
Release 20211208:
- Packet.eq: only test .rq_type if .is_request.
- Update tests for changes.
Release 20210306:
- Port to new cs.binary.Binary* classes.
- Some refactors and small fixes.
Release 20191004:
- PacketConnection: new optional parameter
packet_graceto tune the send delay for additional packets before a flush, default DEFAULT_PACKET_GRACE (0.01s), 0 for no delay. - Add a crude packet level activity ticker.
Release 20190221: DISTINFO requirement updates.
Release 20181228: Initial PyPI release.
Metadata
Release files for cs.packetstream 20240412
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| cs.packetstream-20240412.tar.gz | 10.6 kB | Without provenance | Details for cs.packetstream-20240412.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| cs.packetstream-20240412-py3-none-any.whl | Python 3 | none | any | Details for cs.packetstream-20240412-py3-none-any.whl |
Total release size: 20.7 kB
Release files / cs.packetstream-20240412.tar.gz
| Download URL | cs.packetstream-20240412.tar.gz |
|---|---|
| Size | 10.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
f6fbfb389b01c5cd9505aedd4a1d352c5f8d8bab09132ad4cb4948104e1f0a81
|
|
BLAKE2b-256 checksum How to use checksums |
c607ce8dbb323b170305677439e59879ea83b18cce090ff62d4ea579f37b0bd8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/5.0.0 CPython/3.10.6
|
Release files / cs.packetstream-20240412-py3-none-any.whl
| Download URL | cs.packetstream-20240412-py3-none-any.whl |
|---|---|
| Size | 10.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
38687c04386adff75aa3a49a15be0ada255737715a059586e71fdee2e5b6e1db
|
|
BLAKE2b-256 checksum How to use checksums |
b0b5214f4fad43f751ff87cc76f04fc452bb7ed465aaeb193263971a1b2f8f8f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/5.0.0 CPython/3.10.6
|
Security for cs.packetstream 20240412
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.