Produkte >> CXI >> Online-Hilfe >> CXI-Basis-Programmierreferenz Sprung zum Seitenende
Allgemeines Online-Hilfe Preisliste Download

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

  Struktur Themen A...Z Titel << >>

class CxiMessageHandlerWithQueue

class CxiMessageHandlerWithQueue : public CxiMessageHandler

[S1:BASIS] CxiMessageHandlerWithQueue ist die zweite Unterstufe des erweiterten Meldungssystems.

Während alle bisherigen Meldungsklassen je nach System kleine Unterschiede aufwiesen, um eine optimale Speicher- und Zeitnutzung zu erzielen, stellt diese Klasse ein unter allen Systemen gleiches Schnittstellenverhalten zur Verfügung:

- Alle Meldungen werden asynchron verschickt, es erfolgt keine Synchronisierung.

- Ein rekursiver Aufruf der Handlerfunktion erfolgt nur, wenn dies explizit angefordert wird.

- Der vom Sender verschickte Datenblock wird in keiner Weise verändert, er kann den Status cxiOptReadOnly besitzen.

- Um diese Bedingungen zu erfüllen, verwendet diese Klasse eine lokale 'Message Queue', die alle empfangenen Meldungen aufnimmt, bis sie verarbeitet werden können.

Um einen erweiterten Meldungssender und -empfänger zu definieren, sollte eine Ableitung dieser Klasse erstellt werden, wobei die virtuelle Funktion Handler2 überschrieben wird.

Die Klasse sammelt die eintreffenden Teilmeldungen und fügt sie wieder zu einem CXI-Baum zusammen. Dieser wird danach in eine Queue gestellt, die sie einzeln als Parameter an die Funktion Handler2 übergibt. Nach der Rückkehr wird die Verarbeitung als beendet betrachtet und der Baum gelöscht, es erfolgt keine Rückübertragung zum Absender.

Während das Objekt vom Typ CxiMessageHandlerWithQueue existiert, können beliebige Prozesse mit der geerbten Funktion Post Meldungen an diesen Empfänger schicken. Sie müssen dazu lediglich den symbolischen Namen kennen.

ACHTUNG: 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 RequestShutDown und QueryReceiverState eine Möglichkeit geschaffen, das Beenden eines Empfängers asynchron anzustoßen. Innerhalb von Destruktoren sollte WaitShutDown() aufgerufen werden. Diese Funktion wartet, bis sich keine Meldungen mehr in Verarbeitung befinden, dann deaktiviert sie den Empfänger. Erst jetzt kann das Receiver-Objekt gefahrlos gelöscht werden. Die von CXI selbst zur Verfügung gestellten Destruktoren rufen WaitShutDown() automatisch auf.

Portabilität:
Diese Klasse ist in allen unterstützten Systemen verfügbar, unter DOS müssen sich Sender und Empfänger im gleichen Programm befinden.

Memberfunktionen:
CxiMessageHandlerWithQueue(...) - Konstruktor
PreHandler - Abfangen von Meldungen
CountQueue - Anzahl Meldungen in der Queue
PollQueue - Eine Meldung abarbeiten
ExecuteQueueUntilEmpty - Alle Meldungen abarbeiten
ExecuteQueueUntilError - Meldungen abarbeiten bis Fehler
ZapQueue - Queue löschen
LockQueue - Automatisches Abarbeiten verhindern
UnLockQueue - Automatisches Abarbeiten ermöglichen

Geerbte Memberfunktionen:
Handler2 - Bearbeitungsfunktion für empfangene Meldungen
WaitState - Wartezustand
Post - Verschicken einer erweiterten Meldung
Pass - Weiterleiten einer empfangenen Meldung
IsInHandler - Ist der Handler aktiv?
QueryReceiverState - Aktivierungsstatus
RequestShutDown - Herunterfahren eines Empfängers

Siehe auch:
Klassenhierarchie Meldungssystem
class CxiMessageHandlerBase - Basisempfänger
PostMessageBlock
SendMessageBlock (mit Beispiel)
class CxiMessageHandler - Erweiterter Meldungsempfänger ohne Queue
Treiber für externe Meldungen


  CXI-Basis-Programmierreferenz
Version 2.10 72 (1014-001), erstellt am 15. April 2000
Textseite 321 von 855, Thema 8494 (CxiMessageHandlerWithQueue)


  Struktur Themen A...Z Titel << >>
  Copyright © 2005 by TeraConnect Informationstechnologie GmbH Sprung zum Seitenanfang