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_TCP_CHANNEL_BINDINGWS_CHANNEL_TYPE_SESSION 一起使用时,通道的内容类型是固定的。 在这种情况下, 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