确认处理 (CPI-C)
用于确认处理的事件序列如下所示:
建立同步级别。
发送确认请求。
接收数据和确认请求。
响应确认请求。
解除分配对话。
使用确认处理, (TP) 事务程序发送包含数据的确认请求。 合作伙伴 TP 确认收到数据或指示发生了错误。 每次两个 TP 交换确认请求和响应时,它们都会同步。
注意
尽管本部分中的示例未显示此内容,但无论 TP 是调用 TP 还是可调用 TP,任何 TP 都可以发送或接收数据。
下表说明了确认处理所涉及的步骤。
步骤 | 由调用 TP 颁发 | 由可调用的 TP 颁发 |
---|---|---|
1 | Initialize_Conversation | |
2 | Set_Sync_Level (sync_level=CM_CONFIRM) | |
3 | 分配 | |
4 | Send_Data | |
5 | 确认 | |
6 | Accept_Conversation | |
7 | Receive (data_received= CM_COMPLETE_DATA_RECEIVED) (status_received= CM_CONFIRM_RECEIVED) | |
8 | 已确认 | |
9 | (return_code=CM_OK) | |
10 | Send_Data | |
11 | 释放 | |
12 | 接收 | |
13 | (status_received= CM_CONFIRM_DEALLOC_RECEIVED) | |
14 | 已确认 | |
15 | (return_code=CM_OK) |
建立同步级别
Set_Sync_Level调用可替代对话的默认同步级别。 同步级别是会话的特征之一。 有两种可能的同步级别:
CM_CONFIRM,根据该要求,TP 可以请求确认接收数据并响应此类请求。
CM_NONE为默认值,在默认情况下,确认处理不会发生。
Initialize_Conversation调用设置会话的默认特征。 有几个以 Set_ 开头的调用。 通过这些调用,可以替代默认聊天特征。
发送确认请求
发出 Confirm 调用有两种效果:
它会刷新本地 LU 的发送缓冲区,并将缓冲区中包含的任何数据发送到伙伴 TP。
它通过 Receive 调用的 status_received 参数发送合作伙伴 TP 接收的确认请求。
发出 “确认”后,本地 TP 将等待合作伙伴 TP 的确认。
接收确认请求
Receive 调用的 status_received 参数指示本地 TP 所需的任何未来操作。
在此示例中,第一个 Receive 的status_received 为 CM_CONFIRM_RECEIVED,指示需要确认才能继续合作伙伴 TP。
响应确认请求
合作伙伴 TP 发出 “已确认 ”调用以确认接收数据。 这会释放本地 TP 以恢复处理。
解除分配对话
由于会话的同步级别设置为CM_CONFIRM, 因此 Deallocate 会发送一个确认请求,其中包含从缓冲区刷新的数据。
对于第二个 接收 呼叫, status_received CM_CONFIRM_DEALLOC_RECEIVED,指示合作伙伴 TP 需要确认(由 已确认 呼叫生成)才能解除分配会话。