La classe EventBufferEvent
(PECL event >= 1.2.6-beta)
Introduction
Représente un buffer d'événement Libevent.
Habituellement, une application veut mettre en buffer des données en plus de juste répondre à des événements. Lorsque nous voulons écrire des données, par exemple, le mécanisme habituel ressemble à :
-
On décide que l'on veut écrire des données dans une connexion ; placez ces données dans un buffer.
-
On attend que la connexion devienne accessible en écriture
-
On écrit autant de données que l'on peut
-
On se souvient de la quantité écrite, et si on a encore plus de données à écrire, on attend que la connexion redevienne accessible en écriture.
Ce mécanisme de mise en buffer I/O est suffisament commune pour que Libevent fournisse un mécanisme générique pour cela. Un buffer d'événement consiste en un transport sous-jacent (comme un socket), un buffer de lecture, et un buffer d'écriture. Au lieu d'un événement classique, qui fournit des fonctions de rappel lorsque le transport sous-jacent est prêt à être lu ou écrit, un buffer d'événement appelle ses fonctions de rappel fournis par l'utilisateur lorsqu'il a lu ou écrit suffisament de données.
Synopsis de la classe
$dns_base
,
string
$hostname
,
int
$port
[,
int
$family
= EventUtil::AF_UNSPEC
] )$base
[,
mixed
$socket
= NULL
[,
int
$options
= 0
[,
callable
$readcb
= NULL
[,
callable
$writecb
= NULL
[,
callable
$eventcb
= NULL
]]]]] )$readcb
,
callable
$writecb
,
callable
$eventcb
[,
string
$arg
] )$base
,
EventBufferEvent
$underlying
,
EventSslContext
$ctx
,
int
$state
[,
int
$options
= 0
] )$base
,
mixed
$socket
,
EventSslContext
$ctx
,
int
$state
[,
int
$options
] )Propriétés
- fd
-
Descripteur de fichier numérique associé avec le buffer d'événement. Normalement, représent un socket lié. Vaut
NULLs'il n'y a aucun descripteur de fichier (socket) associé avec le buffer d'événement. - priority
-
La priorité de l'événement, utilisée pour implémenter le buffer d'événement.
- input
-
Objet de buffer d'entrée sous-jacent (EventBuffer)
- output
-
Objet de buffer de sortie sous-jacent (EventBuffer)
Constantes pré-définies
-
EventBufferEvent::READING -
Un événement survient pendant l'opération de lecture sur le bufferevent. Voir les autres drapeaux pour connaître le type d'événement.
-
EventBufferEvent::WRITING -
Un événement survient pendant une opération d'écriture sur le bufferevent. Voir les autres drapeaux pour connaître le type d'événement.
-
EventBufferEvent::EOF -
On récupère une indication de fin de fichier sur le buffer d'événement.
-
EventBufferEvent::ERROR -
Une erreur survient pendant une opération bufferevent. Pour plus d'informations sur l'erreur, appelez la méthode EventUtil::getLastSocketErrno() et/ou EventUtil::getLastSocketError().
-
EventBufferEvent::TIMEOUT -
EventBufferEvent::CONNECTED -
Termine une connexion demandée sur le bufferevent.
-
EventBufferEvent::OPT_CLOSE_ON_FREE -
Lorsque le buffer d'événement est libéré, ferme le transport sous-jacent. Ceci va clôre le socket sous-jacent, libérer le buffer d'événement sous-jacent, etc.
-
EventBufferEvent::OPT_THREADSAFE -
Alloue automatiquement des verrous pour le bufferevent, afin de rendre sécurisé l'utilisation de plusieurs threads.
-
EventBufferEvent::OPT_DEFER_CALLBACKS -
Lorsque ce drapeau est défini, le bufferevent reporte toutes ses fonctions de rappel. Voir » la documentation sur la programmation réseau rapide, portable, non bloquante avec Libevent, le report des fonctions de rappel.
-
EventBufferEvent::OPT_UNLOCK_CALLBACKS -
Par défaut, lorsque le bufferevent est défini pour être sécurisé au niveau des threads, le verrou du buffer d'événement est maintenu, y compris si une fonction de rappel utilisateur est appelée. La définition de cette option permet à Libevent de libérer le verrou du buffer d'événement lorsque la fonction de rappel est appelée.
-
EventBufferEvent::SSL_OPEN -
La négociation SSL se fait
-
EventBufferEvent::SSL_CONNECTING -
SSL effectue actuellement la négociation comme client
-
EventBufferEvent::SSL_ACCEPTING -
SSL effectue actuellement la négociation comme serveur
Sommaire
- EventBufferEvent::close — Ferme le descripteur de fichier associé avec le buffer d'événements courant
- EventBufferEvent::connect — Connecte le descripteur de fichier du tampon d'événement à l'adresse fournie, ou au socket UNIX
- EventBufferEvent::connectHost — Connexion à un hôte
- EventBufferEvent::__construct — Construit un objet EventBufferEvent
- EventBufferEvent::createPair — Crée deux événements de tampon connectés l'un à l'autre
- EventBufferEvent::disable — Désactive les événements de lecture, d'écriture ou des deux sur un événement de tampon
- EventBufferEvent::enable — Active les événements de lecture, d'écriture, ou des deux, sur un événement de tampon
- EventBufferEvent::free — Libère un événement de tampon
- EventBufferEvent::getDnsErrorString — Retourne une chaîne décrivant la dernière erreur DNS
- EventBufferEvent::getEnabled — Retourne un masque d'événements actuellement actifs sur le tampon d'événements
- EventBufferEvent::getInput — Retourne le tampon d'entrée associé avec le tampon d'événements courant
- EventBufferEvent::getOutput — Retourne le tampon de sortie associé avec le tampon d'événement courant
- EventBufferEvent::read — Lit les données du tampon
- EventBufferEvent::readBuffer — Vide le contenu entier du tampon d'entrée et le place dans le tampon
- EventBufferEvent::setCallbacks — Assigne les fonctions de rappel pour la lecture, l'écriture, et les statuts d'événements
- EventBufferEvent::setPriority — Assigne une priorité pour un tampon d'événements
- EventBufferEvent::setTimeouts — Défini le mode lecture et écriture pour le délai d'attente maximal d'un tampon d'événement
- EventBufferEvent::setWatermark — Active la lecture, et/ou l'écriture des filigranes
- EventBufferEvent::sslError — Retourne l'erreur OpenSSL la plus récente rapportée par le tampon d'événement
- EventBufferEvent::sslFilter — Crée un nouveau tampon d'événement SSL, dont les données seront envoyées via un autre tampon d'événement
- EventBufferEvent::sslGetCipherInfo — Retourne une description textuelle d'un cipher
- EventBufferEvent::sslGetCipherName — Retourne le nom du cipher courant pour la connexion SSL
- EventBufferEvent::sslGetCipherVersion — Retourne la version du cipher utilisé pour la connexion SSL courante
- EventBufferEvent::sslGetProtocol — Retourne le nom du protocole utilisé pour la connexion SSL courante
- EventBufferEvent::sslRenegotiate — Demande au tampon d'événement de commencer une renégociation SSL
- EventBufferEvent::sslSocket — Crée un nouveau tampon SSL dont ces données seront envoyées via un socket SSL
- EventBufferEvent::write — Ajoute des données dans un tampon d'événement de sortie
- EventBufferEvent::writeBuffer — Ajoute le contenu entier d'un tampon dans un tampon d'événement de sortie