На главную

On-line справка по Win32 API

Написать письмо
БЕСПЛАТНАЯ ежедневная online лотерея! Выигрывай каждый день БЕСПЛАТНО!
Список всех статей A-B-C-D-E-F-G-H-I-J-K-L-M-N-O-P-Q-R-S-T-U-V-W-X-Y-Z | Скачать Вниз

Advise Transaction



A client application can use the DDEML to establish one or more links to items in a server application. When such a link has been established, the server sends periodic updates about the linked item to the client (typically, whenever the value of the item associated with the server application changes). Linking establishes an advise loop between the two applications that remains in place until the client ends it.

There are two kinds of advise loops: "hot" and "warm." In a hot advise loop, the server immediately sends a data handle that identifies the changed value. In a warm advise loop, the server notifies the client that the value of the item has changed but does not send the data handle until the client requests it.
A client can request a hot advise loop with a server by specifying the XTYP_ADVSTART transaction type in a call to DdeClientTransaction. To request a warm advise loop, the client must combine the XTYPF_NODATA flag with the XTYP_ADVSTART transaction type. In either event, the DDEML passes the XTYP_ADVSTART transaction to the server's DDE callback function. The server's DDE callback function should examine the parameters that accompany the XTYP_ADVSTART transaction (including the requested format, topic name, and item name) and then return TRUE to allow the advise loop or FALSE to deny it.

After an advise loop has been established, the server application should call the DdePostAdvise function whenever the value of the item associated with the requested item name changes. This call results in an XTYP_ADVREQ transaction being sent to the server's own DDE callback function. The server's DDE callback function should return a data handle that identifies the new value of the data item. The DDEML then notifies the client that the specified item has changed by sending the XTYP_ADVDATA transaction to the client's DDE callback function.

If the client requested a hot advise loop, the DDEML passes the data handle for the changed item to the client during the XTYP_ADVDATA transaction. Otherwise, the client can send an XTYP_REQUEST transaction to obtain the data handle.
It is possible for a server to send updates faster than a client can process the new data. The speed of updates can be a problem for a client that must perform lengthy processing operations on the data. In this case, the client should specify the XTYPF_ACKREQ flag when it requests an advise loop. This flag causes the server to wait for the client to acknowledge that it has received and processed a data item before the server sends the next data item. Advise loops that are established with the XTYPF_ACKREQ flag are more robust with fast servers but may occasionally miss updates. Advise loops established without the XTYPF_ACKREQ flag are guaranteed not to miss updates as long as the client keeps up with the server.

A client can end an advise loop by specifying the XTYP_ADVSTOP transaction type in a call to DdeClientTransaction.
If a server does not support advise loops, it should specify the CBF_FAIL_ADVISES filter flag in the DdeInitialize function. This flag prevents the DDEML from sending the XTYP_ADVSTART and XTYP_ADVSTOP transactions to the server.


Пригласи друзей и счет твоего мобильника всегда будет положительным!
Предыдущая статья
 
Сайт Народ.Ру Интернет
Следующая статья
Пригласи друзей и счет твоего мобильника всегда будет положительным!

Сделка Advise



Приложение клиента может использовать DDEML, чтобы устанавливать одна или более связей в пункты в приложении сервера. Когда такая связь установлена, сервер посылает периодическую коррекцию о связанном пункте клиенту (обычно, всякий раз, когда величина пункта связывалась прикладными изменениями сервера). Связь устанавливает советовать цикл между двумя приложениями, которые остаются на месте пока клиент не закончит это.

Есть два типа советовать циклы: "горячий" и "тепло." В горячем, посоветуйте цикл, сервер немедленно посылает ручку данных, которая идентифицирует измененную величину. В тепле, посоветуйте цикл, сервер уведомляет клиента, что величина о пункте изменил но не посылал ручку данных пока клиент не запросит это.
Клиент может запросить горячий советовать цикл с сервером определяя, что сделка XTYP_ADVSTART заносит вызов на DdeClientTransaction. Чтобы запрашивать тепло, посоветуйте цикл, клиент должен объединить флаг XTYPF_NODATA с типом сделки XTYP_ADVSTART. И в том, и в другом случае, DDEML передает сделку XTYP_ADVSTART в функцию возврата сервера DDE. Функция возврата сервера DDE должна изучать параметры, которые сопровождают сделку XTYP_ADVSTART (включая запрошенный формат, имя темы, и имя пункта) затем возвращают ИСТИНУ, чтобы допускать советовать цикл или ЛОЖЬ, чтобы запрещать это.

После советовать, чтобы цикл установлен, приложение сервера должно называть функцию DdePostAdvise всякий раз, когда величина пункта связывалась изменениями имени запрошенного пункта. Этот вызов заканчивается сделкой XTYP_ADVREQ, посыланной в сервер собственной функции возврата DDE. Функция возврата сервера DDE должна возвращать ручку данных, которая идентифицирует новую величину пункта данных. DDEML Затем уведомляет клиента, что определенный пункт изменил посылая сделку XTYP_ADVDATA в функцию возврата клиента DDE.

Если клиент запрашивал бы горячий советовать цикл, DDEML передает ручку данных для измененного пункта клиенту в течение сделки XTYP_ADVDATA. В противном случае, клиент может послать сделку XTYP_REQUEST, чтобы получать ручку данных.
Возможно для сервера посылать коррекцию быстрее чем клиент может обработать новые данные. Скорость коррекции может быть проблемой для клиента, который должен выполнить длительные операции обработки в данных. В этом случае, клиент должен определить флаг XTYPF_ACKREQ когда он запрашивает советовать цикл. Этот флаг заставляет сервер, чтобы ждать клиента, чтобы признавать, что он получил и обработавшее пункт данных прежде, чем сервер пошлет следующим данным пункт. Посоветуйте циклы, которые установлены флагом XTYPF_ACKREQ более прочные с быстрыми серверами но может случайно пропустить коррекцию. Посоветуйте циклы установленные без флага XTYPF_ACKREQ не гарантированы, чтобы пропускать коррекцию так же долго (длиной) как, которым клиент идет в ногу с сервером.

Клиент может закончить советовать цикл определяя, что сделка XTYP_ADVSTOP заносит вызов на DdeClientTransaction.
Если сервер не поддерживает советовать циклы, это должно определить флаг фильтра CBF_FAIL_ADVISES в функции DdeInitialize. Этот флаг мешает DDEML чтобы посылать XTYP_ADVSTART и сделки XTYP_ADVSTOP в сервер.


Вверх Version 1.3, Oct 26 2010 © 2007, 2010, mrhx Вверх
 mrhx software  Русский перевод OpenGL  Русский перевод Win32 API
 
Используются технологии uCoz