Составители:
Рубрика:
собом [2]. Клиент, который хочет передать данные серверу, должен выполнить
принудительную транзакцию – послать сообщение XTYP_POKE.
В ответ на это сообщение сервер проверяет тему и элемент данных и при же-
лании читает объект данных.
Некоторые серверы также получают команды от своих клиентов, прини-
мая их в виде дескрипторов данных. Сервер блокирует объект, анализирует
содержащуюся в нем командную строку, а затем выполняет определенные
действия. После анализа командной строки сервер должен освободить деск-
риптор данных, но при необходимости он может скопировать эту строку для
дальнейшего использования. Поскольку клиенты обычно ожидают немедлен-
ного выполнения команд и требуют подтверждения, сервер по возможности
должен выполнить команду из функции обратного вызова до того, как будет
возвращен результат.
В ответ на принудительную или командную транзакцию сервер возвраща-
ет одно из трех значений:
DDE PACK – данные получены и подтверждены;
DDE FBUSY – сервер занят и не может обработать данные или инструк-
ции, повторите попытку позже;
DDE_FNOTPROCESSED – данные или инструкции отклонены.
Флаги, установленные в функции DdeInitialize(), позволяют отфильтровы-
вать нежелательные сообщения о принудительных (флаг CBF_FAIL_POKES)
или командных (флаг CBF_FAIL_EXECUTES) транзакциях для серверов, не
поддерживающих эти транзакции [2].
9.4. Завершение DDE - диалога
При необходимости прекратить DDE-диалог клиент или сервер вызыва-
ют либо функцию DdeDisconnect() – завершить указанный диалог, либо функ-
цию DdeDisconnectList() – завершить группу диалогов. В обоих случаях кон-
кретному приложению или всем приложениям передается сообщение
XTYP_DISCONNECT. Синтаксис вызова функции DdeDisconpect() имеет сле-
дующий вид:
DdeDisconnect( hConv ), где параметр hConv представляет собой дескрип-
тор диалога, возвращаемый функцией DdeConnect().
Функция DdeDisconnectList() вызывается следующим образом:
DdeDisconnectList( hConvList), где параметр hConvList представляет собой
дескриптор, возвращаемый функцией DdeConnectList().
Когда DDEML получает сообщение XTYP_DISCONNECT,
все активные в
данный момент транзакции текущего диалога (или диалогов) прекращаются.
Согласно договоренности, диалоги могут завершаться только приложениями-
клиентами. Однако при особых обстоятельствах подключения могут разрывать-
ся и приложениями-серверами (например, в случае их закрытия).
Как клиенты, так и серверы должны быть готовы в любой момент полу-
125
собом [2]. Клиент, который хочет передать данные серверу, должен выполнить
принудительную транзакцию – послать сообщение XTYP_POKE.
В ответ на это сообщение сервер проверяет тему и элемент данных и при же-
лании читает объект данных.
Некоторые серверы также получают команды от своих клиентов, прини-
мая их в виде дескрипторов данных. Сервер блокирует объект, анализирует
содержащуюся в нем командную строку, а затем выполняет определенные
действия. После анализа командной строки сервер должен освободить деск-
риптор данных, но при необходимости он может скопировать эту строку для
дальнейшего использования. Поскольку клиенты обычно ожидают немедлен-
ного выполнения команд и требуют подтверждения, сервер по возможности
должен выполнить команду из функции обратного вызова до того, как будет
возвращен результат.
В ответ на принудительную или командную транзакцию сервер возвраща-
ет одно из трех значений:
DDE PACK – данные получены и подтверждены;
DDE FBUSY – сервер занят и не может обработать данные или инструк-
ции, повторите попытку позже;
DDE_FNOTPROCESSED – данные или инструкции отклонены.
Флаги, установленные в функции DdeInitialize(), позволяют отфильтровы-
вать нежелательные сообщения о принудительных (флаг CBF_FAIL_POKES)
или командных (флаг CBF_FAIL_EXECUTES) транзакциях для серверов, не
поддерживающих эти транзакции [2].
9.4. Завершение DDE - диалога
При необходимости прекратить DDE-диалог клиент или сервер вызыва-
ют либо функцию DdeDisconnect() – завершить указанный диалог, либо функ-
цию DdeDisconnectList() – завершить группу диалогов. В обоих случаях кон-
кретному приложению или всем приложениям передается сообщение
XTYP_DISCONNECT. Синтаксис вызова функции DdeDisconpect() имеет сле-
дующий вид:
DdeDisconnect( hConv ), где параметр hConv представляет собой дескрип-
тор диалога, возвращаемый функцией DdeConnect().
Функция DdeDisconnectList() вызывается следующим образом:
DdeDisconnectList( hConvList), где параметр hConvList представляет собой
дескриптор, возвращаемый функцией DdeConnectList().
Когда DDEML получает сообщение XTYP_DISCONNECT, все активные в
данный момент транзакции текущего диалога (или диалогов) прекращаются.
Согласно договоренности, диалоги могут завершаться только приложениями-
клиентами. Однако при особых обстоятельствах подключения могут разрывать-
ся и приложениями-серверами (например, в случае их закрытия).
Как клиенты, так и серверы должны быть готовы в любой момент полу-
125
Страницы
- « первая
- ‹ предыдущая
- …
- 123
- 124
- 125
- 126
- 127
- …
- следующая ›
- последняя »
