Freigeben über


Empfangen von Nachrichten

Die folgende Abbildung zeigt die Methode zum Empfangen von Nachrichten von Dynamic Access Module (DMOD).

Abbildung, die zeigt, wie Nachrichten mithilfe einer Routingprozedur empfangen werden.
Empfangen von Nachrichten mithilfe einer Routingprozedur

Nach der DMOD-Initialisierung registriert der 3270-Emulator die Routingprozedur durch Aufrufen von sepdrout. Wenn das DMOD eine Nachricht empfängt, ruft es die Routingprozedur für den 3270-Emulator auf, die die Nachricht dann verarbeiten kann.

Bei diesem Ansatz gibt es keinen Kontextwechsel zwischen dem Thread des DMOD und dem des 3270-Emulators. Die Routingprozedur muss die Steuerung jedoch schnell an das DMOD zurückgeben. Beispielsweise kann das Warten auf eine Tastatureingabe nicht angehalten werden.

Die Anwendung muss bestimmen, ob die empfangene Nachricht für diese Anwendung oder für eine andere Anwendung bestimmt ist. Wenn die Nachricht nicht für diese Anwendung bestimmt ist, muss die Routingprozedur zurückgeben, dass die Nachricht nicht verarbeitet wurde. Wenn die Anwendung die Nachricht verarbeitet, ist sie dafür verantwortlich, den Puffer nach Abschluss der Verarbeitung frei zu geben.

In einigen Fällen kann die Routingprozedur die Nachricht bis zum Abschluss verarbeiten. Alternativ kann die Routingprozedur die Nachricht in eine Anwendungswarteschlange setzen und dann einen Anwendungssemaphor löschen. Anschließend kann die Anwendung die Nachricht verarbeiten.

Die Leistung kann weiter verbessert werden durch Senden einer Status-Resource-Nachricht von der Routingprozedur, wenn eine Nachricht empfangen wird (um Guthaben an den lokalen Knoten zurückzugeben, damit er weitere Daten senden kann), anstatt zu warten, bis die Nachricht vollständig verarbeitet ist. Diese Verwendung wird unter Beispielcode: Initialisierung und Routingprozedur veranschaulicht. Weitere Informationen zur Guthaben- und Flusssteuerung finden Sie unter Geschwindigkeit und Segmentierung.

Sobald die Anwendung eine Nachricht empfangen hat, ist die Anwendung für den Puffer verantwortlich, in dem die Nachricht empfangen wurde. Die Anwendung muss entweder den Puffer wiederverwenden, um eine Nachricht zu senden (mit sbpusend), oder sie freigeben (mit sepdburl). Wenn der wiederzuverwendende Puffer nicht die richtige Anzahl von Elementen für die zu sendende Nachricht enthält, kann die Anwendung zusätzliche Elemente abrufen (mit sbpibegt) oder vorhandene Elemente freigeben (mit sbpiberl). In diesem Fall muss die Anwendung auch sicherstellen, dass das Feld numelts im Pufferheader die richtige Anzahl von Elementen angibt.