用于确认处理的事件序列如下所示:
建立同步级别。
发送确认请求。
接收数据和确认请求。
响应确认请求。
解除分配对话。
使用确认处理,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_ALLOCATE 的 synclevel 参数确定会话的同步级别。 有三种可能的同步级别:
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_WAIT 的 what_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_WAIT 的 what_rcvd 参数是AP_DATA_COMPLETE_CONFIRM_DEALLOCATE,指示在 APPC 解除分配会话之前需要确认接收数据。 本地 TP 会等待此确认,直到合作伙伴 TP 发出MC_CONFIRMED。