Compartir a través de


estructura de WS_CHANNEL_DECODER (webservices.h)

Estructura que se usa para especificar un conjunto de devoluciones de llamada que pueden transformar el tipo de contenido y los bytes codificados de un mensaje recibido.

Sintaxis

typedef struct _WS_CHANNEL_DECODER {
  void                                 *createContext;
  WS_CREATE_DECODER_CALLBACK           createDecoderCallback;
  WS_DECODER_GET_CONTENT_TYPE_CALLBACK decoderGetContentTypeCallback;
  WS_DECODER_START_CALLBACK            decoderStartCallback;
  WS_DECODER_DECODE_CALLBACK           decoderDecodeCallback;
  WS_DECODER_END_CALLBACK              decoderEndCallback;
  WS_FREE_DECODER_CALLBACK             freeDecoderCallback;
} WS_CHANNEL_DECODER;

Miembros

createContext

Contexto que se pasará al WS_CREATE_DECODER_CALLBACK.

createDecoderCallback

Devolución de llamada WS_CREATE_DECODER_CALLBACK que crea una instancia de un descodificador.

decoderGetContentTypeCallback

Devolución de llamada WS_DECODER_GET_CONTENT_TYPE_CALLBACK que se invoca para obtener el tipo de contenido del mensaje.

decoderStartCallback

Devolución de llamada WS_DECODER_START_CALLBACK que se invoca al principio de la descodificación de un mensaje.

decoderDecodeCallback

Devolución de llamada WS_DECODER_DECODE_CALLBACK que se invoca para descodificar un mensaje.

decoderEndCallback

Una WS_DECODER_END_CALLBACK devolución de llamada que se invoca al final de la descodificación de un mensaje.

freeDecoderCallback

Devolución de llamada WS_FREE_DECODER_CALLBACK que libera una instancia de un descodificador.

Comentarios

Un WS_CHANNEL puede querer descomprimir, modificar o transformar de otro modo los bytes codificados de un mensaje en cuanto se reciban. Un WS_CHANNEL_DECODER proporciona los enlaces necesarios para interceptar y realizar estas modificaciones.

Al crear el canal, el WS_CHANNEL_PROPERTY_DECODER debe establecerse con las funciones adecuadas.

Las devoluciones de llamada especificadas se invocarán según la gramática siguiente:


decodercalls := create decoderloop* free
decoderloop  := decodestart
             |  decodestart getcontenttype
             |  decodestart getcontenttype (decode*)
             |  decodestart getcontenttype (decode*) decodeend

Es posible que el descodificador no vea la secuencia de descodificación completa de un mensaje si el canal o el descodificador encuentra un error al leer el mensaje. Un descodificador debe estar preparado para controlar la transición al estado adecuado en función de las devoluciones de llamada invocadas.

Al usar WS_TCP_CHANNEL_BINDING con WS_CHANNEL_TYPE_SESSION, el tipo de contenido se fija para el canal. En este caso, el WS_DECODER_GET_CONTENT_TYPE_CALLBACK debe devolver exactamente el mismo valor para el tipo de contenido de cada mensaje.

El WS_DECODER_END_CALLBACK no se invocará hasta que WS_DECODER_DECODE_CALLBACK devuelva 0 bytes.

Cuando el canal termine de usar la instancia del descodificador, se liberará a través de la WS_FREE_DECODER_CALLBACK.

Requisitos

Requisito Value
Cliente mínimo compatible Windows 7 [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows Server 2008 R2 [solo aplicaciones de escritorio]
Encabezado webservices.h