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.

Avertissement

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

final EventBase {
/* Constants */
const integer LOOP_ONCE = 1 ;
const integer LOOP_NONBLOCK = 2 ;
const integer NOLOCK = 1 ;
const integer STARTUP_IOCP = 4 ;
const integer NO_CACHE_TIME = 8 ;
const integer EPOLL_USE_CHANGELIST = 16 ;
/* Méthodes */
public __construct ([ EventConfig $cfg ] )
public dispatch ( void ) : void
public exit ([ float $timeout ] ) : bool
public free ( void ) : void
public getFeatures ( void ) : int
public getMethod ( void ) : string
public getTimeOfDayCached ( void ) : float
public gotExit ( void ) : bool
public gotStop ( void ) : bool
public loop ([ int $flags ] ) : bool
public priorityInit ( int $n_priorities ) : bool
public reInit ( void ) : bool
public stop ( void ) : bool
}

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