<?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 doesn’t 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
-->