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