Freigeben über


WS_CHANNEL_ENCODER-Struktur (webservices.h)

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

Syntax

typedef struct _WS_CHANNEL_ENCODER {
  void                                 *createContext;
  WS_CREATE_ENCODER_CALLBACK           createEncoderCallback;
  WS_ENCODER_GET_CONTENT_TYPE_CALLBACK encoderGetContentTypeCallback;
  WS_ENCODER_START_CALLBACK            encoderStartCallback;
  WS_ENCODER_ENCODE_CALLBACK           encoderEncodeCallback;
  WS_ENCODER_END_CALLBACK              encoderEndCallback;
  WS_FREE_ENCODER_CALLBACK             freeEncoderCallback;
} WS_CHANNEL_ENCODER;

Member

createContext

Ein Kontext, der an den WS_CREATE_ENCODER_CALLBACK übergeben wird.

createEncoderCallback

Ein WS_CREATE_ENCODER_CALLBACK Rückruf, der eine instance eines Encoders erstellt.

encoderGetContentTypeCallback

Ein WS_ENCODER_GET_CONTENT_TYPE_CALLBACK Rückruf, der aufgerufen wird, wenn eine Nachricht codiert werden soll.

encoderStartCallback

Ein WS_ENCODER_START_CALLBACK Rückruf, der aufgerufen wird, um mit der Codierung einer Nachricht zu beginnen.

encoderEncodeCallback

Ein WS_ENCODER_ENCODE_CALLBACK Rückruf, der zum Codieren einer Nachricht aufgerufen wird.

encoderEndCallback

Ein WS_ENCODER_END_CALLBACK Rückruf, der am Ende der Codierung einer Nachricht aufgerufen wird.

freeEncoderCallback

Ein WS_FREE_ENCODER_CALLBACK Rückruf, der eine instance eines Encoders freigibt.

Hinweise

Ein WS_CHANNEL möchte möglicherweise die codierten Bytes einer Nachricht vor dem Senden komprimieren, ändern oder anderweitig transformieren. Eine WS_CHANNEL_ENCODER stellt die erforderlichen Hooks bereit, um diese Änderungen abzufangen und durchzuführen.

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

Die Grammatik für die Encoderrückrufe lautet:


encodercalls := create encoderloop* free
encoderloop  := getcontenttype
             |  getcontenttype encodestart
             |  getcontenttype encodestart (encode*)
             |  getcontenttype encodestart (encode*) encodeend

Der Encoder wird möglicherweise nicht die vollständige Codiersequenz für eine Nachricht angezeigt, wenn für den Kanal oder den Encoder beim Schreiben der Nachricht ein Fehler auftritt. Ein Encoder 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 der WS_ENCODER_GET_CONTENT_TYPE_CALLBACK genau denselben Wert für den Inhaltstyp jeder Nachricht zurückgeben.

Wenn der Kanal mit dem Encoder instance fertig ist, wird er über den WS_FREE_ENCODER_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