Класс EventBase

(PECL event >= 1.2.6-beta)

Введение

Класс EventBase представляет структуру событийной базы libevent. Он содержит набор событий и может их опрашивать для определения, какие из них активны.

Каждая событийная база имеет метод или бекэнд, которые используются для определения готовых событий. Используемые методы: select , poll , epoll , kqueue , devpoll , evport и win32 .

Для настройки событийной базы или для исключения определенных бекэндов можно использовать класс EventConfig.

Внимание

НЕ разрушайте объект EventBase пока не освобождены связанные с Event ресурсы. В противном случае это приведет к непредсказуемым результатам!

Обзор классов

final EventBase {
/* Константы */
const int LOOP_ONCE = 1 ;
const int LOOP_NONBLOCK = 2 ;
const int NOLOCK = 1 ;
const int STARTUP_IOCP = 4 ;
const int NO_CACHE_TIME = 8 ;
const int EPOLL_USE_CHANGELIST = 16 ;
/* Методы */
public __construct ( EventConfig $cfg = ? )
public dispatch ( ) : void
public exit ( float $timeout = ? ) : bool
public free ( ) : void
public getFeatures ( ) : int
public getMethod ( ) : string
public getTimeOfDayCached ( ) : float
public gotExit ( ) : bool
public gotStop ( ) : bool
public loop ( int $flags = ? ) : bool
public priorityInit ( int $n_priorities ) : bool
public reInit ( ) : bool
public stop ( ) : bool
}

Предопределенные константы

EventBase::LOOP_ONCE

Флаг используется с методом EventBase::loop() и означает: "блокировать, пока libevent не получит активное событие, а затем выйти после того, как будут завершены функции обратного вызова для всех активных событий".

EventBase::LOOP_NONBLOCK

Флаг используется с методом EventBase::loop() и означает: "не блокировать: посмотреть, какие события уже готовы, запустить обратные вызовы с наивысшим приоритетом, затем выйти".

EventBase::NOLOCK

Флаг конфигурации. Не выделять блокировку для событийной базы, даже если блокирование настроено.

EventBase::STARTUP_IOCP

Флаг конфигурации только для Windows. Разрешает диспетчер IOCP при старте.

EventBase::NO_CACHE_TIME

Флаг конфигурации. Вместо проверки текущего времени каждый раз, когда цикл готов запустить функцию обратного вызова по таймеру, проверять его после каждого вызова такой функции.

EventBase::EPOLL_USE_CHANGELIST

Если используется бекэнд epoll , этот флаг сообщает, что можно безопасно использовать внутренний код списка изменений Libevent для пакетного добавления и удаления в целях минимизации количества системных вызовов.

Установка этого флага может повысить производительность, но может привести к проявлению бага Linux: не безопасно использовать этот флаг, если любой из файловых дескрипторов был клонирован с помощью dup() или его аналогов. Может привести к странным и трудно диагностируемым ошибкам.

Этот флаг также может быть активирован установкой переменной окружения EVENT_EPOLL_USE_CHANGELIST.

Этот флаг не действует, если вы используете любой бекэнд, кроме epoll .

Содержание

  • EventBase::__construct — Конструктор объекта EventBase
  • EventBase::dispatch — Отправляет ожидающие события
  • EventBase::exit — Прекращает отправку событий
  • EventBase::free — Освобождает ресурсы, выделенные для этой базы событий
  • EventBase::getFeatures — Возвращает битовую маску поддерживаемых функций
  • EventBase::getMethod — Возвращает используемый метод события
  • EventBase::getTimeOfDayCached — Возвращает текущее время базовы событий
  • EventBase::gotExit — Проверяет, был ли цикл обработки событий завершен
  • EventBase::gotStop — Проверяет, был ли цикл обработки событий завершен
  • EventBase::loop — Отправка ожидающих событий
  • EventBase::priorityInit — Устанавливает количество приоритетов на базу событий
  • EventBase::reInit — Повторная инициализация базы событий (после разветвления)
  • EventBase::stop — Сообщает event_base прекратить отправку событий