Partager via


Changement des états des conversations

Une modification de l’état de la conversation peut résulter des conséquences suivantes :

  • Verbe émis par le TP local.

  • Verbe émis par le tp partenaire.

  • Condition d’erreur.

    L’exemple suivant montre comment les verbes APPC peuvent modifier l’état de la conversation d’ENVOYER à RECEIVE et de RECEIVE à SEND.

Notes

N’importe quel TP peut envoyer ou recevoir des données, qu’il s’agisse du TP appelant (le TP qui a démarré la conversation) ou du TP invokable (le TP qui a répondu à une demande de démarrage d’une conversation).

Cet exemple montre comment les verbes APPC peuvent modifier l’état de la conversation. Dans ce tableau, chaque état de conversation apparaît en gras et précède les verbes APPC utilisés dans cet état.

Émis par le TP appelant Émis par le TP invokable
TP_STARTED
État de la conversation : RESET
MC_ALLOCATE
(synclevel=AP_CONFIRM_SYNC_LEVL)
État de la conversation : SEND
MC_SEND_DATA
MC_PREPARE_TO_RECEIVE
(ptr_type=AP_SYNC_LEVEL)
État de la conversation : RESET
RECEIVE_ALLOCATE
État de la conversation : RECEIVE
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_SEND)
État de la conversation : CONFIRM_SEND
MC_CONFIRMED
État de la conversation : SEND
MC_SEND_DATA
MC_CONFIRM
État de la conversation : RECEIVE
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_WHAT_RECEIVED)
État de la conversation : CONFIRM
MC_REQUEST_TO_SEND
MC_CONFIRMED
(rts_rcvd=AP_YES)
MC_PREPARE_TO_RECEIVE
(ptr_type=AP_SYNC_LEVEL)
État de la conversation : RECEIVE
MC_RECEIVE_AND_WAIT
(primary_rc=AP_OK)
(what_rcvd=AP_CONFIRM_SEND)
État de la conversation : CONFIRM_SEND
MC_CONFIRMED
État de la conversation : SEND
MC_SEND_DATA
MC_DEALLOCATE
(dealloc_type=AP_SYNC_LEVEL)
État de la conversation : RECEIVE
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)
État de la conversation : CONFIRM_DEALLOCATE
MC_CONFIRMED
État de la conversation : RESET État de la conversation : RESET
TP_ENDED TP_ENDED

États initiaux

Avant l’allocation de la conversation, l’état est RESET pour les deux fournisseurs de services.

Dans l’exemple, une fois la conversation allouée, l’état initial est SEND pour le TP appelant et RECEIVE pour le TP invokable.

Passage à l’état RECEIVE

MC_PREPARE_TO_RECEIVE permet à un TP de changer la conversation de l’état ENVOYER à l’état RECEIVE. Ce verbe :

  • Vide la mémoire tampon d’envoi de la lu locale.

  • Envoie l’indicateur de AP_CONFIRM_SEND au tp partenaire via le paramètre what_rcvd d’un verbe de réception. Cet indicateur indique au PARTENAIRE TP qu’une réponse MC_CONFIRMED est attendue avant que le TP partenaire puisse commencer à envoyer des données.

    Le traitement de confirmation est effectué lorsque les conditions suivantes sont remplies :

  • Le paramètre ptr_type est défini sur AP_SYNC_LEVEL.

  • Le niveau de synchronisation de la conversation est défini sur AP_CONFIRM_SYNC_LEVEL.

    Pour plus d’informations sur le traitement de confirmation, consultez Traitement de confirmation.

Notes

L’émission de MC_RECEIVE_AND_WAIT lorsque la conversation est à l’état SEND vide la mémoire tampon d’envoi de l’unité lu et modifie l’état de la conversation sur RECEIVE. La modification de l’état de la conversation de cette manière ne prend pas en charge le traitement de confirmation.

Passage à l’état SEND

MC_REQUEST_TO_SEND informe le TP partenaire (pour lequel la conversation est à l’état SEND) que le TP local (pour lequel la conversation est à l’état RECEIVE) souhaite envoyer des données. Cette demande est communiquée au tp partenaire via le paramètre rts_rcvd de MC_CONFIRM. (Le paramètre rts_rcvd est également retourné à MC_SEND_DATA et à d’autres verbes.)

Lorsque le TP partenaire émet MC_PREPARE_TO_RECEIVE, l’état de la conversation passe à RECEIVE pour le TP partenaire, ce qui permet au TP local d’envoyer des données.

Notes

L’émission de MC_REQUEST_TO_SEND ne modifie pas l’état de la conversation. Lors de la réception d’une demande d’envoi, le TP partenaire n’est pas tenu de modifier l’état de la conversation ; il peut ignorer la demande.