<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<phpdoc:classref xml:id="class.evstat" 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 EvStat class</title>
 <titleabbrev>EvStat</titleabbrev>
 <partintro>
<!-- {{{ EvStat intro -->
  <section xml:id="evstat.intro">
   &reftitle.intro;
   <para>
    <classname>EvStat</classname>
    monitors a file system path for attribute changes. It calls
    <emphasis>stat()</emphasis>
    on that path in regular intervals(or when the OS signals it changed) and
    sees if it changed compared to the last time, invoking the callback if it
    did.
   </para>
   <para>
    The path does not need to exist: changing from "path exists" to "path does
    not exist" is a status change like any other. The condition "path does not
    exist" is signified by the
    <constant>'nlink'</constant>
    item being 0(returned by
    <methodname>EvStat::attr</methodname>
    method).
   </para>
   <para>
    The path must not end in a slash or contain special components such as
    <constant>'.'</constant>
    or
    <constant>..</constant>
    . The path should be absolute: if it is relative and the working directory
    changes, then the behaviour is undefined.
   </para>
   <para>
    Since there is no portable change notification interface available, the
    portable implementation simply calls
    <emphasis>stat()</emphasis>
    regularly on the path to see if it changed somehow. For this case a
    recommended polling interval can be specified. If one specifies a polling
    interval of
    <constant>0.0</constant>
    (highly recommended) then a suitable, unspecified default value will be
    used(which could be expected to be around 5 seconds, although this might
    change dynamically).
    <emphasis>libev</emphasis>
    will also impose a minimum interval which is currently around
    <constant>0.1</constant>
    , but that’s usually overkill.
   </para>
   <para>
    This watcher type is not meant for massive numbers of
    <classname>EvStat</classname>
    watchers, as even with OS-supported change notifications, this can be
    resource-intensive.
   </para>
  </section>
<!-- }}} -->
  <section xml:id="evstat.synopsis">
   &reftitle.classsynopsis;

<!-- {{{ Synopsis -->
   <classsynopsis>
    <ooclass>
     <classname>EvStat</classname>
    </ooclass>
<!-- {{{ Class synopsis -->
    <classsynopsisinfo>
     <ooclass>
      <classname>EvStat</classname>
     </ooclass>
     <ooclass>
      <modifier>extends</modifier>
      <classname>EvWatcher</classname>
     </ooclass>
    </classsynopsisinfo>
<!-- }}} -->
    <classsynopsisinfo role="comment">&Properties;</classsynopsisinfo>
    <fieldsynopsis>
     <modifier>public</modifier>
     <varname linkend="evstat.props.path">path</varname>
    </fieldsynopsis>
    <fieldsynopsis>
     <modifier>public</modifier>
     <varname linkend="evstat.props.interval">interval</varname>
    </fieldsynopsis>
    <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.evstat')/db:refentry/db:refsect1[@role='description']/descendant::db:constructorsynopsis[not(@role='procedural')])"/>
    <xi:include xpointer="xmlns(db=http://docbook.org/ns/docbook) xpointer(id('class.evstat')/db:refentry/db:refsect1[@role='description']/descendant::db:methodsynopsis[not(@role='procedural')])"/>
    <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>
<!-- {{{ EvStat properties -->
  <section xml:id="evstat.props">
   &reftitle.properties;
   <variablelist>
    <varlistentry xml:id="evstat.props.interval">
     <term>
      <varname>interval</varname>
     </term>
     <listitem>
      <para>
       <emphasis>Readonly</emphasis>
       . Hint on how quickly a change is expected to be detected and should
       normally be specified as
       <constant>0.0</constant>
       to let
       <emphasis>libev</emphasis>
       choose a suitable value.
      </para>
     </listitem>
    </varlistentry>
    <varlistentry xml:id="evstat.props.path">
     <term>
      <varname>path</varname>
     </term>
     <listitem>
      <para>
       <emphasis>Readonly</emphasis>
       . The path to wait for status changes on.
      </para>
     </listitem>
    </varlistentry>
   </variablelist>
  </section>
<!-- }}} -->
 </partintro>

 &reference.ev.entities.evstat;

</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
-->
