이 함수는 구문 분석기가 해당 요소 트리를 출력 비트스트림으로 직렬화할 때 출력 메시지 표현에 사용될 인코딩 및 코딩 문자 세트를 제공하는 기존 cpiWriteBuffer() 구현 함수에서 제공하는 기능을 확장하여 제공합니다. 가령 기본 출력이 입력 비트스트림에 기초하는 경우나 트리가 수정되지 않은 경우처럼 직렬화가 필요하지 않을 때 브로커는 이 구현 함수를 호출하지 않습니다. 이 구현 함수가 CPI_VFT 구조에 제공된 경우, cpiWriteBuffer()와 cpiWriteBufferFormatted() 모두 지정할 수 없습니다. CCI_INVALID_IMPL_FUNCTION 리턴 코드가 표시되면서 cpiDefineParserClass() 함수가 작동 중지되기 때문입니다.
정의 대상 | 유형 | 구성원 |
CPI_VFT | 조건부 | iFpWriteBufferEncoded |
int cpiWriteBufferEncoded( CciParser* parser, CciContext* context, int encoding, int ccsid);
버퍼의 비트스트림에 추가할 데이터의 크기(바이트 단위).
다음 예는 샘플 구문 분석기 파일 BipSampPluginParser.c에서 발췌한 것입니다(612 - 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; }