Freigeben über


WS_CHANNEL_DECODER-Struktur (webservices.h)

Eine -Struktur, die verwendet wird, um eine Reihe von Rückrufen anzugeben, die den Inhaltstyp und die codierten Bytes einer empfangenen Nachricht transformieren können.

Syntax

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;

Member

createContext

Ein Kontext, der an die WS_CREATE_DECODER_CALLBACK übergeben wird.

createDecoderCallback

Ein WS_CREATE_DECODER_CALLBACK Rückruf, der eine instance eines Decoders erstellt.

decoderGetContentTypeCallback

Ein WS_DECODER_GET_CONTENT_TYPE_CALLBACK Rückruf, der aufgerufen wird, um den Inhaltstyp der Nachricht abzurufen.

decoderStartCallback

Ein WS_DECODER_START_CALLBACK Rückruf, der am Anfang der Decodierung einer Nachricht aufgerufen wird.

decoderDecodeCallback

Ein WS_DECODER_DECODE_CALLBACK Rückruf, der aufgerufen wird, um eine Nachricht zu decodieren.

decoderEndCallback

Ein WS_DECODER_END_CALLBACK Rückruf, der am Ende der Decodierung einer Nachricht aufgerufen wird.

freeDecoderCallback

Ein WS_FREE_DECODER_CALLBACK Rückruf, der eine instance eines Decoders freigibt.

Hinweise

Ein WS_CHANNEL möchte die codierten Bytes einer Nachricht möglicherweise dekomprimieren, ändern oder anderweitig transformieren, sobald sie empfangen werden. Ein WS_CHANNEL_DECODER stellt die erforderlichen Hooks bereit, um diese Änderungen abzufangen und auszuführen.

Beim Erstellen des Kanals sollte die WS_CHANNEL_PROPERTY_DECODER mit den entsprechenden Funktionen festgelegt werden.

Die angegebenen Rückrufe werden gemäß der folgenden Grammatik aufgerufen:


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

Der Decoder wird möglicherweise nicht die vollständige Decodierungssequenz für eine Nachricht angezeigt, wenn der Kanal oder der Decoder beim Lesen der Nachricht auf einen Fehler stößt. Ein Decoder muss vorbereitet sein, um den Übergang in den entsprechenden Zustand basierend auf den aufgerufenen Rückrufen zu verarbeiten.

Wenn Sie WS_TCP_CHANNEL_BINDING mit WS_CHANNEL_TYPE_SESSION verwenden, wird der Inhaltstyp für den Kanal festgelegt. In diesem Fall muss die WS_DECODER_GET_CONTENT_TYPE_CALLBACK genau denselben Wert für den Inhaltstyp jeder Nachricht zurückgeben.

Die WS_DECODER_END_CALLBACK wird erst aufgerufen , wenn WS_DECODER_DECODE_CALLBACK 0 Bytes zurückgibt.

Wenn der Kanal mit dem Decoder instance beendet ist, wird er über die WS_FREE_DECODER_CALLBACK freigegeben.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 7 [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows Server 2008 R2 [nur Desktop-Apps]
Kopfzeile webservices.h