Elaborazione delle conferme
La sequenza di eventi per l'elaborazione della conferma è la seguente:
Stabilire il livello di sincronizzazione.
Inviare una richiesta di conferma.
Ricevere i dati e la richiesta di conferma.
Rispondere alla richiesta di conferma.
Deallocare la conversazione.
Utilizzando l'elaborazione della conferma, un TP invia una richiesta di conferma con i dati; il partner TP conferma la ricezione dei dati o indica che si è verificato un errore. Ogni volta che i due provider di servizi di transazione scambiano una richiesta di conferma e una risposta, vengono sincronizzati.
Nota
Anche se l'esempio in questa sezione non mostra questo, qualsiasi tp può inviare o ricevere dati, indipendentemente dal fatto che il tp sia il tp richiamante o il tp richiamabile.
Nell'esempio seguente viene illustrata l'elaborazione della conferma.
Rilasciato dal richiamo del tp | Rilasciato dal tp richiamabile |
---|---|
TP_STARTED | |
MC_ALLOCATE | |
(synclevel=AP_CONFIRM_SYNC_LEVEL) | |
MC_SEND_DATA | |
(type=AP_SEND_DATA_CONFIRM) | |
RECEIVE_ALLOCATE | |
MC_RECEIVE_AND_WAIT | |
MC_SEND_DATA | |
(type=AP_SEND_DATA_DEALLOC_SYNC_LEVEL) | |
MC_RECEIVE_AND_WAIT | |
(primary_rc=AP_OK) | |
(rtn_status=AP_YES) | |
(what_rcvd= AP_DATA_COMPLETE_CONFIRM_ DEALLOCATE) | |
MC_CONFIRMED | |
TP_ENDED | TP_ENDED |
Definizione del livello di sincronizzazione
Il parametro synclevel di MC_ALLOCATE determina il livello di sincronizzazione della conversazione. Esistono tre possibili livelli di sincronizzazione:
AP_NONE, in base al quale non viene eseguita l'elaborazione della conferma.
AP_CONFIRM_SYNC_LEVEL, con cui i provider di servizi di transazione possono richiedere la conferma della ricezione dei dati e rispondere alle richieste di conferma dei dati.
AP_SYNCPT, in cui i criteri di transazione operano con il supporto del livello di punto di sincronizzazione 2 per la conferma della ricezione dei dati.
Invio di una richiesta di conferma
MC_SEND_DATA con tipo AP_SEND_DATA_CONFIRM ha due effetti:
Scarica il buffer di invio dell'lu locale e invia tutti i dati contenuti nel buffer al tp del partner.
Invia una richiesta di conferma che il tp del partner riceve tramite il parametro what_rcvd di un verbo di ricezione.
Dopo l'emissione di MC_SEND_DATA, il tp locale attende la conferma dal tp del partner.
Ricezione di dati e richiesta di conferma
Il parametro what_rcvd di MC_RECEIVE_AND_WAIT indica:
Stato dei dati ricevuti: completo o incompleto.
Elaborazione futura prevista del tp locale.
Nell'esempio what_rcvd è AP_DATA_COMPLETE_CONFIRM, a indicare che lo stato è completo e viene richiesta una conferma.
Risposta a una richiesta di conferma
Il partner TP rilascia MC_CONFIRMED per confermare la ricezione dei dati. In questo modo il tp locale viene liberato per riprendere l'elaborazione.
Deallocazione della conversazione
MC_SEND_DATA invia una richiesta di conferma con i dati quando vengono soddisfatte tutte le condizioni seguenti:
Il livello di sincronizzazione della conversazione (stabilito dal parametro synclevel di MC_ALLOCATE) è AP_CONFIRM_SYNC_LEVEL.
Il parametro di tipo di MC_SEND_DATA è impostato su AP_SEND_DATA_DEALLOC_SYNC_LEVEL.
Il parametro what_rcvd del MC_RECEIVE_AND_WAIT finale è AP_DATA_COMPLETE_CONFIRM_DEALLOCATE, a indicare che è necessaria una conferma della ricezione dei dati prima che APPC dealloca la conversazione. Il tp locale attende questa conferma fino a quando il partner TP non MC_CONFIRMED.