Condividi tramite


WS_CHANNEL_ENCODER struttura (webservices.h)

Struttura utilizzata per specificare un set di callback che possono trasformare il tipo di contenuto e i byte codificati di un messaggio inviato.

Sintassi

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;

Members

createContext

Contesto che verrà passato al WS_CREATE_ENCODER_CALLBACK.

createEncoderCallback

Callback WS_CREATE_ENCODER_CALLBACK che crea un'istanza di un codificatore.

encoderGetContentTypeCallback

Un callback WS_ENCODER_GET_CONTENT_TYPE_CALLBACK richiamato quando un messaggio deve essere codificato.

encoderStartCallback

Callback WS_ENCODER_START_CALLBACK richiamato per avviare la codifica di un messaggio.

encoderEncodeCallback

Callback WS_ENCODER_ENCODE_CALLBACK richiamato per codificare un messaggio.

encoderEndCallback

Callback WS_ENCODER_END_CALLBACK richiamato alla fine della codifica di un messaggio.

freeEncoderCallback

Callback WS_FREE_ENCODER_CALLBACK che libera un'istanza di un codificatore.

Commenti

Un WS_CHANNEL può voler comprimere, modificare o trasformare in caso contrario i byte codificati di un messaggio prima dell'invio. Un WS_CHANNEL_ENCODER fornisce gli hook necessari per intercettare ed eseguire queste modifiche.

Quando si crea il canale, il WS_CHANNEL_PROPERTY_ENCODER deve essere impostato con le funzioni appropriate.

La grammatica per i callback del codificatore è:


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

Il codificatore potrebbe non visualizzare la sequenza di codifica completa per un messaggio se il canale o il codificatore rileva un errore durante la scrittura del messaggio. Un codificatore 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 viene corretto per il canale. In questo caso, il WS_ENCODER_GET_CONTENT_TYPE_CALLBACK deve restituire esattamente lo stesso valore per il tipo di contenuto di ogni messaggio.

Al termine dell'uso dell'istanza del codificatore, il canale lo libera tramite il WS_FREE_ENCODER_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