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 |