Partager via


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