Skip to main content

Module concat

Module concat 

Source
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§

Kind

Constants§

DEFAULT_MAX_PENDING
Incomplete messages a Reassembler::new holds before evicting the oldest.