Expand description
Reassembly of concatenated SMS (23.040 §9.2.3.24.1/.8).
Parts are keyed by (TPDU type, address, reference and its width, total) so a DELIVER and a SUBMIT sharing a reference never merge, nor do an 8-bit and a 16-bit reference with the same value. Payloads are joined before decoding: GSM 7-bit septets, UCS2 octets (a surrogate pair split across parts decodes correctly).
Memory is bounded: at most Reassembler::max_pending incomplete messages are held
(default DEFAULT_MAX_PENDING); a new one beyond that evicts the oldest (by the
newest part’s timestamp, then arrival). Part slots are allocated as parts arrive. No
timers: pass a timestamp of your choice to Reassembler::push and call
Reassembler::expire_before periodically so stale parts do not wait for eviction.
Structs§
- Fragment
- One part’s user data, UDH removed.
- Key
- Message
- A complete message.
- Reassembler
Enums§
Constants§
- DEFAULT_
MAX_ PENDING - Incomplete messages a
Reassembler::newholds before evicting the oldest.