Compartilhar via


estrutura WS_CHANNEL_ENCODER (webservices.h)

Uma estrutura usada para especificar um conjunto de retornos de chamada que podem transformar o tipo de conteúdo e os bytes codificados de uma mensagem enviada.

Sintaxe

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;

Membros

createContext

Um contexto que será passado para o WS_CREATE_ENCODER_CALLBACK.

createEncoderCallback

Um WS_CREATE_ENCODER_CALLBACK retorno de chamada que cria uma instância de um codificador.

encoderGetContentTypeCallback

Um WS_ENCODER_GET_CONTENT_TYPE_CALLBACK retorno de chamada que é invocado quando uma mensagem deve ser codificada.

encoderStartCallback

Um WS_ENCODER_START_CALLBACK retorno de chamada que é invocado para iniciar a codificação de uma mensagem.

encoderEncodeCallback

Um WS_ENCODER_ENCODE_CALLBACK retorno de chamada que é invocado para codificar uma mensagem.

encoderEndCallback

Um WS_ENCODER_END_CALLBACK retorno de chamada que é invocado para no final da codificação de uma mensagem.

freeEncoderCallback

Um WS_FREE_ENCODER_CALLBACK retorno de chamada que libera uma instância de um codificador.

Comentários

Um WS_CHANNEL pode querer compactar, modificar ou transformar os bytes codificados de uma mensagem antes de serem enviados. Uma WS_CHANNEL_ENCODER fornece os ganchos necessários para interceptar e executar essas modificações.

Ao criar o canal, o WS_CHANNEL_PROPERTY_ENCODER deve ser definido com as funções apropriadas.

A gramática para os retornos de chamada do codificador é:


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

O codificador poderá não ver a sequência de codificação completa de uma mensagem se o canal ou o codificador encontrar um erro ao gravar a mensagem. Um codificador deve estar preparado para lidar com a transição para o estado apropriado com base nos retornos de chamada invocados.

Ao usar WS_TCP_CHANNEL_BINDING com WS_CHANNEL_TYPE_SESSION, o tipo de conteúdo é corrigido para o canal. Nesse caso, o WS_ENCODER_GET_CONTENT_TYPE_CALLBACK deve retornar exatamente o mesmo valor para o tipo de conteúdo de cada mensagem.

Quando o canal terminar de usar a instância do codificador, ele o liberará por meio do WS_FREE_ENCODER_CALLBACK.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows 7 [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows Server 2008 R2 [somente aplicativos da área de trabalho]
Cabeçalho webservices.h