Produced by OmniGraffle 7.7.1 2018-07-04 12:39:41 +0000 transmit path Layer 1 timed events thread proxy reader writer history dest. locators writer QOS QOS "writer" is a DDSI writer, which is a proxy for a local DCPS writer; "proxy reader" is a proxy for a remote DDSI reader. transmit path set locators set ack info serdata is CDR encoded data and a separate copy of its key (except for discovery message where it uses the DDSI "parameter-list" encoding). xpacks an xmsg either references the destination address set of a writer, or a locator of a proxy-reader. application writes sockets writer history indexed by sequence number (seqidx; for retransmitting on request) and by key (tlidx)—key used only for retaining/dropping data when new data comes in ack info: highest sequence number ack'd so far; writer can drop non-TL msgs from the WHC with sequence numbers less than the minimum over all matched readers; unreliable readers have it fixed at MAX. whc node ser.data refcounted refcounted copied writer match proxy reader match guid guid set set guid hash table guid hash table DCPS writer xmsg timed events: xmsgs for delayed transmission (delay can be 0), heartbeat, ack generation, automatic liveliness "participant message" generation, SPDP generation, &c. an xmsg for transmitting a sample references a serdata along with a base+length pair; large samples are fragmented "on-the-fly", each fragment references a different range of the CDR encoded data. xpacks bundle xmsgs into DDSI messages, copying some things and leaving others as references; xmsgs included in an xpack are explicitly tracked. reader match reader rdary guid set set The local delivery path is essentially the same for local writers & for proxy writers