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

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

Handler1 - Bearbeitungsfunktion

[C++] protected: virtual long int CxiMessageHandlerBase :: Handler1 (CxiNode& p) = 0

[S4:INTERN] [Portabilitätswarnung] Behandlungsroutine für empfangene Meldung

p:
Empfangene Meldung

Um einen Meldungsempfänger zu definieren, muss eine Ableitung der Klasse CxiMessageHandlerBase erstellt werden, wobei die virtuelle Funktion Handler1 überschrieben wird.

Jede eintreffende Meldung wird danach sofort als Parameter an die Funktion Handler1 übergeben und muss von ihr verarbeitet werden. Nach der Rückkehr wird die Verarbeitung als beendet betrachtet und der Block ggf. zum Sender zurückübertragen (SendMessageBlock).

Innerhalb der Funktion Handler1 darf kein Block mit SendMessageBlock an sich selbst geschickt werden, da dies (z.B. unter OS/2) zum Deadlock führt!

Eine Meldung mit PostMessageBlock an sich selbst ist dagegen erlaubt. Bei DOS (und oft bei Windows) führt dies zu einem direkten rekursiven Aufruf von Handler1. Bei OS/2 wird die Verarbeitung aller Meldungen durch eine Queue gesteuert, in die jeder Meldungsblock zunächst aufgenommen wird, die Abarbeitung erfolgt daher stets nacheinander und niemals rekursiv (siehe WaitState).

Portabilität:
Diese Funktion ist in allen unterstützten Systemen verfügbar, unter DOS müssen sich Sender und Empfänger im gleichen Programm befinden.
[Win16] ACHTUNG (WINDOWS): Befinden sich unter Windows der Sender der Meldung und der Empfänger (Funktion Handler) nicht im gleichen Programm, so darf innerhalb von Handler1 kein Systemaufruf erfolgen, der direkt oder indirekt auf das Instanzhandle (hInstance) des Programms zugreift. Dies liegt darin begründet, dass der Aufruf der Funktion Handler1 aus dem Programmkontext des Senders heraus erfolgen kann und daher vom Windows-System nicht immer der korrekten Instanz zugeordnet werden kann.

Portabilität:
Diese Funktion ist in allen unterstützten Systemen verfügbar.

Weitere Memberfunktionen:
CxiMessageHandlerBase(const char*) - Konstruktor
~CxiMessageHandlerBase() - Destruktor
IsInHandler - Ist der Handler aktiv?
QueryReceiverState - Aktivierungsstatus
RequestShutDown - Herunterfahren eines Empfängers
CreateLocalAlias - Lokaler Aliasname
WaitState - Wartezustand

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 307 von 855, Thema 8508 (Handler1)
[c] Copyright (c) 1996-2000 by TeraConnect GmbH

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