Sans-I/O framing: raw backend bytes → typedPGMessageobjects.
The single entry point isparse_message(), which reads one length-prefixed backend
message from the front of a buffer and reports how many bytes it consumed.Nonemeans
"need more data" — the caller carries the leftover bytes forward and tries again after the
next read (cf. pounce_fast_h1.py / sync_protocol.py). This module touches no
socket and no anyio, so it is fuzzable in isolation and parallelizable across free-threaded
workers.
Robustness contract (proven by the E1 fuzz test): on any input,parse_message()
either returns(message, consumed), returns (None, 0)for an incomplete buffer, or
raisesProtocolError. It never raises anything else.
data.drivers._pelt._framing
| Name | Type | Default | Description |
|---|---|---|---|
type
|
|
— | |
qualified_name
|
|
— | |
element_type
|
|
— | |
description
|
|
— | |
source_file
|
|
— | |
line_number
|
|
— | |
is_autodoc
|
|
— | |
autodoc_element
|
|
— | |
_autodoc_template
|
|
— | |
_autodoc_url_path
|
|
— | |
_autodoc_page_type
|
|
— | |
title
|
|
— | |
doc_content_hash
|
|
— |
Symbols on this page
A bounded cursor over a single message payload. Every accessor raises
ProtocolError on underflow, so parsers never see a raw IndexError.
Parse one backend message from the front ofbuf.
Returns(message, consumed) where consumedis the number of bytes the message
occupied, or …
_Reader
class
A bounded cursor over a single message payload. Every accessor raises
ProtocolError on underflow, so parsers never see a raw IndexError.
parse_message
function
def parse_message(buf: bytes | memoryview) -> tuple[PGMessage | None, int]
Parse one backend message from the front ofbuf.
Returns(message, consumed) where consumedis the number of bytes the message
occupied, or(None, 0) when bufdoes not yet hold a complete message. Raises
ProtocolErroron a malformed header, an unknown tag, or a truncated/garbled
payload.
Parameters
| Name | Type | Default | Description |
|---|---|---|---|
buf
|
bytes | memoryview
|
— |
View source · /home/runner/work/chirp/chirp/site/../src/chirp/data/drivers/_pelt/_framing.py:1