cpiParseBufferFormatted

Zweck

Diese Funktion ist eine Erweiterung der Funktionalität, die von der vorhandenen Implementierungsfunktion cpiParseBuffer() zur Verfügung gestellt wird, die Folgendes bereitstellt:
  1. Die Verschlüsselung und der codierte Zeichensatz, in dem die Eingabenachricht dargestellt wird.
  2. Die Nachrichtengruppe, Typ und Format für die Nachricht.

Wenn diese Implementierungsfunktion in der CPI_VFT-Struktur bereitgestellt wird, kann weder cpiParseBuffer() noch cpiParseBufferEncoded() angegeben werden, da die Funktion cpiDefineParserClass() einen Fehler mit einem Rückkehrcode von CCI_INVALID_IMPL_FUNCTION aufweisen wird.

Definiert in Typ Mitglied
CPI_VFT Bedingt iFpParseBufferFormatted

Syntax

int cpiParseBufferFormatted(
  CciParser*     parser,
  CciContext*    context,
  int            encoding,
  int            ccsid,
  CciChar*       set,
  CciChar*       type,
  CciChar*       format); 

Parameter

parser
Die Adresse des Parserobjekts (Eingabe).
context
Die Adresse des Kontextes des Parserobjekts (Eingabe).
encoding
Die Verschlüsselung des Nachrichtenpuffers (Eingabe).
ccsid
Die ID des codierten Zeichensatzes des Nachrichtenpuffers (Eingabe).
set
Die Nachrichtengruppe, zu der die Nachricht gehört (Eingabe).
type
Der Nachrichtentyp (Eingabe).
format
Das Nachrichtenformat (Eingabe).

Rückgabewerte

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

Beispielprogramm

Dieses Beispiel stammt aus der Beispiel-Parserdatei BipSampPluginParser.c (Zeile 428 bis 466):

int cpiParseBufferFormatted(
  CciParser*     parser,
  CciContext*    context,
  int            encoding,
  int            ccsid,
  CciChar*       set,
  CciChar*       type,
  CciChar*       format
){
  PARSER_CONTEXT_ST* pc = (PARSER_CONTEXT_ST *)context ;
  int                rc;

  /* Get a pointer to the message buffer and set the offset */
  pc->iBuffer = (void *)cpiBufferPointer(&rc, parser);
  pc->iIndex = 0;

  /* Format des Puffers speichern */
  pc->iEncoding = encoding;
  pc->iCcsid = ccsid;

  /* 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: <- cpiParseBufferFormatted()
    retvalue=%d\n", pc->iSize);
    fflush(pc->tracefile);
  }
Zugehörige Konzepte
Benutzerdefinierte Parser
Benutzerdefinierte Erweiterungen
Zugehörige Tasks
Parser in C erstellen
Zugehörige Verweise
cpiParseBuffer
cpiParseBufferEncoded
C-Parser-Implementierungsfunktionen
Bemerkungen | Marken | Downloads | Bibliothek | Unterstützung | Rückmeldung
Copyright IBM Corporation 1999, 2006 Letzte Aktualisierung: 23. Aug. 2006
as08170_