WebSphere Message Broker Version 8.0.0.5 Betriebssysteme: AIX, HP-Itanium, Linux, Solaris, Windows, z/OS

Sehen Sie sich die Informationen zur aktuellen Produktversion im IBM Integration Bus Version 9.0 an.

cpiParseBuffer

Diese Funktion bereitet einen Parser auf die Auswertung eines neuen Nachrichtenobjekts vor. Die Funktion wird zum ersten Mal (für jede Nachricht) aufgerufen, wenn der Nachrichtenfluss die Auswertung des Nachrichteninhalts verursacht.

Diese Funktion wird für jeden benutzerdefinierte Parser, der für die Syntaxanalyse eines bestimmten Nachrichtenformats verwendet wird, aufgerufen, um folgende Aktionen auszuführen:

Der Parameter offset gibt den Offset im Nachrichtenpuffer an, wo mit der Analyse begonnen werden soll. Diese Angabe ist erforderlich, da ein weiterer Parser möglicherweise Eigner eines vorherigen Teils der Nachricht ist (z. B. ein MQMD-Header wird von einem internen Parser des Brokers ausgewertet). Der Offset muss positiv und kleiner als die Puffergröße sein. Überprüfen Sie in dieser Funktion, ob der Offset gültig ist, um Probleme mit vorherigen Parsern zu beheben.

Der Parser muss die Größe des verbleibenden Puffers zurückgeben, für den er das Eigentumsrecht übernimmt. Die Größe muss kleiner-gleich der Größe des Puffers abzüglich des aktuellen Offsets sein.

Ein Parser darf nicht versuchen, die Auswertung anderer Teile der Syntaxelement-Baumstruktur zu verursachen, z. B. durch Navigation zum Stammelement und zu einem anderen Ast. Diese Aktion kann zu unvorhersehbaren Ergebnissen führen.

Wenn diese Implementierungsfunktion in der Struktur CPI_VFT bereitgestellt wird, können Sie weder cpiParseBufferEncoded() noch cpiParseBufferFormatted() aufrufen, da die Funktion cpiDefineParserClass() mit dem Rückkehrcode CCI_INVALID_IMPL_FUNCTION fehlschlägt.

Definiert in Typ Mitglied
CPI_VFT Bedingt iFpParseBuffer

Syntax

int cpiParseBuffer(
  CciParser*   parser,
  CciContext* context,
  int          offset);

Parameter

parser
Die Adresse des Parserobjekts (Eingabe).
context
Die Adresse des Kontextes des Parserobjekts (Eingabe).
offset
Die relative Position im Nachrichtenpuffer, bei der mit der Analyse begonnen wird (Eingabe).

Rückgabewerte

Die Größe (in Byte) des restlichen Teils des Nachrichtenpuffers, für den der Parser das Eigentumsrecht übernimmt.

Beispiel

Das folgende Beispiel stammt aus der Musterparserdatei BipSampPluginParser.c:

int cpiParseBuffer(
  CciParser*   parser,
  CciContext* context,
  int         offset,
){
  PARSER_CONTEXT_ST* pc = (PARSER_CONTEXT_ST *)context ;
  int             rc; 

  /* Zeiger auf den Nachrichtenpuffer abrufen und Offset festlegen */
  pc->iBuffer = (void *)cpiBufferPointer(&rc, parser);
  pc->iIndex = 0;

  /* Größe des Puffers speichern */
  pc->iSize = cpiBufferSize(&rc, parser);

  /* Ersten Byte im Datenstrom einsetzen */
  pc->iCurrentCharacter = cpiBufferByte(&rc, parser, pc->iIndex);

  /* Aktuelles Element für das Stammelement festlegen */
  pc->iCurrentElement = cpiRootElement(&rc, parser);

  /* Flag zurücksetzen, um sicherzustellen, dass die Analyse korrekt zurückgesetzt wird */
  pc->iInTag = 0;

  if (pc->trace) {
    fprintf(pc->tracefile, "PLUGIN: <- cpiParseBuffer() 
    retvalue=%d\n", pc->iSize);
    fflush(pc->tracefile);
  }
Bemerkungen | Marken | Downloads | Bibliothek | Support | Feedback

Copyright IBM Corporation 1999, 2014Copyright IBM Corporation 1999, 2014.

        
        Letzte Aktualisierung:
        
        Letzte Aktualisierung: 2015-02-28 16:22:03


ReferenzthemaReferenzthema | Version 8.0.0.5 | as08150_