struttura WS_CHANNEL_DECODER (webservices.h)

Struttura utilizzata per specificare un set di callback in grado di trasformare il tipo di contenuto e i byte codificati di un messaggio ricevuto.

Sintassi

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;

Members

createContext

Contesto che verrà passato al WS_CREATE_DECODER_CALLBACK.

createDecoderCallback

Callback WS_CREATE_DECODER_CALLBACK che crea un'istanza di un decodificatore.

decoderGetContentTypeCallback

Callback WS_DECODER_GET_CONTENT_TYPE_CALLBACK richiamato per ottenere il tipo di contenuto del messaggio.

decoderStartCallback

Callback WS_DECODER_START_CALLBACK richiamato all'inizio della decodifica di un messaggio.

decoderDecodeCallback

Callback WS_DECODER_DECODE_CALLBACK richiamato per decodificare un messaggio.

decoderEndCallback

Callback WS_DECODER_END_CALLBACK richiamato alla fine della decodifica di un messaggio.

freeDecoderCallback

Callback WS_FREE_DECODER_CALLBACK che libera un'istanza di un decodificatore.

Commenti

Un WS_CHANNEL può voler decomprimere, modificare o trasformare in altro modo i byte codificati di un messaggio non appena vengono ricevuti. Un WS_CHANNEL_DECODER fornisce gli hook necessari per intercettare ed eseguire queste modifiche.

Quando si crea il canale, il WS_CHANNEL_PROPERTY_DECODER deve essere impostato con le funzioni appropriate.

I callback specificati verranno richiamati in base alla grammatica seguente:


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

Il decodificatore potrebbe non visualizzare la sequenza di decodifica completa per un messaggio se il canale o il decodificatore rileva un errore durante la lettura del messaggio. Un decodificatore deve essere preparato per gestire la transizione allo stato appropriato in base ai callback richiamati.

Quando si usa WS_TCP_CHANNEL_BINDING con WS_CHANNEL_TYPE_SESSION, il tipo di contenuto è fisso per il canale. In questo caso, il WS_DECODER_GET_CONTENT_TYPE_CALLBACK deve restituire esattamente lo stesso valore per il tipo di contenuto di ogni messaggio.

Il WS_DECODER_END_CALLBACK non verrà richiamato fino a quando WS_DECODER_DECODE_CALLBACK restituisce 0 byte.

Al termine dell'utilizzo dell'istanza del decodificatore, il canale lo libererà tramite il WS_FREE_DECODER_CALLBACK.

Requisiti

Requisito Valore
Client minimo supportato Windows 7 [solo app desktop]
Server minimo supportato Windows Server 2008 R2 [solo app desktop]
Intestazione webservices.h