Events.h

См. документацию.
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>

SourceForge.net Logo
© Овсеевич Р.В. Документация по CntmLib 1.1.4 от 28 May 2008. Создано системой  doxygen 1.5.3