1
0
mirror of https://github.com/php/doc-ru.git synced 2026-03-25 16:22:18 +01:00
Files
archived-doc-ru/reference/ev/watcher-callbacks.xml
2024-04-21 18:51:04 +03:00

95 lines
3.8 KiB
XML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: bbfa9738785f054752e6cb565cd0a58e71015bc6 Maintainer: rjhdby Status: ready -->
<!-- Reviewed: no -->
<chapter xml:id="ev.watcher-callbacks" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>Watcher callbacks</title>
<para>
Все наблюдатели могут быть либо активными (ожидать сообщения), либо
неактивными (приостановленными). Только активные наблюдатели могут
вызывать свои callback-функции. Все такие функции вызываются
как минимум с двумя параметрами:
<parameter>watcher</parameter> - наблюдатель, и
<parameter>revents</parameter> - битовая маска принятых событий.
</para>
<para>
Callback-функции наблюдателей передаются в конструкторы наблюдателей
(классы, наследующие от <classname>EvWatcher</classname> -
<methodname>EvCheck::__construct</methodname>,
<methodname>EvChild::__construct</methodname> и т.д.)
Callback-функция наблюдателя должна соответствовать следующему прототипу:
</para>
<methodsynopsis>
<type>void</type>
<methodname>callback</methodname>
<methodparam
choice="opt">
<type>object</type>
<parameter>watcher</parameter>
<initializer>NULL</initializer>
</methodparam>
<methodparam
choice="opt">
<type>int</type>
<parameter>revents</parameter>
<initializer>NULL</initializer>
</methodparam>
</methodsynopsis>
<para>
<variablelist>
<varlistentry>
<term>
<parameter>watcher</parameter>
</term>
<listitem>
<para>
Экземпляр наблюдателя (класс расширяющий <classname>EvWatcher</classname>).
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<parameter>revents</parameter>
</term>
<listitem>
<para>
<link linkend="ev.constants.watcher-revents">Принятые наблюдателем события</link>.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
<para>
Каждый тип наблюдателя имеет собственный бит в
<parameter>revents</parameter>, ассоциированный с ним,
что позволяет использовать одну и ту же callback-функцию для
множества наблюдателей. Событийная маска именуется после типа, т.е.
<classname>EvChild</classname> (или <methodname>EvLoop::child</methodname>)
устанавливает <constant>EV::CHILD</constant>,
<classname>EvPrepare</classname> (или <methodname>EvLoop::prepare</methodname>)
устанавливает <constant>Ev::PREPARE</constant>,
<classname>EvPeriodic</classname> (или <methodname>EvLoop::periodic</methodname>)
устанавливает <constant>Ev::PERIODIC</constant>
и так далее, с исключением для событий ввода/вывода (которые устанавливают
оба бита, и <constant>Ev::READ</constant> и <constant>Ev::WRITE</constant>).
</para>
</chapter><!-- 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
-->