Составители:
Транзакции с обязательным ответом. При установлении подключения с обяза-
тельным ответом сервер не возвращает данные немедленно. Он посылает их только при
последующих изменениях запрашиваемого элемента. В ответ на сообщение
XTYP_ADVSTART сервер часто устанавливает флаг, "напоминающий" ему о том, что
поступил запрос на обновление данных. При любых изменениях сервер проверяет со-
стояние этого флага и, если он установлен, вызывает функцию DdePostAdvise, которая
уведомляет DDEML о поступлении новых данных, интересующих клиента.
Сервер не должен помнить о том, какой из клиентов послал данный запрос, -
DDEML решает эту задачу собственными средствами. По заданным именам темы и эле-
мента, которые передаются сервером для идентификации доступных данных, DDEML
определяет, какой из клиентов "находится на связи" и каким, обязательным или полу-
обязательным, является подключение.
В случае обязательного подключения DDEML немедленно отправляет серверу со-
общение XTYP_ADVREQ, получает от него данные и передает их клиенту в виде сооб-
щения XTYP_ADVDATA.
Этапы этого процесса можно представить следующим обра-
зом (см. рис. 8.2):
1. Инициатором сеанса выступает клиент, а сервер откликается на его запрос, посылая
ответ TRUE.
2. Сервер информирует DDEML о наличии новых данных. DDEML определяет, что
данное подключение является обязательным, и запрашивает данные, а затем переда-
ет их приложению-клиенту. Этот этап повторяется каждый раз при получении сер-
вером новых данных.
3. Клиент разрывает подключение, посылая сообщение XTYP_ADVSTOP,
в ответ на
которое сервер возвращает NULL.
Рис.8.2. Цикл транзакции с обязательным ответом
Транзакции с полуобязательным ответом. В случае подключения с полуобяза-
тельным ответом DDEML также получает от сервера уведомление об изменении дан-
ных, но не отправляет ему сообщения с запросом данных. Вместо этого DDEML посы-
лает клиенту сообщение XTYP_ADVDATA
с пустым дескриптором блока данных.
206
Транзакции с обязательным ответом. При установлении подключения с обяза- тельным ответом сервер не возвращает данные немедленно. Он посылает их только при последующих изменениях запрашиваемого элемента. В ответ на сообщение XTYP_ADVSTART сервер часто устанавливает флаг, "напоминающий" ему о том, что поступил запрос на обновление данных. При любых изменениях сервер проверяет со- стояние этого флага и, если он установлен, вызывает функцию DdePostAdvise, которая уведомляет DDEML о поступлении новых данных, интересующих клиента. Сервер не должен помнить о том, какой из клиентов послал данный запрос, - DDEML решает эту задачу собственными средствами. По заданным именам темы и эле- мента, которые передаются сервером для идентификации доступных данных, DDEML определяет, какой из клиентов "находится на связи" и каким, обязательным или полу- обязательным, является подключение. В случае обязательного подключения DDEML немедленно отправляет серверу со- общение XTYP_ADVREQ, получает от него данные и передает их клиенту в виде сооб- щения XTYP_ADVDATA. Этапы этого процесса можно представить следующим обра- зом (см. рис. 8.2): 1. Инициатором сеанса выступает клиент, а сервер откликается на его запрос, посылая ответ TRUE. 2. Сервер информирует DDEML о наличии новых данных. DDEML определяет, что данное подключение является обязательным, и запрашивает данные, а затем переда- ет их приложению-клиенту. Этот этап повторяется каждый раз при получении сер- вером новых данных. 3. Клиент разрывает подключение, посылая сообщение XTYP_ADVSTOP, в ответ на которое сервер возвращает NULL. Рис.8.2. Цикл транзакции с обязательным ответом Транзакции с полуобязательным ответом. В случае подключения с полуобяза- тельным ответом DDEML также получает от сервера уведомление об изменении дан- ных, но не отправляет ему сообщения с запросом данных. Вместо этого DDEML посы- лает клиенту сообщение XTYP_ADVDATA с пустым дескриптором блока данных. 206
Страницы
- « первая
- ‹ предыдущая
- …
- 202
- 203
- 204
- 205
- 206
- …
- следующая ›
- последняя »