變更交談狀態 (CPI-C)

交談狀態的變更可能來自:

  • 本機交易程式所發出的呼叫 (TP) 。

  • 合作夥伴 TP 進行的呼叫。

  • 錯誤狀況。

    下列範例示範通訊的通用程式設計介面 (CPI-C) 呼叫如何將交談的狀態從 SEND 變更為 RECEIVE,以及從 RECEIVE 變更為 SEND。

注意

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

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

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

初始狀態

在配置交談之前,這兩個 TP 的狀態都是 RESET。

在此範例中,在配置交談之後,初始狀態為 SEND,用於叫用 TP,而 RECEIVE 則為可叫用的 TP。

變更為 RECEIVE 狀態

Prepare_To_Receive呼叫可讓 TP 將交談從 SEND 變更為 RECEIVE 狀態。 此呼叫:

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

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

變更為 SEND 狀態

Request_To_Send呼叫會通知合作夥伴 TP (交談處於 SEND 狀態,) 交談處於 RECEIVE 狀態的本機 TP (,) 想要傳送資料。 此要求會透過Confirm呼叫的request_to_send_received參數,與合作夥伴 TP 通訊。 (request_to_send_received 參數 也會傳回給 Send_Data 和其他呼叫。)

當合作夥伴 TP 發出 Prepare_To_Receive 呼叫時,交談狀態會變更為合作夥伴 TP 的 RECEIVE,讓本機 TP 能夠傳送資料。

重要

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