確認處理

確認處理的流程如下:

  1. 設定同步層級。

  2. 發送確認請求。

  3. 收到資料並要求確認。

  4. 回覆確認請求。

  5. 把對話分配出來。

    透過確認處理,TP 會隨資料發送確認請求;合作夥伴TP確認已收到資料或表示發生錯誤。 每當兩個 TP 交換確認請求與回應時,都會同步。

備註

雖然本節範例未顯示此點,但任何 TP 都可以傳送或接收資料,無論該 TP 是調用的 TP 還是可調用的 TP。

以下範例說明確認處理。

由呼叫的TP發出 由可呼叫的TP發出
TP_STARTED
MC_分配
(同步級別=AP_CONFIRM_SYNC_LEVEL)
MC_SEND_DATA
(類型=AP_SEND_DATA_CONFIRM)
RECEIVE_ALLOCATE(接收分配)
MC_RECEIVE_AND_WAIT
MC_SEND_DATA
(類型=AP_SEND_DATA_DEALLOC_SYNC_LEVEL)
MC_RECEIVE_AND_WAIT
(primary_rc=AP_OK)
(rtn_status=AP_YES)
(what_rcvd= AP_DATA_COMPLETE_CONFIRM_解除分配)
MC_CONFIRMED
TP_ENDED TP_結束

設定同步層級

同步層級參數 MC_ALLOCATE 決定了對話的同步程度。 有三種可能的同步等級:

  • AP_NONE,在此條件下不進行確認處理。

  • 在AP_CONFIRM_SYNC_LEVEL下,TPs可以請求確認收到資料,並回應資料確認的請求。

  • AP_SYNCPT,TP 在同步點層級二的支援下運作,以確認資料接收。

發送確認請求

MC_SEND_DATA 的類型為 AP_SEND_DATA_CONFIRM,具有兩種效果:

  • 它會清除本地 LU 的 send buffer,並將緩衝區內的資料傳送給合作夥伴 TP。

  • 它會發送確認請求給合作夥伴 TP,該夥伴 TP 會透過接收命令的 what_rcvd 參數接收該請求。

    發出 MC_SEND_DATA後,當地TP會等待合作夥伴TP的確認。

接收資料與確認請求

what_rcvd 參數在 MC_RECEIVE_AND_WAIT 中表示:

  • 接收資料狀態:完整或不完整。

  • 預期未來的處理將由本地TP負責。

    在範例中, what_rcvd AP_DATA_COMPLETE_CONFIRM,表示狀態已完成並請求確認。

回覆確認請求

合作夥伴 TP 發出 MC_CONFIRMED 以確認資料已收到。 這樣可以讓本地 TP 恢復處理。

釋放內存中的對話

當以下條件全部成立時,MC_SEND_DATA 會發送包含資料的確認請求:

  • 對話的同步程度(由 MC_ALLOCATE 的同步層參數決定)是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。