Книга: Мир InterBase. Архитектура, администрирование и разработка приложений баз данных в InterBase/FireBird/Yaffil
Расширение механизма событий
Расширение механизма событий
Механизм оповещения о событиях (event alerters) является способом асинхронной передачи информации с сервера клиенту. Для этого клиент регистрирует свой интерес в конкретных именованных событиях и переходит в режим ожидания оповещений от сервера, который посылает ему их с помощью команды POST_EVENT, доступной в хранимых процедурах и триггерах. События посылаются сервером не сразу, а в момент подтверждения транзакции. При этом каждое событие имеет внутренний счетчик инициации, т. е. если в течение транзакции команда POST_EVENT для данного события была вызвана несколько раз, то клиенту будет доставлено оповещение только однажды, но его счетчик будет содержать количество инициации. Для работы с событиями на клиентской стороне используются следующие функции API: isc_event_block, isc_que_events, isc_wait_for_ event и isc_event_counts.
Ho полному использованию этого механизма мешала фиксация имени события, т. е. клиент всегда должен ожидать событие с точно таким именем, которое инициирует сервер, а также невозможность передать параметры вместе с событием. В новой версии Firebird механизм событий был расширен возможностью обработки так называемых параметризованных событий, когда каждое инициируемое событие может иметь аргумент, который будет передан на клиентскую сторону вместе с событием. Тогда сервер может инициировать событие следующим образом (например, в триггере):
POST_EVENT 'MY_EVENT', NEW.OPER_TYPE || '_ID=' | CAST(NEW.ID AS VARCHAR(IO));
Для получения списка аргументов событий с их собственными счетчиками инициации была введена новая функция API: isc_event_params.
Такая возможность позволяет максимально гибко реализовать "интеллектуальное" обновление данных в клиентском приложении, внешнюю репликацию и ряд других задач.
- Глава 5. Хроника предшествующих событий
- 14. Обработка событий
- 4.3.4. Преобрaзовaние событий и задач друг в друга
- 17.3. Вызов обработчиков событий
- 1 Расширение Блендера с помощью Питона
- Обработка событий, возникающих в кнопках
- ПРИЛОЖЕНИЕ И. РАСШИРЕНИЕ ЯЗЫКА СИ
- 17.2. Регистрация обработчиков событий
- Раздел VII Левиафан в Сети: защита права на тайну частной жизни после событий 2013 г.
- Рекомендуемое расширение для файлов баз данных - *.ib
- 24.1. Расширение возможностей Панели задач
- 8.8.11. Мероприятие 12: Раскрытие информации о механизмах агрессивного налогового планирования