Freigeben über


SNA-Überlegungen mit LUA

In diesem Abschnitt werden SNA-Informationen erläutert, die Sie beim Schreiben von LUA-Anwendungen (Logical Unit Application) berücksichtigen müssen.

BIND-Überprüfung

Während der Initialisierung der LU-Sitzung sendet der Host eine BIND-Nachricht an die LUA-Anwendung, die Informationen wie anforderungs-/antworteinheitsgrößen (RU) zur Verwendung durch die LU-Sitzung enthält. Microsoft® Host Integration Server gibt diese Meldung an die LUA-Anwendung auf RUI_READ zurück. Die LUA-Anwendung muss überprüfen, ob die in bind angegebenen Parameter geeignet sind. Die Anwendung verfügt über die folgenden Optionen:

  • Sie kann die BIND-Datei so akzeptieren, wie sie ist, indem RUI_WRITE ausgegeben wird, die eine OK-Antwort auf die BIND-Datei enthält. Für die Antwort können keine zusätzlichen BIND-Daten gesendet werden.

  • Es kann versuchen, einen oder mehrere BIND-Parameter auszuhandeln. (Dies ist nur zulässig, wenn die BIND-Datei verhandelbar ist.) Dazu gibt die Anwendung Probleme RUI_WRITE , die eine OK-Antwort enthalten, aber die geänderte BIND-Datei als Daten enthält.

  • Er kann die BIND-Instanz ablehnen, indem RUI_WRITE ausgegeben wird, die eine negative Antwort enthält und einen geeigneten SNA-Sense-Code als Daten verwendet.

    Die Validierung der BIND-Parameter und die Sicherstellung, dass alle gesendeten Nachrichten mit ihnen konsistent sind, liegt in der Verantwortung der LUA-Anwendung. Es gelten jedoch die folgenden beiden Einschränkungen:

  • Host Integration Server lehnt alle RUI_WRITE ab, die eine RU-Länge angibt, die größer als die in bind angegebene Größe ist.

  • Host Integration Server erfordert, dass bind angibt, dass die sekundäre LU der Konfliktgewinner ist und dass die Fehlerwiederherstellung in der Verantwortung des Konfliktverlierers liegt.

    Hinweis

    Für SLI muss eine Anwendung angeben, dass sie SLI_BIND_ROUTINE auf der SLI_OPEN verwendet, wenn sie eine BIND-Überprüfung durchführen wird.

Höflichkeitsbestätigungen

Host Integration Server speichert eine Aufzeichnung der vom Host empfangenen Anforderungen, um alle von der Anwendung gesendeten Antworten mit der entsprechenden Anforderung zu korrelieren. Wenn die Anwendung eine Antwort sendet, korreliert Host Integration Server die Antwort mit den Daten aus der ursprünglichen Anforderung und kann dann den damit verbundenen Speicher freigeben.

Wenn der Host nur eine Ausnahmeantwort angibt (eine negative Antwort kann gesendet werden, aber eine positive Antwort sollte nicht gesendet werden), muss Host Integration Server weiterhin einen Datensatz der Anforderung führen, falls die Anwendung anschließend eine negative Antwort sendet. Wenn die Anwendung keine Antwort sendet, kann der dieser Anforderung zugeordnete Speicher nicht freigegeben werden.

Aus diesem Fall ermöglicht Host Integration Server der LUA-Anwendung, eine positive Antwort auf eine Ausnahmeantwortanforderung vom Host aus zu geben. (Dies wird als Höflichkeitsbestätigung bezeichnet.) Die Antwort wird nicht an den Host gesendet, sondern von LUA verwendet, um den der Anforderung zugeordneten Speicher zu löschen.

Hinweis

Die Anwendung muss keine Höflichkeitsbestätigung für jede Ausnahmeantwortanforderung senden. Aus Effizienzgründen kann die Anwendung seltener reagieren. Der Knoten behandelt eine Höflichkeitsbestätigung als implizite Bestätigung für alle vorherigen ausstehenden Anforderungen.

Unterscheiden von SNA-Sinnescodes von anderen sekundären Rückgabecodes

Ein sekundärer Rückgabecode, der kein Sense-Code ist, enthält immer den Wert 0 (null) in den ersten beiden Bytes.

Ein SNA-Sense-Code enthält immer einen Wert ungleich 0 (null) in den ersten beiden Bytes. Das erste Byte gibt die Sense-Codekategorie und das zweite gibt einen bestimmten Sense-Code innerhalb dieser Kategorie an. (Das dritte und vierte Bytes können zusätzliche Informationen enthalten oder null sein.)

Informationen zu SNA-Sense-Codes

Informationen zu einem zurückgegebenen Sense-Code finden Sie unter

Negative Antworten und SNA-Sinnescodes

SNA-Sinnescodes können in den folgenden Fällen an eine LUA-Anwendung zurückgegeben werden:

  • Wenn der Host eine negative Antwort an eine Anforderung von der LUA-Anwendung sendet, enthält er einen SNA-Sense-Code, der den Grund für die negative Antwort angibt. Dies wird der Anwendung auf einem nachfolgenden RUI_READ oder SLI_RECEIVE mit den folgenden Informationen gemeldet.

    Sense-Code BESCHREIBUNG
    Primärer Rückgabecode LUA_OK.
    Anforderungs-/Antwortindikator, Antworttypindikator und Enthaltener Indikator für Sense-Daten Alles auf 1 festgelegt, was eine negative Antwort angibt, die Sense-Daten enthält.
    Zurückgegebene Daten Der SNA-Sense-Code.
  • Wenn Host Integration Server ungültige Daten vom Host empfängt, sendet er in der Regel eine negative Antwort an den Host und übergibt die ungültigen Daten nicht an die LUA-Anwendung. Dies wird der Anwendung auf einem nachfolgenden RUI_READ, SLI_RECEIVE, RUI_BID oderSLI_BID mit den folgenden Informationen gemeldet:

    Sense-Code BESCHREIBUNG
    Primärer Rückgabecode LUA_NEGATIVE_RESPONSE.
    Sekundärer Rückgabecode Der an den Host gesendete SNA-Sense-Code.
  • In einigen Fällen erkennt Host Integration Server, dass vom Host bereitgestellte Daten ungültig sind, kann aber nicht den richtigen Sense-Code ermitteln, der gesendet werden soll. In diesem Fall übergibt er die ungültigen Daten in einer Ausnahmeanforderung (EXR) an die LUA-Anwendung auf RUI_READ oder SLI_RECEIVE mit den folgenden Informationen.

    Sense-Code BESCHREIBUNG
    Anforderungs-/Antwortindikator Legen Sie auf 0 fest, was eine Anforderung angibt.
    Indikator für eingeschlossene Sense-Daten Legen Sie auf 1 fest, um anzugeben, dass Sense-Daten enthalten sind. (Dieser Indikator wird normalerweise nur für eine Antwort verwendet.)
    Nachrichtendaten Ein vorgeschlagener SNA-Sense-Code.

    Die Anwendung muss dann eine negative Antwort an die Nachricht senden. Er kann den von Host Integration Server vorgeschlagenen Sense-Code verwenden oder den Sense-Code ändern.

  • Host Integration Server kann einen Sense-Code an die Anwendung senden, um anzugeben, dass von der Anwendung bereitgestellte Daten ungültig waren. Dies wird der Anwendung auf RUI_WRITE oder SLI_SEND mit den folgenden Informationen gemeldet.

    Sense-Code BESCHREIBUNG
    Primärer Rückgabecode LUA_UNSUCCESSFUL.
    Sekundärer Rückgabecode SNA-Sense-Code.

    Die Sense-Codes, die als sekundäre Rückgabecodes für LUA-Verben zurückgegeben werden können, werden in WINLUA aufgeführt. H-Headerdatei. Informationen zu dieser Datei finden Sie unter Host Integration Server oder SNA SDK.

Tempo

Die Geschwindigkeit wird von der LUA-Schnittstelle verarbeitet. Eine LUA-Anwendung muss die Geschwindigkeit nicht steuern und sollte niemals das Kennzeichen für die Geschwindigkeitsanzeige festlegen.

Wenn die Geschwindigkeit für Daten verwendet wird, die von der LUA-Anwendung an den Host gesendet werden (bestimmt durch bind), kann RUI_WRITE oder SLI_SEND einige Zeit in Anspruch nehmen. Dies liegt daran, dass LUA auf eine Geschwindigkeitsantwort vom Host warten muss, bevor weitere Daten gesendet werden können.

Wenn eine LUA-Anwendung große Datenmengen in eine Richtung überträgt, entweder an den Host oder vom Host (z. B. eine Dateiübertragungsanwendung), sollte die Hostkonfiguration angeben, dass das Pacing in dieser Richtung verwendet wird. Dadurch wird sichergestellt, dass der Knoten, auf dem die Daten empfangen werden, nicht mit Daten überflutet wird und nicht die Datenspeicherung ausläuft.

Löschen von Daten bis zum Ende der Kette

Wenn der Host eine Kette von Anforderungseinheiten an eine LUA-Anwendung sendet, kann die Anwendung warten, bis das letzte RU in der Kette empfangen wird, bevor sie eine Antwort sendet, oder sie kann eine negative Antwort an ein RU senden, das nicht die letzte in der Kette ist. Wenn eine negative Antwort in der Mitte der Kette gesendet wird, löscht LUA alle nachfolgenden RUs aus dieser Kette und sendet sie nicht an die Anwendung.

Wenn LUA die letzte RU in der Kette empfängt, wird dies für die Anwendung angegeben, indem der primäre Rückgabecode von RUI_READ oder RUI_BID auf LUA_NEGATIVE_RESPONSE mit einem null sekundären Rückgabecode festgelegt wird.

Der Host kann die Kette beenden, indem er eine Nachricht wie CANCEL sendet, während er sich in der Mitte der Kette befindet. In diesem Fall wird die CANCEL-Nachricht an die Anwendung RUI_READ zurückgegeben. Der LUA_NEGATIVE_RESPONSE Rückgabecode wird nicht verwendet.

Segmentierung

Die Segmentierung von RUs wird von der LUA-Schnittstelle verarbeitet. LUA übergibt immer vollständige RUs an die Anwendung, und die Anwendung sollte vollständige RUs an LUA übergeben.