Compartir a través de


recibir mensajes

En la ilustración siguiente se muestra el método para recibir mensajes del módulo de acceso dinámico (DMOD).

Imagen que muestra cómo recibir mensajes mediante un procedimiento de enrutamiento.
Recepción de mensajes mediante un procedimiento de enrutamiento

Después de la inicialización de DMOD, el emulador 3270 registra el procedimiento de enrutamiento llamando a sepdrout. Cuando DMOD recibe un mensaje, llama al procedimiento de enrutamiento del emulador 3270, que luego puede procesar el mensaje.

Con este enfoque, no hay ningún cambio de contexto entre el subproceso DMOD y el subproceso del emulador 3270. Sin embargo, el procedimiento de enrutamiento debe devolver el control rápidamente al DMOD. Por ejemplo, no puede suspender la espera de una entrada de teclado.

La aplicación debe determinar si el mensaje recibido es para esta aplicación o para otra aplicación. Si el mensaje no es para esta aplicación, el procedimiento de enrutamiento debe devolverse, lo que indica que el mensaje no se procesó. Si la aplicación procesa el mensaje, es responsable de liberar el búfer cuando finaliza el procesamiento.

En algunos casos, el procedimiento de enrutamiento puede procesar el mensaje hasta completarlo. Una alternativa es que el procedimiento de enrutamiento coloque el mensaje en una cola de aplicaciones y, a continuación, borre un semáforo de aplicación. Después, la aplicación puede procesar el mensaje.

El rendimiento se puede mejorar aún más mediante el envío de un mensaje Status-Resource (para devolver crédito al nodo local, lo que permite enviar más datos) desde el procedimiento de enrutamiento cuando se recibe un mensaje, en lugar de esperar hasta que se procese el mensaje hasta que se complete. Este uso se muestra en Código de ejemplo : Inicialización y procedimiento de enrutamiento. Para obtener más información sobre el control de crédito y flujo, consulte Pacing and Chunking (Velocidad y fragmentación).

Una vez que la aplicación haya recibido un mensaje, la aplicación es responsable del búfer en el que se recibió el mensaje. La aplicación debe reutilizar el búfer para enviar un mensaje (mediante sbpusend) o liberarlo (mediante sepdburl). Si el búfer que se va a reutilizar no contiene el número correcto de elementos para que se envíe el mensaje, la aplicación puede obtener elementos adicionales (mediante sbpibegt) o liberar los existentes (mediante sbpiberl). En este caso, la aplicación también debe asegurarse de que el campo numelts del encabezado del búfer indica el número correcto de elementos.