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 de buffer" consiste num transporte subjacente (como um soquete), um buffer de leitura e um buffer de escrita. Em vez de eventos regulares, que fornecem funções de retorno quando o transporte subjacente está pronto para ser lido ou escrito, um evento de buffer invoca suas funções de retorno fornecidas pelo usuário quando tiver lido ou gravado 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 soquete vinculado. É igual a null, se não houver arquivo descritor (soquete) associado ao evento de buffer.

priority

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

input

Objeto de buffer de entrada subjacente (EventBuffer).

output

Objeto de buffer de saída subjacente (EventBuffer).

Constantes predefinidas

EventBufferEvent::READING

Ocorreu um evento durante uma operação de leitura no evento de buffer. Veja outras opções para descobrir que evento foi esse.

EventBufferEvent::WRITING

Ocorreu um evento durante uma operação de gravação no evento de buffer. Veja outras opções para descobrir que evento foi esse.

EventBufferEvent::EOF

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

EventBufferEvent::ERROR

Ocorreu um erro durante uma operação evento de buffer. 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 evento de buffer.

EventBufferEvent::OPT_CLOSE_ON_FREE

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

EventBufferEvent::OPT_THREADSAFE

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

EventBufferEvent::OPT_DEFER_CALLBACKS

Quando essa opção estiver definida, o evento de buffer adia todas as suas funções de retorno. Veja » Rápida programação de rede portátil sem bloqueio com Libevent, funções de retorno diferidas .

EventBufferEvent::OPT_UNLOCK_CALLBACKS

Por padrão, quando o evento de buffer está configurado para ser seguro para threads, o buffer dos bloqueios do evento são cancelados sempre que qualquer função de retorno fornecida pelo usuário for invocada. Definir esta opção faz com que o Libevent libere o buffer de bloqueio do evento quando ele estiver invocando as funções de retorno.

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

Índice

adicione uma nota

Notas Enviadas por Usuários (em inglês)

Não há notas de usuários para esta página.
To Top