Event EventBufferEvent 클래스

(PECL event >= 1.2.6-beta)


소개

Libevent의 버퍼 이벤트를 나타냅니다.

일반적으로 응용 프로그램은 이벤트에 응답하는 것 외에도 일정량의 데이터 버퍼링을 수행하려고 합니다. 예를 들어 데이터를 쓰고 싶을 때 일반적인 패턴은 다음과 같습니다.

  1. 연결에 일부 데이터를 쓸 것인지 결정하십시오. 그 데이터를 버퍼에 넣습니다.
  2. 연결이 쓰기 가능해질 때까지 기다립니다.
  3. 우리가 할 수 있는 한 많은 데이터를 씁니다.
  4. 얼마나 썼는지 기억하고, 아직 쓸 데이터가 더 있으면 연결이 다시 쓰기 가능해질 때까지 기다리십시오.

이 버퍼링된 I/O 패턴은 Libevent가 이에 대한 일반 메커니즘을 제공할 만큼 충분히 일반적입니다. "버퍼 이벤트"는 기본 전송(예: 소켓), 읽기 버퍼 및 쓰기 버퍼로 구성됩니다. 기본 전송을 읽거나 쓸 준비가 되었을 때 콜백을 제공하는 일반 이벤트 대신 버퍼 이벤트는 충분한 데이터를 읽거나 쓸 때 사용자 제공 콜백을 호출합니다.


클래스 개요

                  
final class EventBufferEvent {

  /* Constants */
  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_CLOSE_ON_FREE = 1;
  const int OPT_THREADSAFE = 2;
  const int OPT_DEFER_CALLBACKS = 4;
  const int OPT_UNLOCK_CALLBACKS = 8;
  const int SSL_OPEN = 0;
  const int SSL_CONNECTING = 1;
  const int SSL_ACCEPTING = 2;

  /* Properties */
  public int $fd;
  public int $priority;
  public readonly EventBuffer $input;
  public readonly EventBuffer $output;

  /* Methods */
  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 getDnsErrorString(): string
  public getEnabled(): int
  public getInput(): EventBuffer
  public getOutput(): EventBuffer
  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 sslGetCipherInfo(): string
  public sslGetCipherName(): string
  public sslGetCipherVersion(): string
  public sslGetProtocol(): string
  public sslRenegotiate(): void
  public static sslSocket(
       EventBase $base ,
       mixed $socket ,
       EventSslContext $ctx ,
       int $state ,
       int $options = ?
  ): EventBufferEvent
  public write( string $data ): bool
  public writeBuffer( EventBuffer $buf ): bool
}
                  
                

Properties

fd
버퍼 이벤트와 관련된 숫자 파일 설명자. 일반적으로 바인딩된 소켓을 나타냅니다. 버퍼 이벤트와 연결된 파일 설명자(소켓)가 없는 경우 null과 같습니다.
priority
버퍼 이벤트를 구현하는 데 사용되는 이벤트의 우선 순위입니다.
input
기본 입력 버퍼 객체( EventBuffer )
output
기본 출력 버퍼 객체( EventBuffer )

미리 정의된 상수

EventBufferEvent::READING
bufferevent에 대한 읽기 작업 중에 이벤트가 발생했습니다. 어떤 이벤트에 대한 다른 플래그를 참조하십시오.
EventBufferEvent::WRITING
버퍼 이벤트에 대한 쓰기 작업 중에 이벤트가 발생했습니다. 어떤 이벤트에 대한 다른 플래그를 참조하십시오.
EventBufferEvent::EOF
버퍼 이벤트에 대한 파일 끝 표시가 있습니다.
EventBufferEvent::ERROR
버퍼 이벤트 작업 중에 오류가 발생했습니다. 오류에 대한 자세한 내용은 EventUtil::getLastSocketErrno() 및/또는 EventUtil::getLastSocketError() 를 호출하십시오.
EventBufferEvent::TIMEOUT
EventBufferEvent::CONNECTED
버퍼 이벤트에서 요청된 연결을 완료했습니다.
EventBufferEvent::OPT_CLOSE_ON_FREE
버퍼 이벤트가 해제되면 기본 전송을 닫습니다. 이것은 기본 소켓을 닫고 기본 버퍼 이벤트를 해제하는 등의 작업을 수행합니다.
EventBufferEvent::OPT_THREADSAFE
여러 스레드에서 안전하게 사용할 수 있도록 bufferevent에 대한 잠금을 자동으로 할당합니다.
EventBufferEvent::OPT_DEFER_CALLBACKS
이 플래그가 설정되면 bufferevent는 모든 콜백을 연기합니다. » Fast portable non-blocking network programming with Libevent, Deferred callbacks을 참조하세요.
EventBufferEvent::OPT_UNLOCK_CALLBACKS
기본적으로 bufferevent가 스레드로부터 안전하도록 설정되면 사용자 제공 콜백이 호출될 때마다 버퍼 이벤트의 잠금이 유지됩니다. 이 옵션을 설정하면 Libevent가 콜백을 호출할 때 버퍼 이벤트의 잠금을 해제합니다.
EventBufferEvent::SSL_OPEN
SSL 핸드셰이크가 완료되었습니다.
EventBufferEvent::SSL_CONNECTING
SSL은 현재 클라이언트로 협상을 수행 중입니다.
EventBufferEvent::SSL_ACCEPTING
SSL은 현재 서버로 협상을 수행하고 있습니다.

목차