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

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

Post - Verschicken einer erweiterten Meldung

[C++] CxiError CxiMessageHandler :: Post (const CxiTree& a, const CxiMessageHandlerBase& mi, CxiLong options = 0)
[C++] CxiError CxiMessageHandler :: Post (const CxiTree& a, const char *mi, CxiLong options = 0)
[C++] static CxiError CXIB :: PostMessageTree (CxiHandle a, const char *mi, const char *sender = 0, CxiLong options = 0)
[C] CxiError cxiExtendedPost (CxiHandle a, const char *mi, const char *sender, CxiLong options)

[S1:BASIS] [Portabilitätswarnung] Verschickt eine erweiterte Meldung, ohne auf Antwort zu warten

a:
Daten/Inhalt der Meldung

mi:
Empfänger der Meldung (als CxiMessageHandlerBase oder direkt als String)

sender:
Name des Absenders der Meldung (wird von den Memberfunktionen automatisch gesetzt)

options:
Queue-Option, einer der folgenden Werte:
- cxiOptPostMsgNoForceQueue: Die Meldung wird nicht über die globale Message Queue geleitet;
- cxiOptPostMsgForceQueue: Die Meldung wird auf jeden Fall über die globale Message Queue geleitet;
- 0 (Vorgabe): Standardeinstellung für eine normale Meldung.
Beliebig viele der folgenden Konstanten können mit ODER (|) verknüpft angegeben werden:
- cxiOptPostMsgNoDefault: Die Meldung wird nur direkt an den angegebenen Empfänger geschickt, es erfolgt keine automatische Umleitung an @DEFAULT, wenn der Empfänger nicht existiert.
- cxiOptPostMsgViaPass: Die Meldung a wird an den Empfänger weitergeleitet (siehe Text).

return:
0 ok, sonst Fehler

Die Funktion Post arbeitet asynchron, sie kehrt sofort zum Aufrufer zurück und wartet nicht, bis die Meldung vom Empfänger angenommen wird. Ein Returncode von 0 zeigt lediglich an, dass der Empfänger existiert und die Meldung erfolgreich verschickt wurde. Das bedeutet nicht, dass die Meldung empfangen oder verarbeitet wurde.

Die Daten des übergebenen CXI-Baums a werden in das Meldungssystem übernommen (kopiert). Der Baum a kann nach dem Aufruf dieser Funktion beliebig weiterverarbeitet werden.

Ist der Empfänger kein erweiterter Meldungsempfänger, sondern ein CxiMessageHandlerBase-Objekt, so kann dieser die eintreffenden Teilmeldungen nicht verarbeiten. Der Speicherplatz für die Kopie der Originaldaten geht dann eventuell verloren.

Der Name des Empfängers kann aus mehreren durch \ getrennten Komponenten bestehen. Post leitet die Meldung dann an den entsprechenden Meldungs-Treiber weiter.

Meldungen an Empfänger, deren Namen mit '@' oder '.@' beginnen (Systemempfänger), werden niemals über die globale Queue geleitet. Die Angabe im Parameter options wird in diesem Fall ignoriert.

Alle Varianten der Post-Funktion verwenden die Basisfunktion PostMessageBlock, um den Baum in Form von Teilmeldungen zu verschicken. Daher gelten die dortigen Hinweise und Einschränkungen bezüglich asynchroner Meldungen auch hier.

Durch Angabe der Option cxiOptPostMsgViaPass wird dem Meldungssystem mitgeteilt, dass der Post-Aufruf eine empfangene Meldung an einen anderen Empfänger weiterleitet (siehe auch Funktion Pass). In diesem Fall muss der Parameter a unmittelbar die empfangene Meldung sein (erster Parameter des Handlers). Der Name des Aufrufers von Post, also des Zwischen-Handlers, wird als MsgA.Via an den endgültigen Empfänger übermittelt. Dies ist insbesondere interessant, wenn die Ablaufverfolgung aktiviert ist.

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. Die Optionen sind ab Version 2.04 definiert.

Weitere Memberfunktionen (CxiMessageHandler):
Pass - Weiterleiten einer empfangenen Meldung
CxiMessageHandler(...) - Konstruktor
Handler2 - Bearbeitungsfunktion
WaitState - Wartezustand
SetDriverMode - Treiber für externe Meldungen
DispatchExternalMessage - Externe Meldung lokal weiterleiten
IsInHandler - Ist der Handler aktiv?
QueryReceiverState - Aktivierungsstatus
RequestShutDown - Herunterfahren eines Empfängers

Weitere Memberfunktionen (CxiMessageHandlerWithQueue):
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


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

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