Операционные системы. Учебное пособие. Марапулец Ю.В. - 204 стр.

UptoLike

Составители: 

Транзакции с обязательным ответом. При установлении подключения с обяза-
тельным ответом сервер не возвращает данные немедленно. Он посылает их только при
последующих изменениях запрашиваемого элемента. В ответ на сообщение
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