다음을 통해 공유


WS_CHANNEL_ENCODER 구조체(webservices.h)

전송된 메시지의 콘텐츠 형식 및 인코딩된 바이트를 변환할 수 있는 콜백 집합을 지정하는 데 사용되는 구조체입니다.

구문

typedef struct _WS_CHANNEL_ENCODER {
  void                                 *createContext;
  WS_CREATE_ENCODER_CALLBACK           createEncoderCallback;
  WS_ENCODER_GET_CONTENT_TYPE_CALLBACK encoderGetContentTypeCallback;
  WS_ENCODER_START_CALLBACK            encoderStartCallback;
  WS_ENCODER_ENCODE_CALLBACK           encoderEncodeCallback;
  WS_ENCODER_END_CALLBACK              encoderEndCallback;
  WS_FREE_ENCODER_CALLBACK             freeEncoderCallback;
} WS_CHANNEL_ENCODER;

멤버

createContext

WS_CREATE_ENCODER_CALLBACK 전달될 컨텍스트입니다.

createEncoderCallback

인코더의 instance 만드는 WS_CREATE_ENCODER_CALLBACK 콜백입니다.

encoderGetContentTypeCallback

메시지를 인코딩할 때 호출되는 WS_ENCODER_GET_CONTENT_TYPE_CALLBACK 콜백입니다.

encoderStartCallback

메시지 인코딩을 시작하기 위해 호출되는 WS_ENCODER_START_CALLBACK 콜백입니다.

encoderEncodeCallback

메시지를 인코딩하기 위해 호출되는 WS_ENCODER_ENCODE_CALLBACK 콜백입니다.

encoderEndCallback

메시지를 인코딩할 때 호출되는 WS_ENCODER_END_CALLBACK 콜백입니다.

freeEncoderCallback

인코더의 instance 해제하는 WS_FREE_ENCODER_CALLBACK 콜백입니다.

설명

WS_CHANNEL 메시지를 보내기 전에 인코딩된 바이트를 압축, 수정 또는 변환할 수 있습니다. WS_CHANNEL_ENCODER 이러한 수정을 가로채고 수행하는 데 필요한 후크를 제공합니다.

채널을 만들 때 적절한 함수를 사용하여 WS_CHANNEL_PROPERTY_ENCODER 설정해야 합니다.

인코더 콜백의 문법은 다음과 같습니다.


encodercalls := create encoderloop* free
encoderloop  := getcontenttype
             |  getcontenttype encodestart
             |  getcontenttype encodestart (encode*)
             |  getcontenttype encodestart (encode*) encodeend

메시지를 작성하는 동안 채널 또는 인코더에 오류가 발생하는 경우 인코더에 메시지의 전체 인코딩 시퀀스가 표시되지 않을 수 있습니다. 호출된 콜백에 따라 적절한 상태로의 전환을 처리하도록 인코더를 준비해야 합니다.

WS_CHANNEL_TYPE_SESSION WS_TCP_CHANNEL_BINDING 사용하는 경우 콘텐츠 형식이 채널에 대해 수정됩니다. 이 경우 WS_ENCODER_GET_CONTENT_TYPE_CALLBACK 모든 메시지의 콘텐츠 형식에 대해 정확히 동일한 값을 반환해야 합니다.

채널이 인코더 instance 사용이 완료되면 WS_FREE_ENCODER_CALLBACK 통해 해제됩니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 7 [데스크톱 앱만 해당]
지원되는 최소 서버 Windows Server 2008 R2 [데스크톱 앱만 해당]
머리글 webservices.h