php-doc-en/reference/ev/evcheck.xml

120 lines
4.1 KiB
XML
Raw Normal View History

<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<phpdoc:classref xml:id="class.evcheck" xmlns:phpdoc="http://php.net/ns/phpdoc" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xi="http://www.w3.org/2001/XInclude">
<title>The EvCheck class</title>
<titleabbrev>EvCheck</titleabbrev>
<partintro>
<!-- {{{ EvCheck intro -->
<section xml:id="evcheck.intro">
&reftitle.intro;
<para>
<classname>EvPrepare</classname>
and
<classname>EvCheck</classname>
watchers are usually used in pairs.
<classname>EvPrepare</classname>
watchers get invoked before the process blocks,
<classname>EvCheck</classname>
afterwards.
</para>
<para>
It is not allowed to call
<methodname>EvLoop::run</methodname>
or similar methods or functions that enter the current event loop from
either
<classname>EvPrepare</classname>
or
<classname>EvCheck</classname>
watchers. Other loops than the current one are fine, however. The
rationale behind this is that one don&apos;t need to check for recursion
in those watchers, i.e. the sequence will always be:
<classname>EvPrepare</classname>
-&gt; blocking -&gt;
<classname>EvCheck</classname>
, so having a watcher of each kind they will always be called in pairs
bracketing the blocking call.
</para>
<para>
The main purpose is to integrate other event mechanisms into
<emphasis>libev</emphasis>
and their use is somewhat advanced. They could be used, for example, to
track variable changes, implement custom watchers, integrate net-snmp or a
coroutine library and lots more. They are also occasionally useful to
cache some data and want to flush it before blocking.
</para>
<para>
It is recommended to give
<classname>EvCheck</classname>
watchers highest(
<constant>Ev::MAXPRI</constant>
) priority, to ensure that they are being run before any other watchers
after the poll (this doesnt matter for
<classname>EvPrepare</classname>
watchers).
</para>
<para>
Also,
<classname>EvCheck</classname>
watchers should not activate/feed events. While
<emphasis>libev</emphasis>
fully supports this, they might get executed before other
<classname>EvCheck</classname>
watchers did their job.
</para>
</section>
<!-- }}} -->
<section xml:id="evcheck.synopsis">
&reftitle.classsynopsis;
<!-- {{{ Synopsis -->
<classsynopsis>
<ooclass>
<classname>EvCheck</classname>
</ooclass>
<!-- {{{ Class synopsis -->
<classsynopsisinfo>
<ooclass>
<classname>EvCheck</classname>
</ooclass>
<ooclass>
<modifier>extends</modifier>
<classname>EvWatcher</classname>
</ooclass>
</classsynopsisinfo>
<!-- }}} -->
<!--<classsynopsisinfo role="comment">&Properties;</classsynopsisinfo>-->
<classsynopsisinfo role="comment">&InheritedProperties;</classsynopsisinfo>
<xi:include xpointer="xmlns(db=http://docbook.org/ns/docbook) xpointer(id('evwatcher.synopsis')/descendant::db:fieldsynopsis)" />
<classsynopsisinfo role="comment">&Methods;</classsynopsisinfo>
<xi:include xpointer="xmlns(db=http://docbook.org/ns/docbook) xpointer(id('class.evcheck')/db:refentry/db:refsect1[@role='description']/descendant::db:methodsynopsis[1])" />
<classsynopsisinfo role="comment">&InheritedMethods;</classsynopsisinfo>
<xi:include xpointer="xmlns(db=http://docbook.org/ns/docbook) xpointer(id('class.evwatcher')/db:refentry/db:refsect1[@role='description']/descendant::db:methodsynopsis[1])" />
</classsynopsis>
<!-- }}} -->
</section>
</partintro>
&reference.ev.entities.evcheck;
</phpdoc:classref>
<!-- 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
-->