(PECL event >= 1.2.6-beta)
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:
Decidimos que queremos gravar alguns dados em uma conexão; coloque esses dados em um buffer.
Aguarde até que a conexão se torne gravável
Escreva o máximo de dados que pudermos
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.
$dns_base
   ,$hostname
   ,$port
   ,$family
     = EventUtil::AF_UNSPEC
   $base
   ,$socket
     = null
   ,$options
     = 0
   ,$readcb
     = null
   ,$writecb
     = null
   ,$eventcb
     = null
   ,$arg
     = null
   $readcb
   ,$writecb
   ,$eventcb
   ,$arg
    = ?$base
   ,$underlying
   ,$ctx
   ,$state
   ,$options
     = 0
   $base
   ,$socket
   ,$ctx
   ,$state
   ,$options
    = ?
       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.
      
A prioridade dos eventos usados para implementar o evento de buffer.
Objeto de buffer de entrada subjacente (EventBuffer).
Objeto de buffer de saída subjacente (EventBuffer).
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
