Exemple de conversation mappée
Pour obtenir des informations d’arrière-plan sur les conversations mappées, consultez Comparaison des conversations de base et des conversations mappées.
L’exemple suivant d’une conversation mappée montre les verbes APPC utilisés pour démarrer une conversation, échanger des données et mettre fin à la conversation. Les paramètres de verbe APPC sont entre parenthèses.
Émis par le TP appelant | Émis par le TP invokable |
---|---|
TP_STARTED | |
MC_ALLOCATE | |
MC_SEND_DATA | |
MC_DEALLOCATE | |
TP_ENDED | RECEIVE_ALLOCATE |
MC_RECEIVE_AND_WAIT | |
(primary_rc=AP_OK) | |
(rtn_status=AP_NO) | |
(what_rcvd=AP_DATA_COMPLETE) | |
MC_RECEIVE_AND_WAIT | |
(primary_rc=AP_DEALLOC_NORM) | |
TP_ENDED |
Les paragraphes suivants décrivent les verbes utilisés dans une conversation mappée.
Verbes pour démarrer une conversation mappée
Pour démarrer une conversation mappée, l’appel tp émet les verbes suivants :
TP_STARTED, qui avertit APPC que le TP local commence une conversation.
MC_ALLOCATE, qui demande à l’APPC d’établir une conversation entre le TP local et le TP partenaire.
Les problèmes de tp invocables RECEIVE_ALLOCATE, ce qui informe APPC qu’il est prêt à commencer une conversation avec le TP appelant.
Verbes pour l’envoi de données dans une conversation mappée
MC_SEND_DATA place un enregistrement de données (enregistrement contenant les données d’application à transmettre) dans la mémoire tampon d’envoi de la lu locale. La transmission des données au tp partenaire ne se produit pas tant que l’un des événements suivants ne se produit pas :
La mémoire tampon d’envoi se remplit.
Le TP d’envoi émet un verbe qui force APPC à vider la mémoire tampon et à envoyer des données au TP partenaire.
Dans l’exemple précédent, la mémoire tampon d’envoi contient à la fois l’enregistrement de données et la demande MC_ALLOCATE (qui précède l’enregistrement de données). Par conséquent, dans l’exemple, MC_DEALLOCATE vide la mémoire tampon, en envoyant le MC_ALLOCATE demande et l’enregistrement de données au TP partenaire. Les autres verbes qui vident la mémoire tampon sont MC_CONFIRM et MC_FLUSH.
Verbes pour la réception de données dans une conversation mappée
Le verbe MC_RECEIVE_AND_WAIT permet à un TP de recevoir un enregistrement de données ou des informations status. Si aucune donnée n’est actuellement disponible, le TP attend que les données arrivent. Pour les systèmes Windows, le problème MC_RECEIVE_AND_WAIT conjointement avec WinAsyncAPPC plutôt que la version bloquante de cet appel.
Dans l’exemple, les problèmes tp de réception MC_RECEIVE_AND_WAIT deux fois. La première fois, il émet le verbe pour recevoir des données. Une fois l’enregistrement de données complet reçu (what_rcvd est AP_DATA_COMPLETE), il émet à nouveau MC_RECEIVE_AND_WAIT pour recevoir un code de retour. Le code de retour AP_DEALLOC_NORMAL indique que la conversation a été libérée.
Notes
MC_RECEIVE_IMMEDIATE effectue la même fonction que MC_RECEIVE_AND_WAIT, sauf qu’il n’attend pas si les données ne sont pas actuellement disponibles à partir du tp partenaire. Au lieu de cela, il retourne une réponse sans données disponibles au TP appelant.
Verbes pour mettre fin à une conversation mappée
Pour mettre fin à une conversation mappée, l’un des problèmes des TPs MC_DEALLOCATE, ce qui oblige APPC à libérer la conversation entre les deux TPs.
Une fois la conversation libérée, les deux fournisseurs de services émettent des TP_ENDED.
Notes
Un TP peut participer à plusieurs conversations simultanément. Dans ce cas, les problèmes de TP TP_ENDED une fois que toutes les conversations ont été libérées.