Questa funzione è un'estensione della caratteristica fornita dalla funzione di implementazione esistente cpiWriteBuffer() che fornisce la codifica e la serie di caratteri codificata di rappresentazione del messaggio di output quando il programma di analisi serializza la relativa struttura ad albero dell'elemento in un flusso di bit di output. Se non è richiesta la serializzazione, ad esempio quando l'output si basa su un flusso di bit di input, e la struttura ad albero non è stata modificata, questa funzione di implementazione non verrà richiamata dal broker. Se nella struttura CPI_VFT viene fornita questa funzione di implementazione, non è possibile specificare cpiWriteBuffer() né cpiWriteBufferFormatted() in quanto la funzione cpiDefineParserClass() avrà esito negativo e viene restituito il codice di ritorno CCI_INVALID_IMPL_FUNCTION.
Definito in | Tipo | Membro |
CPI_VFT | Condizionale | iFpWriteBufferEncoded |
int cpiWriteBufferEncoded( CciParser* parser, CciContext* context, int encoding, int ccsid);
La dimensione in byte dei dati accodati al flusso di bit nel buffer.
Questo esempio è estratto dal file del programma di analisi di esempio BipSampPluginParser.c (da riga 612 a 642):
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; }