确认处理 (CPI-C)

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

  1. 建立同步级别。

  2. 发送确认请求。

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

  4. 响应确认请求。

  5. 解除分配对话。

    使用确认处理, (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 需要确认(由 已确认 呼叫生成)才能解除分配会话。