Сервер ничего не знает о клиентах, он просто предоставляет точку подключения обработчиков. Подключением и отключением обработчиков управляют клиенты.
Переходя к конкретной реализации механизма событий, скажем, что событием является объект, принадлежащий серверу, к которому подключаются обработчики. Обработчик представляет из себя произвольный метод объекта клиента, который подключается к событию с помощью специального объекта связи.
Существуют два типа событий: прямые - Cntm::DirectEvent и отложенные - Cntm::DeferEvent. При использовании прямых событий запуск обработчиков происходит в момент генерации события. Но наибольший интерес представляют отложенные события, запуск обработчиков которых происходит не в момент генерации, а после завершения алгоритма, сгенерировавшего событие. Отложенные события являются мощным инструментом изоляции сервера от действий клиентов, которые они выполняют в своих обработчиках. Детальное описание отложенных и прямых событий приведено в Cntm::DeferEvent и Cntm::DirectEvent соответственно.
Для подключения обработчика к событию используется специальный объект связи - Cntm::EventLink. При создании связи указывается событие и обработчик, и задача связи состоит в том, чтобы подключить обработчик к событию. При разрушении связи происходит автоматическое отключение обработчика от события. Иногда удобно группировать подключения обработчиков к событиям. Для этого используется Cntm::EventLinksGroup. Создается один единственный объект группы, содержащий несколько связей, при его уничтожении происходит автоматическое отключение всех обработчиков, входящих в группу.
В событиях используется механизм подсчета ссылок, а в отложенных событиях - механизмы синхронизации.
Классы | |
class | Cntm::DeferEvent< SignatureT > |
Шаблонный класс отложенного синхронного (сериализованного) события. Подробнее... | |
class | Cntm::DirectEvent< SignatureT > |
Шаблонный класс обычного (прямого) события. Подробнее... | |
class | Cntm::EventLink |
Класс связи между событием и обработчиком. Подробнее... | |
class | Cntm::EventLinksGroup |
Класс группы связей между событием и обработчиком. Подробнее... |
© Овсеевич Р.В. Документация по CntmLib 1.1.4 от 28 May 2008. Создано системой 1.5.3 |