WS_CHANNEL_DECODER結構 (webservices.h)

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

語法

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;

成員

createContext

將傳遞給 WS_CREATE_DECODER_CALLBACK的內容。

createDecoderCallback

建立譯碼器實例 的WS_CREATE_DECODER_CALLBACK 回呼。

decoderGetContentTypeCallback

叫用以取得訊息內容類型的 WS_DECODER_GET_CONTENT_TYPE_CALLBACK 回呼。

decoderStartCallback

在譯碼訊息開始時叫用的 WS_DECODER_START_CALLBACK 回呼。

decoderDecodeCallback

叫用以譯碼訊息 的WS_DECODER_DECODE_CALLBACK 回呼。

decoderEndCallback

在譯碼訊息結束時叫用 的WS_DECODER_END_CALLBACK 回呼。

freeDecoderCallback

釋放譯碼器實例 的WS_FREE_DECODER_CALLBACK 回呼。

備註

WS_CHANNEL可能想要在收到訊息時立即解壓縮、修改或轉換訊息的編碼位元組。 WS_CHANNEL_DECODER提供攔截及執行這些修改的必要勾點。

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

指定的回呼會根據下列文法叫用:


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

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

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

WS_DECODER_DECODE_CALLBACK傳回 0 個字節之前,將不會叫用WS_DECODER_END_CALLBACK

當通道使用譯碼器實例完成時,它會透過 WS_FREE_DECODER_CALLBACK釋放通道。

規格需求

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