структура 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_END_CALLBACK не будет вызываться, пока WS_DECODER_DECODE_CALLBACK не вернет 0 байт.
После завершения работы канала с помощью экземпляра декодера он освободит его через WS_FREE_DECODER_CALLBACK.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows 7 [только классические приложения] |
Минимальная версия сервера | Windows Server 2008 R2 [только классические приложения] |
Верхняя часть | webservices.h |