Consideraciones de SNA con LUA

En esta sección se explica la información de SNA que debe tener en cuenta al escribir aplicaciones de aplicación de unidad lógica (LUA).

Comprobación de BIND

Durante la inicialización de la sesión de LU, el host envía a la aplicación LUA un mensaje BIND que contiene información como tamaños de unidad de solicitud/respuesta (RU) para su uso por parte de la sesión de LU. Microsoft® Host Integration Server devuelve este mensaje a la aplicación LUA en RUI_READ. La aplicación LUA debe comprobar que los parámetros especificados en bind son adecuados. La aplicación tiene las siguientes opciones:

  • Puede aceptar bind tal y como está, emitiendo RUI_WRITE que contengan una respuesta OK a BIND. No se pueden enviar datos BIND adicionales en la respuesta.

  • Puede intentar negociar uno o varios parámetros BIND. (Esto solo se permite si bind es negociable). Para ello, la aplicación emite RUI_WRITE que contiene una respuesta CORRECTA, pero incluye bind modificado como datos.

  • Puede rechazar bind mediante la emisión de RUI_WRITE que contiene una respuesta negativa, utilizando un código de detección de SNA adecuado como datos.

    Validar los parámetros BIND y asegurarse de que todos los mensajes enviados sean coherentes con ellos es responsabilidad de la aplicación LUA. Sin embargo, se aplican las dos restricciones siguientes:

  • Host Integration Server rechaza cualquier RUI_WRITE que especifique una longitud de RU mayor que el tamaño especificado en bind.

  • Host Integration Server requiere que BIND especifique que la LU secundaria es el ganador de la contención y que la recuperación de errores es responsabilidad del perdedor de contención.

    Nota

    Para SLI, una aplicación debe especificar que usará SLI_BIND_ROUTINE en el SLI_OPEN si realizará alguna comprobación BIND.

Confirmaciones cortesía

Host Integration Server mantiene un registro de las solicitudes recibidas del host para correlacionar cualquier respuesta enviada por la aplicación con la solicitud adecuada. Cuando la aplicación envía una respuesta, Host Integration Server correlaciona la respuesta con los datos de la solicitud original y, a continuación, puede liberar el almacenamiento asociado a él.

Si el host especifica solo la respuesta de excepción (se puede enviar una respuesta negativa, pero no se debe enviar una respuesta positiva), Host Integration Server debe mantener un registro de la solicitud en caso de que la aplicación envíe posteriormente una respuesta negativa. Si la aplicación no envía una respuesta, no se puede liberar el almacenamiento asociado a esta solicitud.

Por este motivo, Host Integration Server permite que la aplicación LUA emita una respuesta positiva a una solicitud de solo respuesta de excepción del host. (Esto se conoce como confirmación cortesía). La respuesta no se envía al host, pero la LUA la usa para borrar el almacenamiento asociado a la solicitud.

Nota

La aplicación no necesita enviar una confirmación cortesía para cada solicitud de solo respuesta de excepción. Para mejorar la eficacia, la aplicación puede responder con menos frecuencia. El nodo trata una confirmación cortesía como una confirmación implícita para todas las solicitudes pendientes anteriores.

Distinguir los códigos de detección de SNA de otros códigos de retorno secundarios

Un código de retorno secundario que no es un código de sentido siempre contiene un valor de cero en sus dos primeros bytes.

Un código de detección de SNA siempre contiene un valor distinto de cero en sus dos primeros bytes. El primer byte proporciona la categoría de código de sentido y la segunda identifica un código de sentido determinado dentro de esa categoría. (Los bytes tercero y cuarto pueden contener información adicional o pueden ser cero).

Información sobre los códigos de detección de SNA

Si necesita información sobre un código de sentido devuelto, consulte

Respuestas negativas y códigos de sentido de SNA

Los códigos de detección de SNA se pueden devolver a una aplicación LUA en los casos siguientes:

  • Cuando el host envía una respuesta negativa a una solicitud de la aplicación LUA, incluye un código de detección de SNA que indica el motivo de la respuesta negativa. Esto se notifica a la aplicación en un RUI_READ posterior o SLI_RECEIVE con la siguiente información.

    Código de sentido Descripción
    Código de retorno principal LUA_OK.
    Indicador de solicitud/respuesta, indicador de tipo de respuesta y datos de detección incluidos Todo establecido en 1, lo que indica una respuesta negativa que incluye datos de sentido.
    Datos devueltos Código de sentido de SNA.
  • Cuando Host Integration Server recibe datos no válidos del host, normalmente envía una respuesta negativa al host y no pasa los datos no válidos a la aplicación LUA. Esto se notifica a la aplicación en una RUI_READ posterior, SLI_RECEIVE, RUI_BID oSLI_BID con la siguiente información:

    Código de sentido Descripción
    Código de retorno principal LUA_NEGATIVE_RESPONSE.
    Código de retorno secundario Código de detección de SNA enviado al host.
  • En algunos casos, Host Integration Server detecta que los datos proporcionados por el host no son válidos, pero no pueden determinar el código de sentido correcto que se va a enviar. En este caso, pasa los datos no válidos en una solicitud de excepción (EXR) a la aplicación LUA en RUI_READ o SLI_RECEIVE con la siguiente información.

    Código de sentido Descripción
    Indicador de solicitud/respuesta Establézcalo en 0, que indica una solicitud.
    Indicador de datos de detección incluidos Se establece en 1, lo que indica que se incluyen los datos de sentido. (Este indicador solo se usa normalmente para una respuesta).
    Datos del mensaje Código de sentido de SNA sugerido.

    A continuación, la aplicación debe enviar una respuesta negativa al mensaje. Puede usar el código de sentido sugerido por Host Integration Server o puede modificar el código de sentido.

  • Host Integration Server puede enviar un código de sentido a la aplicación para indicar que los datos proporcionados por la aplicación no eran válidos. Esto se notifica a la aplicación en RUI_WRITE o SLI_SEND con la siguiente información.

    Código de sentido Descripción
    Código de retorno principal LUA_UNSUCCESSFUL.
    Código de retorno secundario Código de sentido de SNA.

    Los códigos de sentido que se pueden devolver como códigos de retorno secundarios en verbos LUA se muestran en winLUA. Archivo de encabezado H. Para este archivo, consulte Host Integration Server o el SDK de SNA.

Estimulación

El ritmo se controla mediante la interfaz LUA. Una aplicación LUA no necesita controlar el ritmo y nunca debe establecer la marca del indicador de velocidad.

Si se usa el ritmo en los datos enviados desde la aplicación LUA al host (determinado por BIND), RUI_WRITE o SLI_SEND pueden tardar algún tiempo en completarse. Esto se debe a que LUA tiene que esperar una respuesta de velocidad del host antes de que pueda enviar más datos.

Si una aplicación LUA transfiere grandes cantidades de datos en una dirección, ya sea al host o desde el host (por ejemplo, una aplicación de transferencia de archivos), la configuración del host debe especificar que la velocidad se use en esa dirección. Esto garantiza que el nodo que recibe los datos no se inunda con datos y no se queda sin almacenamiento de datos.

Purga de datos al final de la cadena

Cuando el host envía una cadena de unidades de solicitud a una aplicación LUA, la aplicación puede esperar hasta que se reciba la última RU de la cadena antes de enviar una respuesta o puede enviar una respuesta negativa a una RU que no es la última de la cadena. Si se envía una respuesta negativa a la mitad de la cadena, LUA purga todas las RU subsiguientes de esta cadena y no las envía a la aplicación.

Cuando LUA recibe la última RU de la cadena, indica esto a la aplicación estableciendo el código de retorno principal de RUI_READ o RUI_BID en LUA_NEGATIVE_RESPONSE con un código de retorno secundario cero.

El host puede finalizar la cadena enviando un mensaje como CANCEL mientras se encuentra en la cadena media. En este caso, el mensaje CANCEL se devuelve a la aplicación en RUI_READ. No se usa el código de devolución LUA_NEGATIVE_RESPONSE.

Segmentación

La interfaz LUA controla la segmentación de RU. LUA siempre pasa ru completas a la aplicación y la aplicación debe pasar ru completas a LUA.