(PECL event >= 1.2.6-beta)
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 !
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
.