變更交談狀態 (CPI-C)

交談狀態的變更可能會導致:

  • 本機交易程式 (TP) 進行的呼叫。

  • 夥伴 TP 所進行的呼叫。

  • 錯誤狀況。

    下列範例顯示通訊 (CPI) 呼叫的一般程式設計介面,可以將交談的狀態從 SEND 變更為接收,以及從接收變更為傳送。

注意

任何 TP 都可以傳送或接收資料,無論是叫用 TP (啟動對話) 的 TP,或可叫用 TP (已回應要求的 TP 來啟動交談) 。

此範例說明 CPI 呼叫如何變更交談狀態。 在此表中,每個交談狀態都會以粗體顯示,並在該狀態中使用的 CPI C 呼叫之前。

由叫用 TP 發出 由可叫用 TP 發出
交談狀態:重設
Initialize_Conversation
交談狀態: INITIALIZE
Set_Sync_Level
(sync_level = CM_CONFIRM)
分配
交談狀態:傳送
Send_Data
Prepare_to_Receive 交談狀態:重設
Accept_Conversation
交談狀態:接收
(status_received = CM_CONFIRM_SEND_RECEIVED)
交談狀態: CONFIRM_SEND
確認
交談狀態:傳送
(return_code = CM_OK) Send_Data
交談狀態:接收 確認
(status_received = CM_CONFIRM_RECEIVED)
交談狀態:確認
Request_To_Send
已確認
交談狀態:接收 (return_code = CM_OK)
(request_to_send_received = CM_REQ_TO_SEND_RECEIVED)
Prepare_To_Receive
接收
(status_received = CM_CONFIRM_SEND_RECEIVED)
交談狀態: CONFIRM_SEND
已確認
交談狀態:傳送 (return_code = CM_OK)
交談狀態:接收
Send_Data
解除配置
接收
(status_received = CM_CONFIRM_DEALLOC_RECEIVED)
交談狀態:
CONFIRM_DEALLOCATE
已確認
(return_code = CM_OK) 交談狀態:重設
交談狀態:重設

初始狀態

在配置交談之前,會重設這兩個 TPs 的狀態。

在此範例中,配置交談之後,會傳送叫用 TP 的初始狀態,並接收可叫用 TP。

變更為接收狀態

Prepare_To_Receive呼叫可讓 TP 變更傳送至接收狀態的交談。 此呼叫:

  • 清除本機 LU 的傳送緩衝區。

  • 透過接收呼叫的status_received參數,將 CM_CONFIRM_SEND 指標傳送給夥伴 TP,因為同步處理層級設定為 CM_CONFIRM。 此指標會告訴夥伴 TP,在夥伴 TP 開始傳送資料之前,必須先 確認 回應。

變更為傳送狀態

Request_To_Send呼叫會通知夥伴 tp (,交談處於傳送狀態) 表示交談處於接收狀態的本機 TP () 想要傳送資料。 此要求會透過Confirm通話的request_to_send_received參數傳達給夥伴 TP。 (request_to_send_received 參數也會傳回 Send_Data 和其他呼叫。 )

當夥伴 TP 發出 Prepare_To_Receive 呼叫時,對話狀態會變更為要接收夥伴 tp,讓本地 TP 能夠傳送資料。

重要

發出 Request_To_Send 不會變更交談的狀態。 收到要傳送的要求時,不需要夥伴 TP 來變更對話狀態。 它可以忽略要求。