EventBufferEvent 类

(PECL event >= 1.2.6-beta)

介绍

表示 Libevent 的缓冲事件。

通常应用程序除了响应事件外,还需要执行一定程度的数据缓冲。例如,当我们想要写入数据时,通常的模式如下:

  1. 决定我们要将一些数据写入连接;将这些数据放入缓冲区。

  2. 等待连接变为可写

  3. 写入尽可能多的数据

  4. 记住我们写了多少,如果我们还有更多数据要写,则再次等待连接变为可写。

这种缓冲 I/O 模式非常普遍,以至于 Libevent 为其提供了一个通用机制。一个“缓冲事件”包括一个底层传输(如套接字)、一个读取缓冲区和一个写入缓冲区。与常规事件不同的是,常规事件在底层传输准备好读取或写入时提供回调,而缓冲事件在读取或写入足够数据时调用其用户提供的回调。

类摘要

final class EventBufferEvent {
/* 常量 */
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;
/* 属性 */
public int $fd;
public int $priority;
public readonly EventBuffer $input;
public readonly EventBuffer $output;
/* 方法 */
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
}

属性

fd

与缓冲事件关联的数字文件描述符。通常代表一个绑定的套接字。等于 **null**,如果与缓冲事件没有关联的文件描述符(套接字)。

priority

用于实现缓冲事件的事件的优先级。

input

底层输入缓冲对象( EventBuffer

output

底层输出缓冲对象( EventBuffer

预定义常量

EventBufferEvent::READING

缓冲事件上的读取操作期间发生了事件。查看其他标志以了解它是哪个事件。

EventBufferEvent::WRITING

缓冲事件上的写入操作期间发生了事件。查看其他标志以了解它是哪个事件。

EventBufferEvent::EOF

在缓冲事件上获得文件结束指示。

EventBufferEvent::ERROR

缓冲事件操作期间发生了错误。有关错误详细信息,请调用 EventUtil::getLastSocketErrno() 和/或 EventUtil::getLastSocketError()

EventBufferEvent::TIMEOUT

EventBufferEvent::CONNECTED

在缓冲事件上完成请求的连接。

EventBufferEvent::OPT_CLOSE_ON_FREE

当缓冲事件被释放时,关闭底层传输。这将关闭底层套接字,释放底层缓冲事件等。

EventBufferEvent::OPT_THREADSAFE

自动为缓冲事件分配锁,以便可以从多个线程安全使用它。

EventBufferEvent::OPT_DEFER_CALLBACKS

当设置此标志时,缓冲事件会延迟其所有回调。查看 » 使用 Libevent 进行快速可移植的非阻塞网络编程,延迟回调

EventBufferEvent::OPT_UNLOCK_CALLBACKS

默认情况下,当缓冲事件被设置为线程安全时,缓冲事件的锁将在调用任何用户提供的回调时被持有。设置此选项将使 Libevent 在调用回调时释放缓冲事件的锁。

EventBufferEvent::SSL_OPEN

SSL 握手已完成

EventBufferEvent::SSL_CONNECTING

SSL 当前正在以客户端身份执行协商

EventBufferEvent::SSL_ACCEPTING

SSL 当前正在以服务器身份执行协商

目录

添加注释

用户贡献的注释

此页面没有用户贡献的注释。
To Top