cpiParseBufferFormatted

Zweck

Diese Funktion ist eine Erweiterung der vorhandenen Implementierungsfunktion 'cpiParseBuffer()', die Folgendes bereitstellt:
  1. Die Codierung und den codierten Zeichensatz, in denen die Eingabenachricht dargestellt wird
  2. Die Nachrichtengruppe, den Typ und das Format für die Nachricht

Wenn diese Implementierungsfunktion in der Struktur CPI_VFT bereitgestellt wird, kann weder cpiParseBuffer() noch cpiParseBufferEncoded() angegeben werden, da die Funktion cpiDefineParserClass() mit dem Rückkehrcode CCI_INVALID_IMPL_FUNCTION fehlschlägt.

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 Codierung des Nachrichtenpuffers (Eingabe).
ccsid
Die ID des codierten Zeichensatzes (CCSID) des Nachrichtenpuffers (Eingabe).
set
Die Nachrichtengruppe, der die Nachricht angehört (Eingabe).
type
Der Nachrichtentyp (Eingabe).
format
Das Nachrichtenformat (Eingabe).

Rückgabewerte

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

Beispiel

Dieses Beispiel wurde aus der Parser-Beispieldatei BipSampPluginParser.c entnommen (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;
/* Save the format of the buffer */
pc->iEncoding = encoding;
pc->iCcsid = ccsid;
/* Save size of the buffer */
pc->iSize = cpiBufferSize(&rc, parser);
/* Prime the first byte in the stream */
pc->iCurrentCharacter = cpiBufferByte(&rc, parser, pc->iIndex);
/* Set the current element to the root element */
pc->iCurrentElement = cpiRootElement(&rc, parser);
/* Reset flag to ensure parsing is reset correctly */
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: 18.05.2006
as08170_