Класс Ev Ev
&reftitle.intro; Класс EV — статический класс, который обеспечивает доступ к циклу по умолчанию и некоторым общим операциям.
&reftitle.classsynopsis; Ev final Ev &Constants; const int Ev::FLAG_AUTO 0 const int Ev::FLAG_NOENV 16777216 const int Ev::FLAG_FORKCHECK 33554432 const int Ev::FLAG_NOINOTIFY 1048576 const int Ev::FLAG_SIGNALFD 2097152 const int Ev::FLAG_NOSIGMASK 4194304 const int Ev::RUN_NOWAIT 1 const int Ev::RUN_ONCE 2 const int Ev::BREAK_CANCEL 0 const int Ev::BREAK_ONE 1 const int Ev::BREAK_ALL 2 const int Ev::MINPRI -2 const int Ev::MAXPRI 2 const int Ev::READ 1 const int Ev::WRITE 2 const int Ev::TIMER 256 const int Ev::PERIODIC 512 const int Ev::SIGNAL 1024 const int Ev::CHILD 2048 const int Ev::STAT 4096 const int Ev::IDLE 8192 const int Ev::PREPARE 16384 const int Ev::CHECK 32768 const int Ev::EMBED 65536 const int Ev::CUSTOM 16777216 const int Ev::ERROR 2147483648 const int Ev::BACKEND_SELECT 1 const int Ev::BACKEND_POLL 2 const int Ev::BACKEND_EPOLL 4 const int Ev::BACKEND_KQUEUE 8 const int Ev::BACKEND_DEVPOLL 16 const int Ev::BACKEND_PORT 32 const int Ev::BACKEND_ALL 63 const int Ev::BACKEND_MASK 65535 &Methods;
&reftitle.constants; Флаги, передаваемые при создании цикла: Ev::FLAG_AUTO Задаёт флагам значение по умолчанию. Ev::FLAG_NOENV Если флаг используется (или программа запускает флаг доступа пользователя setuid или флаг доступа группы setgid), то модуль libev не смотрит на переменную окружения LIBEV_FLAGS. Иначе (по умолчанию), если модуль нашёл переменную окружения LIBEV_FLAGS, то он полностью переопределяет флаги. Полезно для тестов производительности и поиска ошибок. Ev::FLAG_FORKCHECK Заставляет модуль libev проверять ветвление в каждой итерации, вместо вызова метода EvLoop::fork вручную. Это работает путём вызова getpid() на каждой итерации цикла, и, таким образом, это может замедлить работу цикла событий с большим количеством итераций цикла, но обычно не сильно. Этот флаг нельзя переопределять или указывать в переменной среды LIBEV_FLAGS. Ev::FLAG_NOINOTIFY Если этот флаг указали, модуль libev не будет пытаться использовать API inotify для своих наблюдателей ev_stat Флаг бывает полезным для сохранения файловых дескрипторов inotify, иначе каждый цикл, который использует наблюдателей ev_stat, будет потреблять один дескриптор inotify. Ev::FLAG_SIGNALFD Если флаг указали, модуль libev будет пытаться использовать API signalfd для своих наблюдателей ev_signal (и ev_child). API передаёт сигналы синхронно, что делает его быстрее и, возможно, даст получить данные из очереди сигналов, а также упрощает обработку сигналов через потоки, поскольку сигналы корректно блокируются в потоках. Signalfd не используется по умолчанию. Ev::FLAG_NOSIGMASK Если указали флаг, модуль libev будет избегать изменения маски сигнала. В частности, это применяется, чтобы перед получением сигнала убедиться, что он разблокирован. Такое поведение полезно для обработки пользовательских сигналов или обработки сигналов только конкретных потоков. Флаги, которые передают в метод Ev::run или метод EvLoop::run Ev::RUN_NOWAIT Означает, что цикл событий будет искать и обрабатывать новые события, а также любые ожидающие выполнения события из них, но не будет ждать и блокировать процесс в случае, если не было никаких событий и завершится после одной итерации цикла. Это иногда полезно для опроса и обработки новых событий во время выполнения длительных вычислений, сохраняя при этом возможность взаимодействия с программой. Ev::RUN_ONCE Означает, что цикл событий будет искать новые события (ожидая, если потребуется) и обрабатывать эти и любые уже ожидающие события из них. Цикл событий будет блокировать процесс, пока не поступит хотя бы одно новое событие (им может оказаться внутреннее событие модуля libev, поэтому нет никакой гарантии, что будет вызвана заданная callback-функция) и завершится после одной итерации цикла. Флаги, которые передают в метод Ev::stop или метод EvLoop::stop Ev::BREAK_CANCEL Отмена операции прерывания. Ev::BREAK_ONE Возвращает самый глубокий запрос метода Ev::run (или метода EvLoop::run). Ev::BREAK_ALL Завершает все вложенные вызовы метода Ev::run (или метода EvLoop::run). Приоритеты наблюдателей: Ev::MINPRI Минимально допустимый приоритет наблюдателя. Ev::MAXPRI Максимально допустимый приоритет наблюдателя. Битовые маски (полученных) событий: Ev::READ Дескриптор файла в наблюдателе EvIo доступен для чтения. Ev::WRITE Дескриптор файла в наблюдателе EvIo доступен для записи. Ev::TIMER EvTimer наблюдает за превышением лимита времени. Ev::PERIODIC EvPeriodic наблюдает за превышением лимита времени. Ev::SIGNAL Сигнал, который указали в методе EvSignal::__construct, получен. Ev::CHILD Идентификатор pid, который указали в методе EvChild::__construct, получил изменение статуса. Ev::STAT Путь, который указали в наблюдателе EvStat, поменял свои атрибуты. Ev::IDLE Наблюдатель EvIdle работает, когда остальные наблюдатели ничего не делают. Ev::PREPARE Все наблюдатели EvPrepare вызываются непосредственно перед запуском метода Ev::run. Поэтому наблюдатели EvPrepare — последние наблюдатели, которые вызываются перед тем, как цикл событий переходит в режим сна или опрашивает новые события. Ev::CHECK Все наблюдатели EvCheck помещаются в очередь сразу после того, как метод Ev::run собрал новые события, но до того, как они вызовут какую-либо callback-функцию для полученных событий. Поэтому наблюдатели EvCheck будут вызваны раньше, чем любые другие наблюдатели с таким же либо более низким приоритетом в этой итерации цикла событий. Ev::EMBED Встроенный цикл событий, который задали в наблюдателе EvEmbed, требует к себе внимания. Ev::CUSTOM Никогда не посылается (или иным образом используется) библиотекой libev самостоятельно, но может свободно использоваться пользователями libev для сигнализирующих наблюдателей (т. е. через метод EvWatcher::feed ). Ev::ERROR Произошла неизвестная ошибка и наблюдатель будет остановлен. Ошибка могла произойти из-за некорректного запуска наблюдателя, потому что модулю libev не хватило памяти, дескриптор файла оказался закрытым или возникла другая проблема. Модуль Libev считает такие ошибки ошибками приложения. Дополнительные сведения даёт раздел Анатомия наблюдателей Флаги бэкенда: Ev::BACKEND_SELECT выбор бэкенда — select(2) Ev::BACKEND_POLL опрос бэкенда — poll(2) Ev::BACKEND_EPOLL Специфичный для Linux бэкенд epoll(7) для ядер до и после 2.6.9 Ev::BACKEND_KQUEUE kqueue — бэкенд большинства BSD-систем. Наблюдатель EvEmbed можно использовать для вставки одного цикла (с бэкендом kqueue) в другой. Например, можно попытаться создать цикл событий с бэкендом kqueue и использовать его только для сокетов. Ev::BACKEND_DEVPOLL Бэкенд Solaris 8. Пока не реализовали. Ev::BACKEND_PORT Механизм порта событий с хорошим масштабированием в Solaris 10. Ev::BACKEND_ALL Пробовать все бэкенды (кроме испорченных). Не рекомендуется использовать напрямую. Тут необходимо использовать побитовые операции (т. е. Ev::BACKEND_ALL & ~ Ev::BACKEND_KQUEUE). Вызывать метод Ev::recommendedBackends, или не задавать никакого бэкенда. Ev::BACKEND_MASK Не бэкенд, но маска для выбора всех битов бэкендов из значения flags, чтобы исключить какие-либо бэкенды (т. е. когда модифицируется переменная окружения LIBEV_FLAGS). Для цикла по умолчанию во время фазы инициализации модуля Ev регистрируется вызов >ev_loop_fork через pthread_atfork (если такой имеется). Есть методы, которые разрешают получить доступ к циклу событий по умолчанию в классе Ev (например, методы Ev::iteration, Ev::depth и т. д.). Для пользовательских циклов (которые создали методом EvLoop::__construct) эти значения могут быть доступны через соответствующие свойства и методы класса EvLoop. Экземпляр цикла событий по умолчанию можно извлечь методом EvLoop::defaultLoop.
&reference.ev.entities.ev;