Informs the remote TP that the local TP has detected an error
in an application. Places the remote TP in Receive state and the
local TP in Send state.
Description |
 |
The MCSendError intrinsic informs the remote TP that the local
TP has detected an application error and is unable to receive any
further information. It can be called from any state except Deallocate
state or Reset state. Successful execution of this intrinsic places
the remote TP in Receive state (if it is not already in Receive
state) and the local TP in Send state (if it is not already in Send
state).
The most common use of MCSendError is to respond negatively to a confirmation request.
A call to MCSendError ends posting. For more information on posting, see
the description of MCPostOnRcpt, earlier in this chapter.
The MCSendError intrinsic operates differently depending on the current
state of the TP that calls it. Following are descriptions of what MCSendError does in each conversation state:
Send state
When MCSendError is called from Send state, it flushes the send
buffer.
Receive state
When MCSendError is called from Receive state, the states of the
local and remote TPs are immediately reversed: The local TP is placed
in Send state and the remote TP is placed in Receive state. All
data in the receive buffer of the local TP is purged. However, if
a RequestToSend indicator is waiting in the receive buffer, it
is preserved for the next call to an intrinsic that uses the RequestToSendReceived parameter.
All Confirm states
When MCSendError is called from one of the Confirm states, all
data from the remote TP has already been received, so the buffers
are already empty. The local TP is placed in Send state, and the
remote TP is placed in Receive state. The call to MCSendError serves as a negative response to the remote TP's
confirmation request, so the request is no longer pending.