Changement des états des conversations (CPI-C)
Une modification de l’état de la conversation peut résulter des conséquences suivantes :
Appel effectué par le programme de transaction local (TP).
Appel effectué par le tp partenaire.
Condition d’erreur.
L’exemple suivant montre comment les appels CPI-C (Common Programming Interface for Communications) peuvent modifier l’état de la conversation d’ENVOI à 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 appels CPI-C peuvent modifier l’état de la conversation. Dans ce tableau, chaque état de conversation apparaît en gras et précède les appels CPI-C utilisés dans cet état.
Émis par le TP appelant | Émis par le TP invokable |
---|---|
État de la conversation : RESET | |
Initialize_Conversation | |
État de la conversation : INITIALIZE | |
Set_Sync_Level | |
(sync_level=CM_CONFIRM) | |
Allouer | |
État de la conversation : SEND | |
Send_Data | |
Prepare_to_Receive | État de la conversation : RESET |
Accept_Conversation | |
État de la conversation : RECEIVE | |
(status_received= CM_CONFIRM_SEND_RECEIVED) | |
État de la conversation : CONFIRM_SEND | |
Confirmer | |
État de la conversation : SEND | |
(return_code=CM_OK) | Send_Data |
État de la conversation : RECEIVE | Confirmer |
(status_received= CM_CONFIRM_RECEIVED) | |
État de la conversation : CONFIRM | |
Request_To_Send | |
Confirmé | |
État de la conversation : RECEIVE | (return_code=CM_OK) |
(request_to_send_received= CM_REQ_TO_SEND_RECEIVED) | |
Prepare_To_Receive | |
Recevoir | |
(status_received= CM_CONFIRM_SEND_RECEIVED) | |
État de la conversation : CONFIRM_SEND | |
Confirmé | |
État de la conversation : SEND | (return_code=CM_OK) |
État de la conversation : RECEIVE | |
Send_Data | |
Libérer | |
Recevoir | |
(status_received= CM_CONFIRM_DEALLOC_RECEIVED) | |
État de la conversation : CONFIRM_DEALLOCATE |
|
Confirmé | |
(return_code=CM_OK) | État de la conversation : RESET |
État de la conversation : RESET |
É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
L’appel Prepare_To_Receive permet à un TP de changer la conversation de l’état ENVOYER à l’état RECEIVE. Cet appel :
Vide la mémoire tampon d’envoi de la lu locale.
Envoie un indicateur CM_CONFIRM_SEND au tp partenaire via le paramètre status_received d’un appel de réception , car le niveau de synchronisation est défini sur CM_CONFIRM. Cet indicateur indique au partenaire TP qu’une réponse confirmée est attendue avant que le tp partenaire puisse commencer à envoyer des données.
Passage à l’état SEND
L’appel 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 request_to_send_received de l’appel Confirm . (Le paramètre request_to_send_received est également retourné à Send_Data et à d’autres appels.)
Lorsque le TP partenaire émet l’appel Prepare_To_Receive , l’état de la conversation devient RECEIVE pour le TP partenaire, ce qui permet au TP local d’envoyer des données.
Important
L’émission de Request_To_Send ne modifie pas l’état de la conversation. À 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.