WS_CHANNEL_ENCODER 結構 (webservices.h)

結構,用來指定一組回呼,這些回呼可以轉換所傳送訊息的內容類型和編碼位元組。

語法

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;

成員

createContext

將傳遞至 WS_CREATE_ENCODER_CALLBACK的內容。

createEncoderCallback

建立編碼器實例 的WS_CREATE_ENCODER_CALLBACK 回呼。

encoderGetContentTypeCallback

要編碼訊息時所叫用 的WS_ENCODER_GET_CONTENT_TYPE_CALLBACK 回呼。

encoderStartCallback

叫用以開始編碼訊息 的WS_ENCODER_START_CALLBACK 回呼。

encoderEncodeCallback

叫用以編碼訊息 的WS_ENCODER_ENCODE_CALLBACK 回呼。

encoderEndCallback

在編碼訊息結尾叫用的 WS_ENCODER_END_CALLBACK 回呼。

freeEncoderCallback

釋放編碼器實例 的WS_FREE_ENCODER_CALLBACK 回呼。

備註

WS_CHANNEL可能會在傳送訊息之前壓縮、修改或轉換訊息的編碼位元組。 WS_CHANNEL_ENCODER提供攔截並執行這些修改的必要勾點。

建立通道時,應該使用適當的函式來設定 WS_CHANNEL_PROPERTY_ENCODER

編碼器回呼的文法如下:


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

如果通道或編碼器在寫入訊息時發生錯誤,編碼器可能不會看到訊息的完整編碼順序。 編碼器必須備妥,才能根據叫用的回呼來處理轉換至適當的狀態。

搭配WS_CHANNEL_TYPE_SESSION使用WS_TCP_CHANNEL_BINDING時,會修正通道的內容類型。 在此情況下, WS_ENCODER_GET_CONTENT_TYPE_CALLBACK 必須針對每個訊息的內容類型傳回完全相同的值。

當通道使用編碼器實例完成時,它會透過 WS_FREE_ENCODER_CALLBACK釋出通道。

規格需求

需求
最低支援的用戶端 Windows 7 [僅限傳統型應用程式]
最低支援的伺服器 Windows Server 2008 R2 [僅限傳統型應用程式]
標頭 webservices.h