00001 /* 00002 * CntmLib - Подсчет ссылок, потоки, синхронизация, асинхронные процедуры, события 00003 * Copyright (c) 2005, Овсеевич Роман, CntmLib@mail.ru 00004 * _______________________________________________________________________________ 00005 * Разрешено свободное использование, копирование, распространение, изменение 00006 * (изменение сведений об авторских правах запрещено). Запрещена продажа и 00007 * включение всей библиотеки или ее частей в другие библиотеки. В сведениях об 00008 * авторских правах на программу (или сведениях о программе, об авторах, 00009 * использованных средствах разработки и т.д.) должна быть указана информация 00010 * о библиотеке CntmLib, ее авторе и, возможно, сайте или email'е. 00011 * Библиотека поставляется "как есть", без каких-либо гарантий со стороны автора. 00012 */ 00013 00014 /** 00015 * \defgroup Events Cntm.Events 00016 * События - это механизм с помощью которого объект сервера оповещает объекты клиентов о наступлении какого либо события, связанного с сервером, например изменение состояния объекта сервера. Сервер ничего не знает о клиентах, он просто предоставляет точку подключения обработчиков. Подключением и отключением обработчиков управляют клиенты. 00017 * 00018 * Переходя к конкретной реализации механизма событий, скажем, что событием является объект, принадлежащий серверу, к которому подключаются обработчики. Обработчик представляет из себя произвольный метод объекта клиента, который подключается к событию с помощью специального объекта связи. 00019 * 00020 * Существуют два типа событий: прямые - Cntm::DirectEvent и отложенные - Cntm::DeferEvent. При использовании прямых событий запуск обработчиков происходит в момент генерации события. Но наибольший интерес представляют отложенные события, запуск обработчиков которых происходит не в момент генерации, а после завершения алгоритма, сгенерировавшего событие. Отложенные события являются мощным инструментом изоляции сервера от действий клиентов, которые они выполняют в своих обработчиках. Детальное описание отложенных и прямых событий приведено в Cntm::DeferEvent и Cntm::DirectEvent соответственно. 00021 * 00022 * Для подключения обработчика к событию используется специальный объект связи - Cntm::EventLink. При создании связи указывается событие и обработчик, и задача связи состоит в том, чтобы подключить обработчик к событию. При разрушении связи происходит автоматическое отключение обработчика от события. Иногда удобно группировать подключения обработчиков к событиям. Для этого используется Cntm::EventLinksGroup. Создается один единственный объект группы, содержащий несколько связей, при его уничтожении происходит автоматическое отключение всех обработчиков, входящих в группу. 00023 * 00024 * В событиях используется механизм подсчета ссылок, а в отложенных событиях - механизмы синхронизации. 00025 */ 00026 00027 #include <Cntm/Events/DeferEvent.h> 00028 #include <Cntm/Events/DirectEvent.h> 00029 #include <Cntm/Events/EventLink.h> 00030 #include <Cntm/Events/EventLinksGroup.h>
© Овсеевич Р.В. Документация по CntmLib 1.1.4 от 28 May 2008. Создано системой 1.5.3 |