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_BINDING 与 WS_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 |