确认处理

用于确认处理的事件序列如下所示:

  1. 建立同步级别。

  2. 发送确认请求。

  3. 接收数据和确认请求。

  4. 响应确认请求。

  5. 解除分配对话。

    使用确认处理,TP 发送包含数据的确认请求;合作伙伴 TP 确认收到数据或指示发生了错误。 每次两个TP 交换确认请求和响应时,它们都会同步。

注意

尽管本部分中的示例未显示此内容,但无论 TP 是调用 TP 还是可调用 TP,任何 TP 都可以发送或接收数据。

以下示例演示了确认处理。

由调用 TP 颁发 由可调用的 TP 颁发
TP_STARTED
MC_ALLOCATE
(synclevel=AP_CONFIRM_SYNC_LEVEL)
MC_SEND_DATA
(type=AP_SEND_DATA_CONFIRM)
RECEIVE_ALLOCATE
MC_RECEIVE_AND_WAIT
MC_SEND_DATA
(type=AP_SEND_DATA_DEALLOC_SYNC_LEVEL)
MC_RECEIVE_AND_WAIT
(primary_rc=AP_OK)
(rtn_status=AP_YES)
(what_rcvd= AP_DATA_COMPLETE_CONFIRM_ DEALLOCATE)
MC_CONFIRMED
TP_ENDED TP_ENDED

建立同步级别

MC_ALLOCATEsynclevel 参数确定会话的同步级别。 有三种可能的同步级别:

  • AP_NONE,在确认处理下不会进行。

  • AP_CONFIRM_SYNC_LEVEL,根据此,TP 可以请求确认接收数据并响应数据确认请求。

  • AP_SYNCPT,TP 在同步点级别 2 支持下运行,用于确认接收数据。

发送确认请求

类型为 AP_SEND_DATA_CONFIRM 的MC_SEND_DATA有两种效果:

  • 它会刷新本地 LU 的发送缓冲区,并将缓冲区中包含的任何数据发送到合作伙伴 TP。

  • 它发送合作伙伴 TP 通过接收谓词的 what_rcvd 参数接收的确认请求。

    发出 MC_SEND_DATA后,本地 TP 将等待合作伙伴 TP 的确认。

接收数据和确认请求

MC_RECEIVE_AND_WAITwhat_rcvd 参数指示:

  • 接收的数据的状态:已完成或不完整。

  • 预期本地 TP 的未来处理。

    在此示例中, what_rcvd AP_DATA_COMPLETE_CONFIRM,指示状态已完成并请求确认。

响应确认请求

合作伙伴 TP 发出 MC_CONFIRMED 以确认接收数据。 这样,本地 TP 可恢复处理。

解除分配对话

如果 满足以下所有条件,MC_SEND_DATA发送包含数据的确认请求:

  • 会话的同步级别 (由 MC_ALLOCATE) synclevel 参数建立AP_CONFIRM_SYNC_LEVEL。

  • MC_SEND_DATA 的类型参数设置为 AP_SEND_DATA_DEALLOC_SYNC_LEVEL。

  • 最终 MC_RECEIVE_AND_WAITwhat_rcvd 参数是AP_DATA_COMPLETE_CONFIRM_DEALLOCATE,指示在 APPC 解除分配会话之前需要确认接收数据。 本地 TP 会等待此确认,直到合作伙伴 TP 发出MC_CONFIRMED