<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/book.ev.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'pt_BR',
  ),
  'this' => 
  array (
    0 => 'ev.watcher-callbacks.php',
    1 => 'Retornos de chamada do observador',
    2 => 'Retornos de chamada do observador',
  ),
  'up' => 
  array (
    0 => 'book.ev.php',
    1 => 'Ev',
  ),
  'prev' => 
  array (
    0 => 'ev.watchers.php',
    1 => 'Observadores',
  ),
  'next' => 
  array (
    0 => 'ev.periodic-modes.php',
    1 => 'Modos de opera&ccedil;&atilde;o do observador peri&oacute;dico',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'pt_BR',
    'path' => 'reference/ev/watcher-callbacks.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="ev.watcher-callbacks" class="chapter">
 <h1 class="title">Retornos de chamada do observador</h1>

 <p class="simpara">
  Todos os observadores podem estar ativos (aguardando eventos) ou inativos (pausados). Somente
  observadores ativos terão seus retornos de chamada invocados. Todos os retornos de chamada serão
  chamados com pelo menos dois argumentos:
 <code class="parameter">watcher</code>
 - o observador e
 <code class="parameter">revents</code>
 uma máscara de bits de eventos recebidos.
 </p>
 <p class="simpara">
   Os retornos de chamada do observador são passados para os construtores do inspetor (as classes derivadas
   de
   <span class="classname"><a href="class.evwatcher.php" class="classname">EvWatcher</a></span>
   -
   <span class="methodname"><a href="evcheck.construct.php" class="methodname">EvCheck::__construct()</a></span>,
   <span class="methodname"><a href="evchild.construct.php" class="methodname">EvChild::__construct()</a></span>
   etc.). Um retorno de chamada do observador deve corresponder ao seguinte protótipo:
 </p>
 <div class="methodsynopsis dc-description"><span class="methodname"><strong>callback</strong></span>(<span class="methodparam">
   
   <span class="type"><a href="language.types.object.php" class="type object">object</a></span> <code class="parameter">$watcher</code>
   <span class="initializer"> = NULL</span>
  </span>, <span class="methodparam">
   
   <span class="type"><a href="language.types.integer.php" class="type int">int</a></span> <code class="parameter">$revents</code>
   <span class="initializer"> = NULL</span>
  </span>): <span class="type"><a href="language.types.void.php" class="type void">void</a></span></div>

 <dl>
  
   <dt>
    <code class="parameter">watcher</code>
   </dt>
   <dd>
    <span class="simpara">
     A instância do observador
     (de uma classe que estende
     <span class="classname"><a href="class.evwatcher.php" class="classname">EvWatcher</a></span>).
    </span>
   </dd>
  
  
   <dt>
    <code class="parameter">revents</code>
   </dt>
   <dd>
    <span class="simpara">
     <a href="class.ev.php#ev.constants.watcher-revents" class="link">Eventos recebidos pelo observador</a>.
    </span>
   </dd>
  
 </dl>
 <p class="simpara">
  Cada tipo de observador tem seu bit associado em
  <code class="parameter">revents</code>,
  portanto, pode-se usar o mesmo retorno de chamada para vários observadores. A máscara de evento é
  nomeada de acordo com o tipo, ou seja,
  <span class="classname"><a href="class.evchild.php" class="classname">EvChild</a></span>
  (ou
  <span class="methodname"><a href="evloop.child.php" class="methodname">EvLoop::child()</a></span>)
  define
  <strong><code><a href="class.ev.php#ev.constants.child">EV::CHILD</a></code></strong>,
  <span class="classname"><a href="class.evprepare.php" class="classname">EvPrepare</a></span>
  (ou
  <span class="methodname"><a href="evloop.prepare.php" class="methodname">EvLoop::prepare()</a></span>)
  define
  <strong><code><a href="class.ev.php#ev.constants.prepare">Ev::PREPARE</a></code></strong>,
  <span class="classname"><a href="class.evperiodic.php" class="classname">EvPeriodic</a></span>
  (ou
  <span class="methodname"><a href="evloop.periodic.php" class="methodname">EvLoop::periodic()</a></span>)
  define
  <strong><code><a href="class.ev.php#ev.constants.periodic">Ev::PERIODIC</a></code></strong>
  e assim por diante, com exceção de eventos de E/S (que podem definir ambos
  os bits
  <strong><code><a href="class.ev.php#ev.constants.read">Ev::READ</a></code></strong>
  e
  <strong><code><a href="class.ev.php#ev.constants.write">Ev::WRITE</a></code></strong>).
 </p>
</div>
<?php manual_footer($setup); ?>