Класс EventBufferEvent
(PECL event >= 1.2.6-beta)
Введение
Представляет буферезированное событие Libevent.
Обычно приложению необходимо произвести буферизацию некоторого количества данных в дополнение к тому, чтоб просто реагировать на события. Когда мы, к примеру, хотим записывать данные, обычный алгоритм выглядит так:
-
Решаем, что нам надо записать данные в соединение; складываем данные в буфер
-
Ожидаем, когда соединение станет доступным для записи
-
Записываем столько данных, сколько можем
-
Запоминаем, сколько данных записали и, если остались недозаписанные данные, ждем, когда соединение снова станет доступно для записи.
Это шаблон буферезированного вводы/вывода настолько распространен, что Libevent предоставляет встроенный механизм для него. "Буферезированное событие" состоит из транспорта (например сокета), буфера чтения и буфера записи. В отличие от стандартных событий, которые используют функцию обратного вызова когда транспорт становится доступен для чтения или записи, буферизованное событие вызывает функцию обратного вызова тогда, когда прочитает или запишет достаточное количество данных.
Обзор классов
$dns_base
,
string
$hostname
,
int
$port
,
int
$family
= EventUtil::AF_UNSPEC
) : bool$base
,
mixed
$socket
= null
,
int
$options
= 0
,
callable
$readcb
= null
,
callable
$writecb
= null
,
callable
$eventcb
= null
)$readcb
,
callable
$writecb
,
callable
$eventcb
,
string
$arg
= ?
) : void$base
,
EventBufferEvent
$underlying
,
EventSslContext
$ctx
,
int
$state
,
int
$options
= 0
) : EventBufferEvent$base
,
mixed
$socket
,
EventSslContext
$ctx
,
int
$state
,
int
$options
= ?
) : EventBufferEventСвойства
- fd
-
Числовой файловый дескриптор связанный с буферезированным сокетом. Обычно является связанным сокетом. Равен
null
, если отсутствует файловый дескриптор(сокет) связанный с буферизированным событием. - priority
-
Приоритет событий, используемых для реализации буферизованных событий.
- input
-
Нижележащий объект входящего буфера ( EventBuffer )
- output
-
Нижележащий объект исходящего буфера ( EventBuffer )
Предопределенные константы
-
EventBufferEvent::READING
-
Событие произошло в момент операции чтения из bufferevent. Проверьте другие флаги для этого события.
-
EventBufferEvent::WRITING
-
Событие произошло в момент операции записи в bufferevent. Проверьте другие флаги для этого события.
-
EventBufferEvent::EOF
-
Получен признак конца файла для буферизированного события.
-
EventBufferEvent::ERROR
-
Произошла ошибка во время операции с bufferevent. Подробную информацию об ошибке можно получить с помощью методов EventUtil::getLastSocketErrno() и/или EventUtil::getLastSocketError() .
-
EventBufferEvent::TIMEOUT
-
EventBufferEvent::CONNECTED
-
Запрошенное соединение с bufferevent установлено.
-
EventBufferEvent::OPT_CLOSE_ON_FREE
-
Закрыть нижележащий транспорт, когда объект буферизированного события уничтожен. Будет закрыт сокет, уничтожен буфер и т.д.
-
EventBufferEvent::OPT_THREADSAFE
-
Автоматически размещать блокировки для bufferevent, что позволяет безопасно использовать многопоточность.
-
EventBufferEvent::OPT_DEFER_CALLBACKS
-
Когда флаг установлен, bufferevent откладывает все свои функции обратного вызова. См. » Быстрое, переносимое, неблокирующее сетевое програмирование с Libevent и отложенными функциями обратного вызова (Deferred callbacks) .
-
EventBufferEvent::OPT_UNLOCK_CALLBACKS
-
По умолчанию, когда bufferevent настроен как потокобезопасный, для буферизированного события будут сохраняться блокировки при запуске любых пользовательских функций обратного вызова. Установка этого флага говорит Libevent убирать блокировки при вызове этих callback-функций.
-
EventBufferEvent::SSL_OPEN
-
Подтверждение SSL завершено
-
EventBufferEvent::SSL_CONNECTING
-
В текущий момент SSL участвует в установлении соединения как клиент
-
EventBufferEvent::SSL_ACCEPTING
-
В текущий момент SSL участвует в установлении соединения как сервер
Содержание
- EventBufferEvent::close — Закрывает дескриптор файла, связанный с текущим событием буфера
- EventBufferEvent::connect — Подключает файловый дескриптор события буфера к указанному адресу или сокету UNIX
- EventBufferEvent::connectHost — Connects to a hostname with optionally asyncronous DNS resolving
- EventBufferEvent::__construct — Constructs EventBufferEvent object
- EventBufferEvent::createPair — Creates two buffer events connected to each other
- EventBufferEvent::disable — Disable events read, write, or both on a buffer event
- EventBufferEvent::enable — Enable events read, write, or both on a buffer event
- EventBufferEvent::free — Free a buffer event
- EventBufferEvent::getDnsErrorString — Returns string describing the last failed DNS lookup attempt
- EventBufferEvent::getEnabled — Returns bitmask of events currently enabled on the buffer event
- EventBufferEvent::getInput — Возвращает базовый входной буфер, связанный с текущим буферным событием
- EventBufferEvent::getOutput — Возвращает базовый выходной буфер, связанный с текущим буферным событием
- EventBufferEvent::read — Читает данные буфера
- EventBufferEvent::readBuffer — Сливает все содержимое буфера ввода и помещает его в буфер
- EventBufferEvent::setCallbacks — Назначает callback-функции для чтения, записи и события (состояния)
- EventBufferEvent::setPriority — Присваивает приоритет bufferevent
- EventBufferEvent::setTimeouts — Устанавливает время ожидания чтения и записи для события буфера
- EventBufferEvent::setWatermark — Adjusts read and/or write watermarks
- EventBufferEvent::sslError — Возвращает последнюю ошибку OpenSSL, сообщенную буферному событию
- EventBufferEvent::sslFilter — Создает новое событие буфера SSL для отправки своих данных через другое событие буфера
- EventBufferEvent::sslGetCipherInfo — Возвращает текстовое описание шифра
- EventBufferEvent::sslGetCipherName — Возвращает текущее имя шифра соединения SSL
- EventBufferEvent::sslGetCipherVersion — Возвращает версию шифра, используемого текущим SSL-соединением
- EventBufferEvent::sslGetProtocol — Возвращает имя протокола, используемого для текущего соединения SSL
- EventBufferEvent::sslRenegotiate — Сообщает буферному событию начать пересмотр SSL
- EventBufferEvent::sslSocket — Создает новое буферное событие SSL для отправки своих данных через SSL в сокет
- EventBufferEvent::write — Добавляет данные в буфер вывода буферного события
- EventBufferEvent::writeBuffer — Добавляет содержимое всего буфера в буфер вывода буферного события