Condividi tramite


Modificare gli stati della conversazione

Una modifica dello stato della conversazione può derivare da:

  • Verbo emesso dal TP locale.

  • Verbo rilasciato dal partner TP.

  • Condizione di errore.

    L'esempio seguente illustra come i verbi APPC possono modificare lo stato della conversazione da SEND a RECEIVE e da RECEIVE a SEND.

Annotazioni

Qualsiasi TP può inviare o ricevere dati, indipendentemente dal fatto che si tratti del TP che ha avviato la conversazione o del TP richiamabile (tp che ha risposto a una richiesta di avvio di una conversazione).

Questo esempio mostra come i verbi APPC possono modificare lo stato della conversazione. In questa tabella ogni stato della conversazione viene visualizzato in grassetto e precede i verbi APPC usati in tale stato.

Rilasciato dal tp di richiamo Rilasciato dal TP richiamabile
TP_STARTED
Stato conversazione: RESET
MC_ALLOCATE
(synclevel=AP_CONFIRM_SYNC_LEVL)
Stato conversazione: SEND
MC_SEND_DATA
MC_PREPARE_TO_RECEIVE
(ptr_type=AP_SYNC_LEVEL)
Stato conversazione: RESET
RICEVI_ASSEGNA
Stato conversazione: RICEZIONE
MC_RICEVI_E_ATTENDI
(primary_rc=AP_OK)
(what_rcvd=AP_DATA_COMPLETE)
MC_RICEVI_E_ATTENDI
(primary_rc=AP_OK)
(what_rcvd=AP_CONFIRM_SEND)
Stato conversazione: CONFIRM_SEND
MC_CONFIRMED
Stato conversazione: SEND
MC_INVIO_DATI
MC_CONFIRM
Stato conversazione: RICEZIONE
MC_RECEIVE_AND_WAIT
(primary_rc=AP_OK)
(what_rcvd=AP_DATA_COMPLETE)
Ricevi_e_Attendi_MC
(primary_rc=AP_OK)
(what_rcvd=AP_CONFIRM_COSA_RICEVUTO)
Stato conversazione: CONFERMA
MC_RICHIESTA_DI_INVIO
MC_CONFIRMED
(rts_rcvd=AP_YES)
MC_PREPARARE_PER_RICEVERE
(ptr_type=AP_SYNC_LEVEL)
Stato conversazione: RICEZIONE
MC_RECEIVE_AND_WAIT
(primary_rc=AP_OK)
(what_rcvd=AP_CONFIRM_SEND)
Stato conversazione: CONFIRM_SEND
MC_CONFIRMED
Stato conversazione: SEND
Invio dati MC
MC_DEALLOCATE
(dealloc_type=AP_SYNC_LEVEL)
Stato conversazione: RICEZIONE
MC_RECEIVE_AND_WAIT
(primary_rc=AP_OK)
(what_rcvd=AP_DATA_COMPLETE)
MC_RECEIVE_AND_WAIT
(primary_rc=AP_OK)
(what_rcvd=AP_CONFIRM_DEALLOCATE)
Stato della conversazione: CONFIRM_DEALLOCATE
MC_CONFERMATO
Stato conversazione: RESET Stato conversazione: RESET
TP_CONCLUSO TP_ENDED

Stati iniziali

Prima di allocare la conversazione, lo stato è RESET per entrambi i TP.

Nell'esempio, dopo l'allocazione della conversazione, lo stato iniziale è SEND per il TP chiamante e RECEIVE per il TP invocabile.

Modifica dello stato RECEIVE

MC_PREPARE_TO_RECEIVE consente a un tp di modificare la conversazione dallo stato SEND a RECEIVE. Questo verbo:

  • Svuota il buffer di invio dell'LU locale.

  • Invia l'indicatore AP_CONFIRM_SEND al partner TP tramite il parametro what_rcvd di un verbo di ricezione. Questo indicatore informa il partner TP che è prevista una risposta MC_CONFIRMED prima che il TP del partner possa iniziare a inviare dati.

    L'elaborazione della conferma viene eseguita quando vengono soddisfatte le condizioni seguenti:

  • Il parametro ptr_type è impostato su AP_SYNC_LEVEL.

  • Il livello di sincronizzazione della conversazione è impostato su AP_CONFIRM_SYNC_LEVEL.

    Per altre informazioni sull'elaborazione della conferma, vedere Elaborazione conferma.

Annotazioni

L'emissione del comando MC_RECEIVE_AND_WAIT mentre la conversazione si trova nello stato SEND svuota il buffer invio della LU e modifica lo stato della conversazione in RECEIVE. La modifica dello stato della conversazione in questo modo non supporta l'elaborazione della conferma.

Modifica dello stato SEND

MC_REQUEST_TO_SEND informa il partner TP (per cui la conversazione è in stato SEND) che il TP locale (per cui la conversazione è nello stato RECEIVE) vuole inviare dati. Questa richiesta viene comunicata al partner TP tramite il parametro rts_rcvd di MC_CONFIRM. Il parametro rts_rcvd viene restituito anche a MC_SEND_DATA e ad altri verbi.

Quando il partner TP rilascia MC_PREPARE_TO_RECEIVE, lo stato della conversazione cambia in RECEIVE per il tp del partner, rendendo possibile che il tp locale invii i dati.

Annotazioni

L'emissione di MC_REQUEST_TO_SEND non modifica lo stato della conversazione. Dopo aver ricevuto una richiesta di invio, il tp del partner non è necessario per modificare lo stato della conversazione; può ignorare la richiesta.