確認處理的流程如下:
設定同步層級。
發送確認請求。
收到資料並要求確認。
回覆確認請求。
把對話分配出來。
透過確認處理,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。