structure WS_CHANNEL_DECODER (webservices.h)
Structure utilisée pour spécifier un ensemble de rappels pouvant transformer le type de contenu et les octets encodés d’un message reçu.
Syntaxe
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;
Membres
createContext
Contexte qui sera passé au WS_CREATE_DECODER_CALLBACK.
createDecoderCallback
Rappel WS_CREATE_DECODER_CALLBACK qui crée un instance d’un décodeur.
decoderGetContentTypeCallback
Un WS_DECODER_GET_CONTENT_TYPE_CALLBACK rappel appelé pour obtenir le type de contenu du message.
decoderStartCallback
Une WS_DECODER_START_CALLBACK rappel appelé au début du décodage d’un message.
decoderDecodeCallback
Une WS_DECODER_DECODE_CALLBACK rappel appelé pour décoder un message.
decoderEndCallback
Un WS_DECODER_END_CALLBACK rappel appelé à la fin du décodage d’un message.
freeDecoderCallback
Un rappel WS_FREE_DECODER_CALLBACK qui libère un instance d’un décodeur.
Remarques
Un WS_CHANNEL peut souhaiter décompresser, modifier ou transformer les octets encodés d’un message dès leur réception. Une WS_CHANNEL_DECODER fournit les crochets nécessaires pour intercepter et effectuer ces modifications.
Lors de la création du canal, le WS_CHANNEL_PROPERTY_DECODER doit être défini avec les fonctions appropriées.
Les rappels spécifiés sont appelés en fonction de la grammaire suivante :
decodercalls := create decoderloop* free
decoderloop := decodestart
| decodestart getcontenttype
| decodestart getcontenttype (decode*)
| decodestart getcontenttype (decode*) decodeend
Le décodeur peut ne pas voir la séquence de décodage complète d’un message si le canal ou le décodeur rencontre une erreur lors de la lecture du message. Un décodeur doit être prêt à gérer la transition vers l’état approprié en fonction des rappels appelés.
Lorsque vous utilisez WS_TCP_CHANNEL_BINDING avec WS_CHANNEL_TYPE_SESSION, le type de contenu est fixe pour le canal. Dans ce cas, le WS_DECODER_GET_CONTENT_TYPE_CALLBACK doit retourner exactement la même valeur pour le type de contenu de chaque message.
Le WS_DECODER_END_CALLBACK n’est pas appelé tant que WS_DECODER_DECODE_CALLBACK ne retourne pas 0 octet.
Lorsque le canal a terminé d’utiliser le décodeur instance il le libère via le WS_FREE_DECODER_CALLBACK.
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Windows 7 [applications de bureau uniquement] |
Serveur minimal pris en charge | Windows Server 2008 R2 [applications de bureau uniquement] |
En-tête | webservices.h |