Skip to main content

Module flow

Module flow 

Source
Expand description

Rendered diagram of a multi-part transfer.

Each fragment is a normal OSDP packet whose data block is prefixed with a MultipartHeader. The receiver tracks the next-expected offset and rejects any out-of-order, overlapping, or total-changing fragment.

sequenceDiagram
    participant TX as MultipartTx<br/>(splitter)
    participant RX as MultipartRx<br/>(assembler)
    TX->>RX: hdr(total=N, offset=0,         frag=k₀) ‖ payload₀
    RX->>RX: state = AwaitOffset(k₀)
    TX->>RX: hdr(total=N, offset=k₀,        frag=k₁) ‖ payload₁
    RX->>RX: state = AwaitOffset(k₀+k₁)
    TX->>RX: hdr(total=N, offset=k₀+k₁,     frag=k₂) ‖ payload₂
    RX-->>TX: complete (reassembled body, N bytes)
    Note over TX,RX: TX may abort by sending<br/>hdr(total=N, offset≥N, frag=0)