Impliziertes FORGET
LU 6.2-Synchronisierungspunktsitzungen können eine Optimierung der architekturbasierten Nachrichtenflüsse verwenden, die als implizites Vergessen bezeichnet werden. Wenn das Protokoll angibt, dass ein FORGET-Präsentationsheader (PS) erforderlich ist, impliziert der nächste Datenfluss in der Sitzung, dass ein FORGET empfangen wurde, obwohl er nicht vorhanden ist. In der normalen Situation erkennt das TP den nächsten Datenfluss, wenn Daten in einer seiner Synchronisierungspunktunterhaltungen empfangen oder gesendet werden.
Es ist jedoch möglich, dass die letzte Nachricht, die fließt, durch die Aufhebung der Zuordnung der Konversation verursacht wird. In diesem Fall ist dem TP nicht bekannt, wann der nächste Datenfluss in der Sitzung auftritt. Um dem TP diese Benachrichtigung bereitzustellen, werden die Verben DEALLOCATE und MC_DEALLOCATE so geändert, dass der TP eine Rückruffunktion registrieren kann, die aufgerufen wird:
Bei der ersten normalen Flussübertragung (Anforderung oder Antwort) über die sitzung, die von der Konversation verwendet wird.
Wenn die Sitzung vor anderen Datenflüssen ungebunden ist.
Wenn die Sitzung aufgrund eines DLC-Ausfalls (Data Link Control) ungewöhnlich beendet wird.
Die Rückrufprozedur kann einen beliebigen Namen annehmen, da die Adresse der Prozedur an die APPC-DLL übergeben wird.
Beachten Sie, dass die Verben DEALLOCATE und MC_DEALLOCATE wahrscheinlich abgeschlossen werden, bevor die Rückrufroutine aufgerufen wird. Die Konversation wird als zurückgesetzt betrachtet, und es können keine weiteren Verben mit dem Unterhaltungsbezeichner ausgegeben werden. Wenn die Anwendung vor dem nächsten Datenfluss in der Sitzung ein TP_ENDED Verb ausgibt, wird die Rückrufroutine nicht aufgerufen.
Die Verben DEALLOCATE und MC_DEALLOCATE werden wie folgt geändert, um das implizierte Vergessen zu unterstützen:
Ein neuer Member( Rückruf) wird hinzugefügt, damit der TP die Adresse der Funktion angeben kann, die beim nächsten Datenfluss in der Sitzung aufgerufen werden soll, die von der Aufgehobenen Zuordnung verwendet wird. Wenn dieser Member NULL ist, wird keine Benachrichtigung bereitgestellt. Normalerweise stellt ein Anbieter diese Rückruffunktion zur Verfügung.
Die Verben DEALLOCATE und MC_DEALLOCATE enthalten auch einen Korrelatormember, der als einer der Parameter zurückgegeben wird, wenn die Rückruffunktion aufgerufen wird. Die Anwendung kann diesen Parameter in beliebiger Weise verwenden (z. B. als Zeiger auf einen Kontrollblock innerhalb der Anwendung).
Host Integration Server ermöglicht TPs das Aufheben der Zuordnung von Unterhaltungen unmittelbar nach dem Senden von Daten durch Angabe des Typmembers im SEND_DATA und MC_SEND_DATAVerben als AP_SEND_DATA_DEALLOC_FLUSH, AP_SEND_DATA_DEALLOC_SYNC_LEVEL, AP_SEND_DATA_DEALLOC_ABEND und AP_SEND_DATA_DEALLOC_CONFIRM. Die verben SEND_DATA und MC_SEND_DATA enthalten jedoch nicht die implizite Rückruffunktion des Vergessens. TPs, die eine implizite Benachrichtigung zum Vergessen erhalten möchten, müssen explizit ein DEALLOCATE - oder MC_DEALLOCATE Verb ausgeben.