Modifica degli stati di conversazione (CPI-C)
Una modifica nello stato della conversazione può risultare da:
Chiamata effettuata dal programma di transazione locale (TP).
Una chiamata effettuata dal partner TP.
Condizione di errore.
Nell'esempio seguente viene illustrato come le chiamate CPI-C (Common Programming Interface for Communications) possono modificare lo stato della conversazione da SEND a RECEIVE e da RECEIVE a SEND.
Nota
Qualsiasi TP può inviare o ricevere dati, indipendentemente dal fatto che sia il TP (tp che ha avviato la conversazione) o il TP richiamabile (il TP che ha risposto a una richiesta per avviare una conversazione).
In questo esempio viene illustrato il modo in cui le chiamate CPI-C possono modificare lo stato della conversazione. In questa tabella ogni stato della conversazione viene visualizzato in grassetto e precede le chiamate CPI-C usate durante tale stato.
Rilasciato dal TP richiamato | Rilasciato dal TP richiamabile |
---|---|
Stato della conversazione: RESET | |
Initialize_Conversation | |
Stato della conversazione: INITIALIZE | |
Set_Sync_Level | |
(sync_level=CM_CONFIRM) | |
Allocare | |
Stato della conversazione: SEND | |
Send_Data | |
Prepare_to_Receive | Stato della conversazione: RESET |
Accept_Conversation | |
Stato della conversazione: RICEZIONE | |
(status_received= CM_CONFIRM_SEND_RECEIVED) | |
Stato della conversazione: CONFIRM_SEND | |
Confirm | |
Stato della conversazione: SEND | |
(return_code=CM_OK) | Send_Data |
Stato della conversazione: RICEZIONE | Confirm |
(status_received= CM_CONFIRM_RECEIVED) | |
Stato della conversazione: CONFERMARE | |
Request_To_Send | |
Confermato | |
Stato della conversazione: RICEZIONE | (return_code=CM_OK) |
(request_to_send_received= CM_REQ_TO_SEND_RECEIVED) | |
Prepare_To_Receive | |
Ricevere | |
(status_received= CM_CONFIRM_SEND_RECEIVED) | |
Stato della conversazione: CONFIRM_SEND | |
Confermato | |
Stato della conversazione: SEND | (return_code=CM_OK) |
Stato della conversazione: RICEZIONE | |
Send_Data | |
Deallocare | |
Ricevere | |
(status_received= CM_CONFIRM_DEALLOC_RECEIVED) | |
Stato della conversazione: CONFIRM_DEALLOCATE |
|
Confermato | |
(return_code=CM_OK) | Stato della conversazione: RESET |
Stato della conversazione: RESET |
Stati iniziali
Prima di allocare la conversazione, lo stato è RESET per entrambi i provider di servizi.
Nell'esempio, dopo l'allocazione della conversazione, lo stato iniziale è SEND per il nome TP e RECEIVE per il TP richiamabile.
Modifica dello stato DI RICEZIONE
La chiamata Prepare_To_Receive consente a un TP di modificare la conversazione dallo stato SEND a RECEIVE. Questa chiamata:
Scarica il buffer di invio dell'lu locale.
Invia un indicatore CM_CONFIRM_SEND al partner TP tramite il parametro status_received di una chiamata di ricezione, perché il livello di sincronizzazione è impostato su CM_CONFIRM. Questo indicatore indica al partner TP che è prevista una risposta confermata prima che il TP partner possa iniziare a inviare dati.
Modifica dello stato SEND
La chiamata Request_To_Send informa il tp del partner (per il quale la conversazione è in stato SEND) che il TP locale (per il quale la conversazione è in stato RECEIVE) vuole inviare dati. Questa richiesta viene comunicata al partner TP tramite il parametro request_to_send_received della chiamata Conferma . Il parametro request_to_send_received viene restituito anche a Send_Data e altre chiamate.
Quando il partner TP rilascia la chiamata Prepare_To_Receive , lo stato della conversazione viene modificato in RECEIVE per il partner TP, rendendo possibile che il TP locale invii dati.
Importante
L'emissione di Request_To_Send non modifica lo stato della conversazione. Al momento della ricezione di una richiesta di invio, il tp partner non è necessario per modificare lo stato della conversazione. Può ignorare la richiesta.