Diese Funktion ist eine Erweiterung der vorhandenen Implementierungsfunktion cpiWriteBuffer(), die die Codierung und den codierten Zeichensatz bereitstellt, in denen die Ausgabenachricht dargestellt werden sollte, wenn der Parser die Elementstruktur in einen Ausgabebitstrom serialisiert. Wenn keine serielle Verarbeitung erforderlich ist, zum Beispiel wenn die Ausgabe auf einem Eingabebitstrom basiert und die Baumstruktur nicht verändert wurde, wird diese Implementierungsfunktion nicht vom Broker aufgerufen. Wenn diese Implementierungsfunktion in der Struktur CPI_VFT bereitgestellt wird, kann weder cpiWriteBuffer() noch cpiWriteBufferFormatted() angegeben werden, da die Funktion cpiDefineParserClass() mit dem Rückkehrcode CCI_INVALID_IMPL_FUNCTION fehlschlägt.
Definiert in | Typ | Mitglied |
CPI_VFT | Bedingt | iFpWriteBufferEncoded |
int cpiWriteBufferEncoded( CciParser* Parser, CciContext* Kontext, int encoding, int ccsid);
Die Größe der Daten in Byte, die an den Bitstrom im Puffer angehängt sind.
Dieses Beispiel stammt aus der Musterparserdatei BipSampPluginParser.c (Zeile 612 bis 642):
int cpiWriteBufferEncoded( CciParser* Parser, CciContext* Kontext, int encoding, int ccsid ){ PARSER_CONTEXT_ST* pc = (PARSER_CONTEXT_ST *)context ; int initialSize = 0; int rc = 0; const void* a; CciByte b; initialSize = cpiBufferSize(&rc, parser); a = cpiBufferPointer(&rc, parser); b = cpiBufferByte(&rc, parser, 0); cpiAppendToBuffer(&rc, parser, (char *)"Some test data", 14); return cpiBufferSize(0, parser) - initialSize; }