cniRun

Diese Funktion deklariert den Knoten als Empfangsknoten. Nachrichtenverarbeitungs- und Sendeknoten verwenden sie nicht, und Sie brauchen cniEvaluate nicht aufzurufen. Der Broker ordnet einen Thread zu, und ruft diese Funktion in diesem Thread auf.

Definiert in Typ Mitglied
CNI_VFT Bedingt iFpRun

Syntax

int cniRun(
  CCiContext*  context,
  CCiMessage*  localEnvironment,
  CciMessage* exceptionList,
  CciMessage* message
);

Parameter

context
Die Adresse des Kontextes für die Instanz des Knotens, der vom Knoten erstellt und von der Funktion cniCreateNodeContext (Eingabe) zurückgegeben wurde.
localEnvironment
Die Adresse des lokalen Umgebungsobjekts der Eingabe (Eingabe).

Aus Gründen der Kompatibilität mit früheren Versionen kann dieser Parameter auch als destinationList bezeichnet werden.

exceptionList
Die Adresse der Ausnahmeliste für die Nachricht (Eingabe).
message
Die Adresse des Nachrichtenobjekts, dem die Daten hinzugefügt werden sollen (Eingabe).

Der benutzerdefinierte Knoten kann dieser Nachricht einen Bitstrom durch Aufruf von cniSetInputBuffer zuordnen. Das Auffüllen der Baumstruktur dieser Nachricht wird nicht unterstützt, daher sind Aufrufe von Funktionen wie z. B. cniAddAsLastChild oder cniCreateElementAsLastChildFromBitstream wirkungslos. Um Teile der Baumstruktur zu erstellen anstatt einen Puffer bereitzustellen, der als ganze Nachricht syntaktisch analysiert wird, sollten Sie eine neue Nachricht unter Verwendung von cniCreateMessage erstellen.

Wenn beispielsweise ein Bitstrom als Nachrichtenteil mit den Nutzinformationen verwendet werden soll, und Sie einen Header hinzufügen möchten, führen Sie folgende Schritte aus:
  1. Erstellen Sie eine neue Nachricht unter Verwendung von cniCreateMessage.
  2. Erstellen Sie den Header in dieser neuen Nachricht unter Verwendung der Funktionen des Dienstprogramms für den Zugriff auf Syntaxelemente (z. B. cniCreateElementAsLastChildUsingParser), und übergeben Sie das Stammelement dieser neuen Nachricht.
  3. Fügen Sie zum Header Felder hinzu, indem Sie Funktionen wie z. B. cniCreateElementAsLastChild verwenden.
  4. Erstellen Sie den Hauptteil der Nachricht, indem Sie Ihren Bitstrom durch Aufruf von cniCreateElementAsLastChildFromBitstream syntaktisch analysieren, und das Stammelement dieser neuen Nachricht übergeben.

Rückgabewerte

Diese Funktion wird vom Broker als Teil einer Schleife aufgerufen. Die Bedeutung des Rückgabewertes wird nachfolgend aufgeführt:

CCI_TIMEOUT
Vom Empfangsknoten wurden keine Eingabedaten empfangen. Dieser Wert bedeutet, dass die Steuerung an den Broker zurückgegeben werden sollte, falls die erneute Konfiguration des Nachrichtenflusses angefordert wird. Die Rückgabe eines benutzerdefinierten Empfangsknotens sollte in regelmäßigen Abständen stattfinden, damit die Steuerung an den Broker zurückgegeben werden kann.
CCI_SUCCESS_CONTINUE
Eine Nachricht wurde erfolgreich verarbeitet. Der Broker führt eine standardmäßige COMMIT-Verarbeitung für die Transaktion durch. Die Implementierungsfunktion cniRun des Empfangsknotens wird sofort aufgerufen, so dass die Verarbeitung des Knotens fortgesetzt werden kann.
CCI_SUCCESS_RETURN
Eine Nachricht wurde erfolgreich verarbeitet. Der Broker führt eine standardmäßige COMMIT-Verarbeitung für die Transaktion durch. Der Empfangsknoten hat bestimmt, dass der Thread nicht erforderlich ist und an den Thread-Pool des Nachrichtenflusses zurückgegeben wird. Wenn es sich bei dieser Verarbeitung um den einzigen oder letzten aktiven Thread handelt, verhindert der Broker, dass dieser letzte Thread an den Pool zurückgegeben wird, ansonsten wären keine aktiven Threads mehr vorhanden, die einen anderen Thread zuteilen können. In dieser Situation ruft der Broker die Implementierungsfunktion cniRun sofort auf, als ob CCI_SUCCESS_CONTINUE zurückgegeben würde.
CCI_FAILURE_CONTINUE
In der Verarbeitung einer Nachricht ist ein Fehler aufgetreten, und der Knoten fordert die Zurücksetzung der Transaktion an. Die Implementierungsfunktion cniRun des Empfangsknotens wird sofort aufgerufen.
CCI_FAILURE_RETURN
In der Verarbeitung einer Nachricht ist ein Fehler aufgetreten, und der Knoten fordert die Zurücksetzung der Transaktion an. Der Empfangsknoten hat jedoch bestimmt, dass der Thread nicht erforderlich ist und an den Thread-Pool des Nachrichtenflusses zurückgegeben werden kann. Wenn es sich bei dieser Verarbeitung um den letzten aktiven Thread handelt, verhindert der Broker, dass dieser letzte Thread an den Pool zurückgegeben wird, ansonsten wären keine aktiven Threads mehr vorhanden, die einen anderen Thread zuteilen können. In dieser Situation ruft der Broker die Implementierungsfunktion cniRun sofort auf, als ob CCI_FAILURE_CONTINUE zurückgegeben würde.
Zugehörige Konzepte
Benutzerdefinierte Empfangsknoten
Bemerkungen | Marken | Downloads | Bibliothek | Unterstützung | Feedback

Copyright IBM Corporation 1999, 2009Copyright IBM Corporation 1999, 2009.
Letzte Aktualisierung : 2009-02-17 15:29:55

as07480_