(PECL event >= 1.2.6-beta)
Класс представляет буферизированное событие Libevent.
В дополнение к реагированию на события приложение часто буферизирует часть данных. В ситуациях, при которых требуется записать данные, стандартный алгоритм записи выглядит так:
Решается, что требуется записать часть данных в соединение; данные складываются в буфер
Ожидается, когда соединение станет доступным для записи.
Записывается столько данных, сколько получится.
Запоминается, сколько данных записалось и, если остались недозаписанные данные, выжидается, когда соединение снова станет доступно для записи.
Этот шаблон буферизированного ввода-вывода настолько распространён, что библиотека Libevent предоставляет встроенный механизм для него. «Буферизированное событие» состоит из транспорта, например сокета, буфера чтения и буфера записи. В отличие от стандартных событий, которые вызывают callback-функцию, когда транспорт становится доступен для чтения или записи, буферизованное событие вызывает функцию обратного вызова после считывания или записи достаточного количества данных.
$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
= ?
Числовой файловый дескриптор, который связан с событием буфера.
Обычно представляет связанный сокет. Дескриптор равен null
, если
с событием буфера не связан файловый дескриптор (сокет).
Приоритет событий, через которые реализуют события буфера.
Нижележащий объект входящего буфера (EventBuffer).
Нижележащий объект исходящего буфера (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 и отложенными callback-функциями.
EventBufferEvent::OPT_UNLOCK_CALLBACKS
По умолчанию, когда bufferevent настроли как потокобезопасный, для буферизированного события сохраняются блокировки при запуске любых пользовательских функций обратного вызова. Установка этого флага говорит Libevent убирать блокировки при вызове этих callback-функций.
EventBufferEvent::SSL_OPEN
Подтверждение SSL завершено.
EventBufferEvent::SSL_CONNECTING
В текущий момент SSL участвует в установлении соединения как клиент.
EventBufferEvent::SSL_ACCEPTING
В текущий момент SSL участвует в установлении соединения как сервер.