webservices.h) (WS_CHANNEL_ENCODER 结构
一个 结构,用于指定一组回调,这些回调可以转换已发送消息的内容类型和编码字节。
语法
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_TCP_CHANNEL_BINDING 与 WS_CHANNEL_TYPE_SESSION 一起使用时,通道的内容类型是固定的。 在这种情况下, WS_ENCODER_GET_CONTENT_TYPE_CALLBACK 必须为每个消息的内容类型返回完全相同的值。
当通道使用完编码器实例后,它将通过 WS_FREE_ENCODER_CALLBACK释放它。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows 7 [仅限桌面应用] |
最低受支持的服务器 | Windows Server 2008 R2 [仅限桌面应用] |
标头 | webservices.h |