cpiParseBuffer

목적

구문 분석기가 새 메시지 오브젝트를 구문 분석하도록 준비합니다. 메시지 플로우가 처음으로 메시지 컨텐츠를 구문 분석할 때(각 메시지마다) 호출됩니다. 특정 메시지 형식을 구문 분석하는 데 사용되는 각 사용자 정의 구문 분석기는 다음의 작업을 위해 이 함수를 호출합니다.

offset 매개변수는 구문 분석이 시작될 메시지 버퍼 내의 오프셋을 나타냅니다. 다른 구문 분석기가 메시지의 앞부분을 소유할 수 있기 때문에 이 매개변수가 필요합니다. (예를 들면, 메시지 브로커의 내부 구문 분석기가 MQMD 헤더를 구문 분석했을 수 있습니다.) 오프셋은 양수여야 하며, 버퍼 크기보다 작아야 합니다. 구현 함수가 오프셋의 유효성을 검증하는 것이 좋습니다. 그러면 이전의 구문 분석기에 오류가 있을 경우 문제점 판별에 도움이 되기 때문입니다.

구문 분석기는 해당 플러그인이 소유하는 나머지 버퍼의 크기를 리턴해야 합니다. 이 크기는 현재 오프셋보다 작은 버퍼 크기 이하여야 합니다.

구문 분석기는 가령, 루트 요소나 다른 분기로 이동하여 구문 요소 트리의 다른 부분에 대한 구문 분석이 수행되도록 해서는 안 됩니다. 이 경우 예상치 못한 결과가 발생할 수 있습니다.

이 구현 함수가 CPI_VFT 구조에 제공된 경우, cpiParseBufferEncoded()cpiParseBufferFormatted() 모두 지정할 수 없습니다. CCI_INVALID_IMPL_FUNCTION 리턴 코드가 표시되면서 cpiDefineParserClass() 함수가 작동 중지되기 때문입니다.

정의 대상 유형 구성원
CPI_VFT 조건부 iFpParseBuffer

구문

int cpiParseBuffer(
    CciParser*      parser,
    CciContext* context,
    int          offset);

매개변수

parser
구문 분석기 오브젝트의 주소(입력).
context
구문 분석기 오브젝트가 소유하는 컨텍스트의 주소(입력)
offset
구문 분석이 시작될 메시지 버퍼의 오프셋(입력).

리턴 값

구문 분석기가 소유하는 메시지 버퍼의 나머지 부분 크기(바이트 단위).

샘플

다음 예는 샘플 구문 분석기 파일 BipSampPluginParser.c에서 발췌한 것입니다(428 - 466행).

int cpiParseBuffer(
    CciParser*      parser,
    CciContext* context,
    int         offset,
){
    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 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: <- cpiParseBuffer() 
    retvalue=%d\n", pc->iSize);
    fflush(pc->tracefile);
  }
관련 개념
사용자 정의 입력 노드
사용자 정의 확장 구성요소
관련 태스크
C로 구문 분석기 작성
관련 참조
cpiParseBufferEncoded
cpiParseBufferFormatted
C 구문 분석기 구현 함수
주의사항 | 등록상표 | 다운로드 | 라이브러리 | 지원 | 피드백
Copyright IBM Corporation 1999, 2006 마지막 갱신 날짜: 2006/08/21
as08150_