Modifica degli stati di conversazione (CPI-C)

Una modifica dello stato della conversazione può derivare da:

  • Chiamata effettuata dal programma di transazione locale.

  • Chiamata effettuata dal partner TP.

  • Condizione di errore.

    L'esempio seguente illustra 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 che ha richiamato (il TP che ha avviato la conversazione) o il TP invokable (TP che ha risposto a una richiesta di avvio di una conversazione).

Questo esempio illustra come 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 in tale stato.

Rilasciato dal TP di richiamo Rilasciato dal TP invokable
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: RECEIVE
(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: RECEIVE Confirm
(status_received= CM_CONFIRM_RECEIVED)
Stato della conversazione: CONFIRM
Request_To_Send
Confermato
Stato della conversazione: RECEIVE (return_code=CM_OK)
(request_to_send_received= CM_REQ_TO_SEND_RECEIVED)
Prepare_To_Receive
Receive
(status_received= CM_CONFIRM_SEND_RECEIVED)
Stato della conversazione: CONFIRM_SEND
Confermato
Stato della conversazione: SEND (return_code=CM_OK)
Stato della conversazione: RECEIVE
Send_Data
Deallocare
Receive
(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 dell'allocazione della conversazione, lo stato è RESET per entrambi i TP.

Nell'esempio, dopo l'allocazione della conversazione, lo stato iniziale è SEND per il TP di chiamata e RECEIVE per il TP che può essere richiamato.

Passaggio allo stato RECEIVE

La Prepare_To_Receive chiamata consente a un TP di modificare lo stato della conversazione da SEND a RECEIVE. Questa chiamata:

  • Scarica il buffer di trasmissione della LU locale.

  • Invia un indicatore CM_CONFIRM_SEND al partner TP tramite il parametro status_received di una chiamata Receive , perché il livello di sincronizzazione è impostato su CM_CONFIRM. Questo indicatore indica al partner TP che è prevista una risposta confermata prima che il partner TP possa iniziare a inviare dati.

Passaggio allo stato SEND

La Request_To_Send chiamata informa il partner TP (per il quale la conversazione è nello stato SEND) che il TP locale (per cui la conversazione si trova nello stato RECEIVE) vuole inviare dati. Questa richiesta viene comunicata al partner TP tramite il parametro request_to_send_received della chiamata Confirm . Il parametro request_to_send_received viene restituito anche a Send_Data e ad altre chiamate.

Quando il partner TP invia la chiamata Prepare_To_Receive , lo stato della conversazione cambia in RECEIVE per il partner TP, rendendo possibile l'invio dei dati da parte del TP locale.

Importante

L'Request_To_Send non modifica lo stato della conversazione. Quando si riceve una richiesta da inviare, il partner TP non deve modificare lo stato della conversazione. Può ignorare la richiesta.