mirror of
https://github.com/php/doc-ru.git
synced 2026-04-26 00:38:06 +02:00
407 lines
15 KiB
XML
407 lines
15 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<!-- EN-Revision: 4d17b7b4947e7819ff5036715dd706be87ae4def Maintainer: rjhdby Status: ready -->
|
|
<!-- Reviewed: no -->
|
|
|
|
<reference xml:id="class.eventbufferevent" role="class" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xi="http://www.w3.org/2001/XInclude">
|
|
<title>Класс EventBufferEvent</title>
|
|
<titleabbrev>EventBufferEvent</titleabbrev>
|
|
<partintro>
|
|
<!-- {{{ EventBufferEvent intro -->
|
|
<section xml:id="eventbufferevent.intro">
|
|
&reftitle.intro;
|
|
<para>
|
|
Класс представляет буферизированное событие Libevent.
|
|
</para>
|
|
<para>
|
|
Обычно приложению необходимо произвести буферизацию некоторого
|
|
количества данных в дополнение к тому, чтобы просто реагировать
|
|
на события. Когда, например, необходимо записывать данные, обычный алгоритм
|
|
выглядит так:
|
|
</para>
|
|
<orderedlist>
|
|
<listitem>
|
|
<para>
|
|
Решается, что требуется записать данные в соединение; данные складываются
|
|
в буфер
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Ожидается, когда соединение станет доступным для записи
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Записывается столько данных, сколько можно
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Запоминается, сколько данных записалось и, если остались недозаписанные данные,
|
|
выжидается, когда соединение снова станет доступно для записи.
|
|
</para>
|
|
</listitem>
|
|
</orderedlist>
|
|
<para>
|
|
Это шаблон буферизированного ввода-вывода настолько распространён, что
|
|
Libevent предоставляет встроенный механизм для него.
|
|
«Буферизированное событие» состоит из транспорта (например, сокета),
|
|
буфера чтения и буфера записи. В отличие от стандартных событий, которые
|
|
используют callback-функцию, когда транспорт становится доступен для
|
|
чтения или записи, буферизованное событие вызывает функцию обратного
|
|
вызова тогда, когда прочитает или запишет достаточное количество данных.
|
|
</para>
|
|
</section>
|
|
<!-- }}} -->
|
|
<section xml:id="eventbufferevent.synopsis">
|
|
&reftitle.classsynopsis;
|
|
|
|
<!-- {{{ Synopsis -->
|
|
<classsynopsis>
|
|
<ooclass>
|
|
<classname>EventBufferEvent</classname>
|
|
</ooclass>
|
|
<!-- {{{ Class synopsis -->
|
|
<classsynopsisinfo>
|
|
<ooclass>
|
|
<modifier>final</modifier>
|
|
<classname>EventBufferEvent</classname>
|
|
</ooclass>
|
|
</classsynopsisinfo>
|
|
<!-- }}} -->
|
|
<classsynopsisinfo role="comment">&Constants;</classsynopsisinfo>
|
|
<fieldsynopsis>
|
|
<modifier>const</modifier>
|
|
<type>int</type>
|
|
<varname linkend="eventbufferevent.constants.reading">EventBufferEvent::READING</varname>
|
|
<initializer>1</initializer>
|
|
</fieldsynopsis>
|
|
<fieldsynopsis>
|
|
<modifier>const</modifier>
|
|
<type>int</type>
|
|
<varname linkend="eventbufferevent.constants.writing">EventBufferEvent::WRITING</varname>
|
|
<initializer>2</initializer>
|
|
</fieldsynopsis>
|
|
<fieldsynopsis>
|
|
<modifier>const</modifier>
|
|
<type>int</type>
|
|
<varname linkend="eventbufferevent.constants.eof">EventBufferEvent::EOF</varname>
|
|
<initializer>16</initializer>
|
|
</fieldsynopsis>
|
|
<fieldsynopsis>
|
|
<modifier>const</modifier>
|
|
<type>int</type>
|
|
<varname linkend="eventbufferevent.constants.error">EventBufferEvent::ERROR</varname>
|
|
<initializer>32</initializer>
|
|
</fieldsynopsis>
|
|
<fieldsynopsis>
|
|
<modifier>const</modifier>
|
|
<type>int</type>
|
|
<varname linkend="eventbufferevent.constants.timeout">EventBufferEvent::TIMEOUT</varname>
|
|
<initializer>64</initializer>
|
|
</fieldsynopsis>
|
|
<fieldsynopsis>
|
|
<modifier>const</modifier>
|
|
<type>int</type>
|
|
<varname linkend="eventbufferevent.constants.connected">EventBufferEvent::CONNECTED</varname>
|
|
<initializer>128</initializer>
|
|
</fieldsynopsis>
|
|
<fieldsynopsis>
|
|
<modifier>const</modifier>
|
|
<type>int</type>
|
|
<varname linkend="eventbufferevent.constants.opt-close-on-free">EventBufferEvent::OPT_CLOSE_ON_FREE</varname>
|
|
<initializer>1</initializer>
|
|
</fieldsynopsis>
|
|
<fieldsynopsis>
|
|
<modifier>const</modifier>
|
|
<type>int</type>
|
|
<varname linkend="eventbufferevent.constants.opt-threadsafe">EventBufferEvent::OPT_THREADSAFE</varname>
|
|
<initializer>2</initializer>
|
|
</fieldsynopsis>
|
|
<fieldsynopsis>
|
|
<modifier>const</modifier>
|
|
<type>int</type>
|
|
<varname linkend="eventbufferevent.constants.opt-defer-callbacks">EventBufferEvent::OPT_DEFER_CALLBACKS</varname>
|
|
<initializer>4</initializer>
|
|
</fieldsynopsis>
|
|
<fieldsynopsis>
|
|
<modifier>const</modifier>
|
|
<type>int</type>
|
|
<varname linkend="eventbufferevent.constants.opt-unlock-callbacks">EventBufferEvent::OPT_UNLOCK_CALLBACKS</varname>
|
|
<initializer>8</initializer>
|
|
</fieldsynopsis>
|
|
<fieldsynopsis>
|
|
<modifier>const</modifier>
|
|
<type>int</type>
|
|
<varname linkend="eventbufferevent.constants.ssl-open">EventBufferEvent::SSL_OPEN</varname>
|
|
<initializer>0</initializer>
|
|
</fieldsynopsis>
|
|
<fieldsynopsis>
|
|
<modifier>const</modifier>
|
|
<type>int</type>
|
|
<varname linkend="eventbufferevent.constants.ssl-connecting">EventBufferEvent::SSL_CONNECTING</varname>
|
|
<initializer>1</initializer>
|
|
</fieldsynopsis>
|
|
<fieldsynopsis>
|
|
<modifier>const</modifier>
|
|
<type>int</type>
|
|
<varname linkend="eventbufferevent.constants.ssl-accepting">EventBufferEvent::SSL_ACCEPTING</varname>
|
|
<initializer>2</initializer>
|
|
</fieldsynopsis>
|
|
<classsynopsisinfo role="comment">&Properties;</classsynopsisinfo>
|
|
<fieldsynopsis>
|
|
<modifier>public</modifier>
|
|
<type>int</type>
|
|
<varname linkend="eventbufferevent.props.fd">fd</varname>
|
|
</fieldsynopsis>
|
|
<fieldsynopsis>
|
|
<modifier>public</modifier>
|
|
<type>int</type>
|
|
<varname linkend="eventbufferevent.props.priority">priority</varname>
|
|
</fieldsynopsis>
|
|
<fieldsynopsis>
|
|
<modifier>public</modifier>
|
|
<modifier>readonly</modifier>
|
|
<type>EventBuffer</type>
|
|
<varname linkend="eventbufferevent.props.input">input</varname>
|
|
</fieldsynopsis>
|
|
<fieldsynopsis>
|
|
<modifier>public</modifier>
|
|
<modifier>readonly</modifier>
|
|
<type>EventBuffer</type>
|
|
<varname linkend="eventbufferevent.props.output">output</varname>
|
|
</fieldsynopsis>
|
|
<classsynopsisinfo role="comment">&Methods;</classsynopsisinfo>
|
|
<xi:include xpointer="xmlns(db=http://docbook.org/ns/docbook) xpointer(id('class.eventbufferevent')/db:refentry/db:refsect1[@role='description']/descendant::db:methodsynopsis[1])" />
|
|
</classsynopsis>
|
|
<!-- }}} -->
|
|
</section>
|
|
<!-- {{{ EventBufferEvent properties -->
|
|
<section xml:id="eventbufferevent.props">
|
|
&reftitle.properties;
|
|
<variablelist>
|
|
<varlistentry xml:id="eventbufferevent.props.fd">
|
|
<term>
|
|
<varname>fd</varname>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
Числовой файловый дескриптор, который связан с событием буфера.
|
|
Обычно представляет связанный сокет. Дескриптор равен &null;, если
|
|
с событием буфера не связан файловый дескриптор (сокет).
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry xml:id="eventbufferevent.props.priority">
|
|
<term>
|
|
<varname>priority</varname>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
Приоритет событий, используемых для реализации события буфера.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry xml:id="eventbufferevent.props.input">
|
|
<term>
|
|
<varname>input</varname>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
Нижележащий объект входящего буфера (
|
|
<classname>EventBuffer</classname>
|
|
)
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry xml:id="eventbufferevent.props.output">
|
|
<term>
|
|
<varname>output</varname>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
Нижележащий объект исходящего буфера (
|
|
<classname>EventBuffer</classname>
|
|
)
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
</section>
|
|
<!-- }}} -->
|
|
<!-- {{{ EventBufferEvent constants -->
|
|
<section xml:id="eventbufferevent.constants">
|
|
&reftitle.constants;
|
|
<variablelist>
|
|
<varlistentry xml:id="eventbufferevent.constants.reading">
|
|
<term>
|
|
<constant>EventBufferEvent::READING</constant>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
Событие произошло в момент операции чтения из bufferevent. Проверьте
|
|
другие флаги для этого события.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry xml:id="eventbufferevent.constants.writing">
|
|
<term>
|
|
<constant>EventBufferEvent::WRITING</constant>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
Событие произошло в момент операции записи в bufferevent. Проверьте
|
|
другие флаги для этого события.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry xml:id="eventbufferevent.constants.eof">
|
|
<term>
|
|
<constant>EventBufferEvent::EOF</constant>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
Получен признак конца файла для буферизированного события.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry xml:id="eventbufferevent.constants.error">
|
|
<term>
|
|
<constant>EventBufferEvent::ERROR</constant>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
Произошла ошибка во время операции с bufferevent. Подробную информацию
|
|
об ошибке можно получить с помощью методов
|
|
<methodname>EventUtil::getLastSocketErrno</methodname>
|
|
и/или
|
|
<methodname>EventUtil::getLastSocketError</methodname>
|
|
.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry xml:id="eventbufferevent.constants.timeout">
|
|
<term>
|
|
<constant>EventBufferEvent::TIMEOUT</constant>
|
|
</term>
|
|
<listitem>
|
|
<para></para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry xml:id="eventbufferevent.constants.connected">
|
|
<term>
|
|
<constant>EventBufferEvent::CONNECTED</constant>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
Запрошенное соединение с bufferevent установлено.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry xml:id="eventbufferevent.constants.opt-close-on-free">
|
|
<term>
|
|
<constant>EventBufferEvent::OPT_CLOSE_ON_FREE</constant>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
Закрыть нижележащий транспорт, когда объект буферизированного
|
|
события уничтожен. Будет закрыт сокет, уничтожен буфер и т.д.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry xml:id="eventbufferevent.constants.opt-threadsafe">
|
|
<term>
|
|
<constant>EventBufferEvent::OPT_THREADSAFE</constant>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
Автоматически размещать блокировки для bufferevent, что позволяет
|
|
безопасно использовать многопоточность.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry xml:id="eventbufferevent.constants.opt-defer-callbacks">
|
|
<term>
|
|
<constant>EventBufferEvent::OPT_DEFER_CALLBACKS</constant>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
Когда флаг установлен, bufferevent откладывает все свои функции обратного вызова.
|
|
Смотрите <link
|
|
xlink:href="http://www.wangafu.net/~nickm/libevent-book/Ref6_bufferevent.html#_deferred_callbacks">Быстрое, переносимое, неблокирующее сетевое программирование с Libevent и отложенными функциями обратного вызова (Deferred callbacks)</link>
|
|
.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry xml:id="eventbufferevent.constants.opt-unlock-callbacks">
|
|
<term>
|
|
<constant>EventBufferEvent::OPT_UNLOCK_CALLBACKS</constant>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
По умолчанию, когда bufferevent настроен как потокобезопасный, для
|
|
буферизированного события будут сохраняться блокировки при запуске
|
|
любых пользовательских функций обратного вызова.
|
|
Установка этого флага говорит Libevent убирать блокировки при вызове
|
|
этих callback-функций.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry xml:id="eventbufferevent.constants.ssl-open">
|
|
<term>
|
|
<constant>EventBufferEvent::SSL_OPEN</constant>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
Подтверждение SSL завершено
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry xml:id="eventbufferevent.constants.ssl-connecting">
|
|
<term>
|
|
<constant>EventBufferEvent::SSL_CONNECTING</constant>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
В текущий момент SSL участвует в установлении соединения как клиент
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry xml:id="eventbufferevent.constants.ssl-accepting">
|
|
<term>
|
|
<constant>EventBufferEvent::SSL_ACCEPTING</constant>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
В текущий момент SSL участвует в установлении соединения как сервер
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
</section>
|
|
<!-- }}} -->
|
|
</partintro>
|
|
|
|
&reference.event.entities.eventbufferevent;
|
|
|
|
</reference><!-- Keep this comment at the end of the file
|
|
Local variables:
|
|
mode: sgml
|
|
sgml-omittag:t
|
|
sgml-shorttag:t
|
|
sgml-minimize-attributes:nil
|
|
sgml-always-quote-attributes:t
|
|
sgml-indent-step:1
|
|
sgml-indent-data:t
|
|
indent-tabs-mode:nil
|
|
sgml-parent-document:nil
|
|
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
|
|
sgml-exposed-tags:nil
|
|
sgml-local-catalogs:nil
|
|
sgml-local-ecat-files:nil
|
|
End:
|
|
vim600: syn=xml fen fdm=syntax fdl=2 si
|
|
vim: et tw=78 syn=sgml
|
|
vi: ts=1 sw=1
|
|
-->
|