réception de messages
L’illustration suivante montre la méthode de réception des messages à partir du module d’accès dynamique (DMOD).
Réception de messages à l’aide d’une procédure de routage
Après l’initialisation de DMOD, l’émulateur 3270 inscrit la procédure de routage en appelant sepdrout. Lorsque le DMOD reçoit un message, il appelle la procédure de routage de l’émulateur 3270, qui peut ensuite traiter le message.
Avec cette approche, il n’existe aucun changement de contexte entre la conversation DMOD et la conversation de l’émulateur 3270. Toutefois, la procédure de routage doit renvoyer rapidement le contrôle au DMOD. Par exemple, il ne peut pas suspendre l’attente d’une entrée au clavier.
L’application doit déterminer si le message reçu est destiné à cette application ou à une autre application. Si le message n’est pas pour cette application, la procédure de routage doit retourner, indiquant que le message n’a pas été traité. Si l’application traite le message, il est chargé de libérer la mémoire tampon une fois le traitement terminé.
Dans certains cas, la procédure de routage peut traiter le message jusqu’à son achèvement. Une alternative est que la procédure de routage place le message dans une file d’attente d’application, puis efface un sémaphore d’application. L’application peut ensuite traiter le message.
Les performances peuvent être améliorées en envoyant un message Status-Resource (pour retourner un crédit au nœud local, ce qui lui permet d’envoyer des données supplémentaires) à partir de la procédure de routage lors de la réception d’un message, au lieu d’attendre que le message soit traité jusqu’à son achèvement. Cette utilisation est illustrée dans Exemple de code : initialisation et procédure de routage. Pour plus d’informations sur le contrôle de crédit et de flux, consultez Régulation et segmentation.
Une fois que l’application a reçu un message, elle est responsable de la mémoire tampon dans laquelle le message a été reçu. L’application doit réutiliser la mémoire tampon pour envoyer un message (à l’aide de sbpusend) ou la libérer (à l’aide de sepdburl). Si la mémoire tampon à réutiliser ne contient pas le nombre correct d’éléments pour le message à envoyer, l’application peut obtenir des éléments supplémentaires (à l’aide de sbpibegt) ou libérer des éléments existants (à l’aide de sbpiberl). Dans ce cas, l’application doit également s’assurer que le champ numelts dans l’en-tête de mémoire tampon indique le nombre correct d’éléments.