This function is an extension of the capability provided by the existing cpiWriteBuffer() implementation function that provides the encoding and coded character set that the output message should be represented in when the parser serializes its element tree to an output bit stream.
If serialization is not required, for example when the output is based on an input bit stream, and the tree has not been modified, this implementation function is not called by the integration node. If this implementation function is provided in the CPI_VFT structure, you cannot specify either cpiWriteBuffer() or cpiWriteBufferFormatted(); if you do, the cpiDefineParserClass() function fails with a return code of CCI_INVALID_IMPL_FUNCTION.
Defined In | Type | Member |
---|---|---|
CPI_VFT | Conditional | iFpWriteBufferEncoded |
int cpiWriteBufferEncoded(
CciParser* parser,
CciContext* context,
int encoding,
int ccsid);
The size in bytes of the data appended to the bit stream in the buffer.
This example is taken from the sample parser file BipSampPluginParser.c:
int cpiWriteBufferEncoded(
CciParser* parser,
CciContext* context,
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;
}