To send or receive messages using certified delivery features, a program must first create a CM transport (also called a delivery-tracking transport). Each CM transport employs an ordinary transport for network communications. The CM transport adds information so that it can participate in certified delivery protocols; the additional information includes a name and a ledger.
A name is reusable when a program supplies it explicitly to the CM transport creation call. When a CM transport with a reusable name also has a file-based ledger, it operates as an instance of a
persistent correspondent—which allows continuity of certified delivery beyond transport invalidation and program restarts (for more information, see
Persistent Correspondents).
Programs may omit the name from the CM transport creation call—in which case the call generates a unique, non-reusable name for the CM transport. No other CM transport on any computer can
ever have the same name. As a result, a CM transport with a non-reusable name operates as a
transient correspondent—no subsequent CM transport can continue the certified delivery behavior of a transient CM transport.
Each CM transport keeps a ledger, in which it records information about every unresolved outbound certified message, every subject for which this CM transport receives (inbound) certified messages, and other cooperating CM transports.
Programs may store the ledger in a ledger file, or in process-based storage within the running program. (Even when a CM transport uses a ledger file, it may sometimes replicate parts of the ledger in process-based storage for efficiency; however, programmers cannot rely on this replication.)
A CM transport with a file-based ledger and a reusable name qualifies as a persistent correspondent, with certified delivery behavior that can extend beyond CM transport destruction.