Delivery methods and sizing
Method and representation constants
| Method | Value | Citation |
|---|---|---|
OPPORTUNISTIC | 0x01 | LXMessage.py:29 |
DIRECT | 0x02 | LXMessage.py:30 |
PROPAGATED | 0x03 | LXMessage.py:31 |
PAPER | 0x05 | LXMessage.py:32 |
| Representation | Value | Citation |
|---|---|---|
UNKNOWN | 0x00 | LXMessage.py:24 |
PACKET | 0x01 | LXMessage.py:25 |
RESOURCE | 0x02 | LXMessage.py:26 |
The representation records whether the message goes out as a single Reticulum Packet or as a Reticulum Resource (multi-packet transfer). PAPER uses neither.
Selection algorithm
pack() sets method and representation from desired_method and the content
size (LXMessage.py:387-455). The normative rules:
- If no method is desired, default to
DIRECT(LXMessage.py:389-390). - OPPORTUNISTIC is valid only for SINGLE or PLAIN destinations. If the
content size exceeds
ENCRYPTED_PACKET_MAX_CONTENT(295) for a SINGLE destination, the reference falls back toDIRECT(LXMessage.py:394-398). Otherwise representation isPACKET(LXMessage.py:401-412). For PLAIN destinations the limit isPLAIN_PACKET_MAX_CONTENT(368). - DIRECT: if content size
<= LINK_PACKET_MAX_CONTENT(319), representation isPACKET; otherwiseRESOURCE(LXMessage.py:414-421). - PROPAGATED: the message is wrapped into the propagation envelope (see
Propagation); if the envelope size
<= LINK_PACKET_MAX_CONTENTit is aPACKET, otherwise aRESOURCE(LXMessage.py:423-441). - PAPER: if the encrypted paper form
<= PAPER_MDU(2210) the representation is paper; otherwisepack()raises (LXMessage.py:443-455).
content_size is the serialized-payload measure from
Identifiers and sizes (LXMessage.py:385).
An implementation MUST apply the same thresholds so that a message a Python peer would send as a single packet is not sent as a resource (and vice versa), since the on-air framing differs.
On-air forms
| Method | Representation | On-air bytes | Citation |
|---|---|---|---|
| OPPORTUNISTIC | PACKET | packed[16:] (destination hash omitted) | LXMessage.py:631 |
| DIRECT | PACKET | full packed over a Link | LXMessage.py:633 |
| DIRECT | RESOURCE | full packed as a Resource over a Link | LXMessage.py:650-651 |
| PROPAGATED | PACKET/RESOURCE | propagation_packed to a propagation node | LXMessage.py:634-635,652-653 |
| PAPER | (paper) | lxm:// URI or QR | LXMessage.py:687-702 |
The opportunistic packet omits the leading 16-byte destination hash because the
Reticulum packet header already addresses the destination; the receiver
reconstructs the full message by prepending the known destination hash. This is
proven by [VEC-DLV-OPP] (on_air_hex == packed[16:]) and the direct full-bytes
form by [VEC-DLV-DIRECT].