Sprung zum Seitenende Struktur Themen A...Z Titel << >>

CXI-Basis-Programmierreferenz / Version 2 / Datenaustausch / Ebene 1 /

RequestShutDown - Empfänger herunterfahren

[C++] CxiError CxiMessageHandlerBase :: RequestShutDown (void)

[S2:STANDARD] Empfänger anweisen, herunterzufahren

return:
0 ok, sonst Fehler

RequestShutDown versetzt den Empfänger in den Status cxiReceiverStateTerminating (siehe QueryReceiverState) und kehrt unmittelbar darauf zurück. Die Funktion wartet nicht, bis der Empfänger vollständig heruntergefahren ist.

Befindet sich die aufrufende Funktion innerhalb des Handlers (IsInHandler), wird der Statuswechsel verzögert, bis der Handler mit return verlassen worden ist. Bei einem Aufruf außerhalb des eigenen Handlers erfolgt der Wechsel sofort.

Der Empfänger wird dadurch angewiesen, in den inaktiven Zustand (cxiReceiverStateShutDown) zu wechseln, sobald dies möglich ist. Sobald der Status cxiReceiverStateShutDown erreicht ist, kann das Objekt gefahrlos mit delete gelöscht werden. Bei diesem Status stellt das System sicher, dass der Handler weder gerade aktiv ist noch aufgerufen werden kann. Insbesondere kann niemals der Status cxiReceiverStateShutDown erreicht werden, solange sich das Programm innerhalb eines Handler-Aufrufs (IsInHandler() == 1) befindet.

Bevor ein CxiMessageHandler...-Objekt gelöscht werden kann, muss der Handler verlassen werden. Programme können abstürzen, wenn sich beim Löschen des Objekts gerade eine Meldung in Bearbeitung befindet.

Daher wurde mit dieser Funktion und QueryReceiverState eine Möglichkeit geschaffen, das Beenden eines Empfängers lediglich anzustoßen, anstatt mit der Gewaltmethode (delete) einen ungültigen Zugriff auf nicht mehr existente Membervariablen zu riskieren. Stellt das Programm später fest, dass der Status auf cxiReceiverStateShutDown gewechselt hat, kann gefahrlos delete aufgerufen werden.

Am bisherigen Verhalten ändert sich dadurch nichts. So kann auch weiterhin ein MessageHandler-Objekt problemlos ohne Verwendung dieser Funktion gelöscht werden, wenn sichergestellt ist, dass sich das Programm nicht innerhalb der eigenen Handlerfunktion befindet. Insbesondere sollte am Anfang von Destruktoren auch zukünftig WaitShutDown() aufgerufen werden, QueryReceiverState bezieht sich nur auf die Basisklasse! Die von CXI selbst zur Verfügung gestellten Destruktoren rufen WaitShutDown() automatisch auf.

Portabilität:
Diese Funktion ist ab Version 2.07 definiert und in allen unterstützten Systemen verfügbar.

Weitere Memberfunktionen:
CxiMessageHandlerBase(const char*) - Konstruktor
~CxiMessageHandlerBase() - Destruktor
WaitShutDown - Warten auf Handler
IsInHandler - Ist der Handler aktiv?
QueryReceiverState - Aktivierungsstatus
CreateLocalAlias - Lokaler Aliasname
WaitState - Wartezustand
Handler1 - Bearbeitungsfunktion

Geerbte Memberfunktionen:
Status - Statusabfrage
IsValid - Ist Objekt gültig?
IsLocal - Ist Objekt lokal?
CountChildren - Anzahl untergeordneter Objekte
QueryIdent - Abfrage des Namens
QueryIdentAbs - Abfrage des absoluten Namens

Globale Funktionen:
PostMessageBlock - Versenden einer Meldung ohne Warten
SendMessageBlock - Versenden einer Meldung mit Warten
CreateGlobalAlias - Globaler Aliasname

Siehe auch:
Klassenhierarchie Meldungssystem
class CxiMessageIdent - Adresse eines Meldungsempfängers
class CxiMessageHandlerBase - Meldungsempfänger Ebene 1
class CxiMessageHandler - Erweiterter Meldungsempfänger
class CxiMessageHandlerWithQueue - Erweiterter Meldungsempfänger mit Queue


[i] CXI-Basis-Programmierreferenz
Version 2.10 72 (1014-001), erstellt am 15. April 2000
Textseite 304 von 855, Thema 8513 (RequestShutDown)
[c] Copyright (c) 1996-2000 by TeraConnect GmbH

Sprung zum Seitenanfang Struktur Themen A...Z Titel << >>