La clase EventBufferEvent

(PECL event >= 1.2.6-beta)

Introducción

Representa un buffer de eventos Libevent.

Normalmente, una aplicación desea poner en buffer datos además de simplemente responder a eventos. Cuando se desea escribir datos, por ejemplo, el mecanismo habitual se asemeja a:

  1. Se decide que se desea escribir datos en una conexión; coloque estos datos en un buffer.

  2. Se espera a que la conexión se vuelva accesible en escritura.

  3. Se escribe la mayor cantidad de datos posible.

  4. Se recuerda la cantidad escrita, y si aún hay más datos para escribir, se espera a que la conexión vuelva a ser accesible en escritura.

Este mecanismo de bufferización de E/S es lo suficientemente común como para que Libevent proporcione un mecanismo genérico para ello. Un buffer de eventos consta de un transporte subyacente (como un socket), un buffer de lectura y un buffer de escritura. En lugar de un evento clásico, que proporciona funciones de retrollamada cuando el transporte subyacente está listo para ser leído o escrito, un buffer de eventos llama a sus funciones de retrollamada proporcionadas por el usuario cuando ha leído o escrito suficientes datos.

Sinopsis de la Clase

final class EventBufferEvent {
/* Constantes */
const int READING = 1;
const int WRITING = 2;
const int EOF = 16;
const int ERROR = 32;
const int TIMEOUT = 64;
const int CONNECTED = 128;
const int OPT_THREADSAFE = 2;
const int SSL_OPEN = 0;
const int SSL_CONNECTING = 1;
const int SSL_ACCEPTING = 2;
/* Propiedades */
public int $fd;
public int $priority;
public readonly EventBuffer $input;
public readonly EventBuffer $output;
/* Métodos */
public close(): void
public connect( string $addr ): bool
public connectHost(
     EventDnsBase $dns_base ,
     string $hostname ,
     int $port ,
     int $family = EventUtil::AF_UNSPEC
): bool
public __construct(
     EventBase $base ,
     mixed $socket = null ,
     int $options = 0 ,
     callable $readcb = null ,
     callable $writecb = null ,
     callable $eventcb = null ,
    mixed $arg = null
)
public static createPair( EventBase $base , int $options = 0 ): array
public disable( int $events ): bool
public enable( int $events ): bool
public free(): void
public getEnabled(): int
public read( int $size ): string
public readBuffer( EventBuffer $buf ): bool
public setCallbacks(
     callable $readcb ,
     callable $writecb ,
     callable $eventcb ,
     mixed $arg = ?
): void
public setPriority( int $priority ): bool
public setTimeouts( float $timeout_read , float $timeout_write ): bool
public setWatermark( int $events , int $lowmark , int $highmark ): void
public sslError(): string
public static sslFilter(
     EventBase $base ,
     EventBufferEvent $underlying ,
     EventSslContext $ctx ,
     int $state ,
     int $options = 0
): EventBufferEvent
public static sslSocket(
     EventBase $base ,
     mixed $socket ,
     EventSslContext $ctx ,
     int $state ,
     int $options = ?
): EventBufferEvent
public write( string $data ): bool
public writeBuffer( EventBuffer $buf ): bool
}

Propiedades

fd

Descriptor de fichero numérico asociado con el buffer de eventos. Normalmente, representa un socket enlazado. Vale null si no hay ningún descriptor de fichero (socket) asociado con el buffer de eventos.

priority

La prioridad del evento, utilizada para implementar el buffer de eventos.

input

Objeto de buffer de entrada subyacente (EventBuffer)

output

Objeto de buffer de salida subyacente (EventBuffer)

Constantes predefinidas

EventBufferEvent::READING

Un evento ocurre durante la operación de lectura en el bufferevent. Ver otros flags para conocer el tipo de evento.

EventBufferEvent::WRITING

Un evento ocurre durante una operación de escritura en el bufferevent. Ver otros flags para conocer el tipo de evento.

EventBufferEvent::EOF

Se recibe una indicación de fin de fichero en el buffer de eventos.

EventBufferEvent::ERROR

Un error ocurre durante una operación bufferevent. Para más información sobre el error, llame al método EventUtil::getLastSocketErrno() y/o EventUtil::getLastSocketError().

EventBufferEvent::TIMEOUT

EventBufferEvent::CONNECTED

Termina una conexión solicitada en el bufferevent.

EventBufferEvent::OPT_CLOSE_ON_FREE

Cuando el buffer de eventos es liberado, cierra el transporte subyacente. Esto cerrará el socket subyacente, liberará el buffer de eventos subyacente, etc.

EventBufferEvent::OPT_THREADSAFE

Asigna automáticamente bloqueos para el bufferevent, para hacer segura la utilización de múltiples threads.

EventBufferEvent::OPT_DEFER_CALLBACKS

Cuando este flag está definido, el bufferevent pospone todas sus funciones de retrollamada. Ver » la documentación sobre la programación de red rápida, portable, no bloqueante con Libevent, el posponer de las funciones de retrollamada.

EventBufferEvent::OPT_UNLOCK_CALLBACKS

Por omisión, cuando el bufferevent está definido para ser seguro al nivel de los threads, el bloqueo del buffer de eventos es mantenido, incluso si una función de retrollamada de usuario es llamada. La definición de esta opción permite a Libevent liberar el bloqueo del buffer de eventos cuando la función de retrollamada es llamada.

EventBufferEvent::SSL_OPEN

La negociación SSL se realiza.

EventBufferEvent::SSL_CONNECTING

SSL realiza actualmente la negociación como cliente.

EventBufferEvent::SSL_ACCEPTING

SSL realiza actualmente la negociación como servidor.

Tabla de contenidos

add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top