A classe EventBufferEvent

(PECL event >= 1.2.6-beta)

Introdução

Representa o evento buffer do Libevent.

Normalmente, uma aplicação deseja realizar uma certa quantidade de buffer de dados além de apenas responder aos eventos. Quando queremos escrever dados, por por exemplo, o padrão usual se parece com:

  1. Decidimos que queremos gravar alguns dados em uma conexão; coloque esses dados em um buffer.

  2. Aguarde até que a conexão se torne gravável

  3. Escreva o máximo de dados que pudermos

  4. Lembre-se de quanto escrevemos e se ainda tivermos mais dados para escrever, espere que a conexão se torne gravável novamente.

Este padrão de E/S em buffer é comum o suficiente para que o Libevent forneça um mecanismo genérico para isso. Um "evento buffer" consiste num evento subjacente transporte (como um socket), um buffer de leitura e um buffer de gravação. Em vez de eventos regulares, que fornecem retornos de chamada quando o transporte subjacente está pronto para ser lido ou escrito, um evento buffer invoca seu evento fornecido pelo usuário pelos retornos de chamada quando leu ou gravou dados suficientes.

Resumo da classe

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;
/* Propriedades */
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
}

Propriedades

fd

Descritor de arquivo numérico associado ao evento de buffer. Normalmente representa um socket vinculado. É igual a null, se não houver arquivo descritor (socket) associado ao evento buffer.

priority

A prioridade dos eventos usados ​​para implementar o evento buffer.

input

Objeto de buffer de entrada subjacente( EventBuffer )

output

Objeto de buffer de saída subjacente( EventBuffer )

Constantes pré-definidas

EventBufferEvent::READING

Ocorreu um evento durante uma operação de leitura no bufferevent. Veja outras opções para qual evento foi.

EventBufferEvent::WRITING

Ocorreu um evento durante uma operação de gravação no bufferevent. Veja outras opções para qual evento foi.

EventBufferEvent::EOF

Obteve uma indicação de fim de arquivo no evento buffer.

EventBufferEvent::ERROR

Ocorreu um erro durante uma operação bufferevent. Para informações sobre qual foi o maior erro, chame EventUtil::getLastSocketErrno() e/ou EventUtil::getLastSocketError() .

EventBufferEvent::TIMEOUT

EventBufferEvent::CONNECTED

Concluiu uma conexão solicitada no bufferevent.

EventBufferEvent::OPT_CLOSE_ON_FREE

Quando o evento buffer for liberado, fecha o transporte subjacente. Esse fechará um socket subjacente, liberará um evento de buffer subjacente, etc.

EventBufferEvent::OPT_THREADSAFE

Alocar bloqueios automaticamente para o bufferevent, para que seja seguro usar em vários threads.

EventBufferEvent::OPT_DEFER_CALLBACKS

Quando essa opção estiver definida, o bufferevent adia todos os seus retornos de chamada. Veja » Rápida programação de rede portátil sem bloqueio com Libevent, retornos de chamada diferidos .

EventBufferEvent::OPT_UNLOCK_CALLBACKS

Por padrão, quando o bufferevent está configurado para ser threadsafe, o buffer dos bloqueios do evento são cancelados sempre que qualquer retorno de chamada fornecido pelo usuário for invocado. Definir esta opção faz com que o Libevent libere o buffer de bloqueio do evento quando ele estiver invocando os retornos de chamada.

EventBufferEvent::SSL_OPEN

O handshake SSL está concluído

EventBufferEvent::SSL_CONNECTING

SSL está atualmente realizando negociações como um cliente

EventBufferEvent::SSL_ACCEPTING

SSL está atualmente realizando negociações como um servidor

Table of Contents