La classe EventBase
(PECL event >= 1.2.6-beta)
Introduction
La classe EventBase représente la structure de base d'un événement libevent. Elle contient un jeu d'événements et peut vérifier quels sont les événements actifs.
Chaque événement de base a une méthode ou un backend utilisé pour déterminer quels sont les événements prêts. Ces méthodes sont : select, poll, epoll, kqueue, devpoll, evport et win32.
Pour configurer un événement de base à utiliser, ou éviter un backend spécifique, la classe EventConfig peut être utilisée.
Ne détruisez pas l'objet EventBase tant que les ressources associées aux objets Event ne sont pas libérées. Sinon, cela mènera à des résultats totalement indéfinis !
Synopsis de la classe
Constantes pré-définies
-
EventBase::LOOP_ONCE -
Drapeau utilisé avec la méthode EventBase::loop() qui signifie : "blocage tant que libevent a un événement actif, puis, sortie une fois que tous les événements actifs ont exécuté leurs fonctions de rappel".
-
EventBase::LOOP_NONBLOCK -
Drapeau utilisé avec la méthode EventBase::loop() qui signifie : "ne pas bloquer : regarde quels sont les événements prêts actuellement, exécute leurs fonctions de rappel avec une priorité haute, puis, on sort".
-
EventBase::NOLOCK -
Drapeau de configuration. Ne pas verrouiller la base de l'événement, même si un verrouillage avait été mis en place.
-
EventBase::STARTUP_IOCP -
Drapeau de configuration spécifique à Windows. Active le répartiteur IOCP au démarrage.
-
EventBase::NO_CACHE_TIME -
Drapeau de configuration. Au lieu de vérifier le temps courant chaque fois que la boucle d'événement est prête à exécuter la fonction de rappel, le temps sera vérifié a chaque fois que le délai maximal d'attente pour la fonction de rappel sera atteint.
-
EventBase::EPOLL_USE_CHANGELIST -
Si vous utilisez le backend epoll, ce drapeau signifie qu'il est sécurisé d'utiliser le code interne de modification de liste interne à Libevent pour mettre en lot les ajouts et les suppressions afin de tenter de minimiser le plus possible le nombre d'appels système..
Le fait de définir ce drapeau rend le code plus rapide, mais il peut se confronter à un bogue Linux : il n'est pas sécurisé d'utiliser ce drapeau en la présence d'un fds clôné par dup() ou une de ces variantes. Ceci produirait un comportement étrange et très difficile à diagnostiquer.
Ce drapeau peut aussi être activé en définissant la variable d'environnement EVENT_EPOLL_USE_CHANGELIST.
Ce drapeau n'a aucun effet si on l'utlise avec un autre backend que epoll.
Sommaire
- EventBase::__construct — Construit un objet EventBase
- EventBase::dispatch — Distribut les événements en attente
- EventBase::exit — Stoppe la distribution des événements
- EventBase::free — Libère les ressources allouées pour l'événement de base
- EventBase::getFeatures — Retourne un masque des fonctionalités supportées
- EventBase::getMethod — Retourne la méthode d'événement utilisée
- EventBase::getTimeOfDayCached — Retourne le temps de l'événement courant
- EventBase::gotExit — Vérifie s'il a été demandé à la boucle d'événements de sortir
- EventBase::gotStop — Vérifie s'il a été demandé à la boucle d'événements de s'arrêter
- EventBase::loop — Distribue les événements en attente
- EventBase::priorityInit — Défini le nombre de propriétés par événement de base
- EventBase::reInit — Re-initialise l'événement de base (après un fork)
- EventBase::stop — Demande à event_base de stopper la distribution d'événements