Important: The information in this document is obsolete and should not be used for new development.
At-Least-Once and Exactly-Once Transactions
ATP supports two types of transactions: at-least-once transactions and exactly-once transactions. An at-least-once transaction ensures that the responder application receives every request directed to it at least once. However, this mode allows for the possibility of a responder application receiving duplicate requests.For example, when you send a request that the .ATP driver code on the responder side receives, it passes the request on to the responder application. Your responder applica-
tion then processes the request and creates a response to it. The ATP responder driver sends that response to your requester application. If the response is lost during the transmission, ATP retransmits the request after a period of time passes; you can set
a value to control this timeout period. The ATP responder driver code receives the duplicate request and repeats the cycle of passing it on to your responder application for processing. At-least-once transactions ensure that the data is delivered at least once, and possibly more than once. You can use this transaction mode if it does not have adverse affects on the responder application.An exactly-once transaction ensures that the responder application receives a specific request only once. These are also referred to as XO, as in exactly-once transactions.
To create this result, the ATP responder code saves the response packets until the transaction is complete. This means that ATP itself can retransmit packets without requiring that your responder application reprocess the request.The ATP responder code saves the response packets until the ATP code on the requester side indicates that it has received all of the packets. The ATP code on the requester side sends a transaction release packet to the ATP code on the responder side to signal that the requester application has received all of the response packets, so that ATP can now release them.
Because the transaction release packet could also be lost during transmission, ATP backs up this process with a transaction release timer. ATP marks packets saved for retrans-
mission with a timestamp. When a packet ages beyond the amount of time that you set for the responder's release timer, ATP discards the packet.You can set the release timer value that the ATP code on the responder end uses from your requester application; the send request functions include a release timer parameter for this purpose. For more information about this parameter, see "PSendRequest" on page 6-24 or "PNSendRequest" on page 6-27.