array ( 0 => 'index.php', 1 => 'PHP Manual', ), 'head' => array ( 0 => 'UTF-8', 1 => 'ja', ), 'this' => array ( 0 => 'ev.watcher-callbacks.php', 1 => 'ウォッチャーのコールバック', ), 'up' => array ( 0 => 'book.ev.php', 1 => 'Ev', ), 'prev' => array ( 0 => 'ev.watchers.php', 1 => 'ウォッチャー', ), 'next' => array ( 0 => 'ev.periodic-modes.php', 1 => 'Periodic ウォッチャーの操作モード', ), 'alternatives' => array ( ), 'source' => array ( 'lang' => 'ja', 'path' => 'reference/ev/watcher-callbacks.xml', ), ); $setup["toc"] = $TOC; $setup["toc_deprecated"] = $TOC_DEPRECATED; $setup["parents"] = $PARENTS; manual_setup($setup); ?>
すべてのウォッチャーは、アクティブ (イベントを待ち受け中)
あるいは非アクティブ (一時停止) の状態になります。
コールバックを実行できるのは、アクティブなウォッチャーだけです。
すべてのコールバックは、少なくとも二つの引数を付けて呼ばれます。
watcher
(ウォッチャー)、そして
revents
(受け取ったイベントのビットマスク) です。
ウォッチャーのコールバックは、ウォッチャーのコンストラクタ (EvWatcher の派生クラス。 EvCheck::__construct() や EvChild::__construct() など) に渡します。コールバックは、次のプロトタイプにしたがわなければいけません。
watcher
EvWatcher を継承したクラスのインスタンス。
revents
ウォッチャーの型によって、
revents
に関連するビットが割り当てられています。
そのため、複数のウォッチャーに対して同じコールバックを使えます。
イベントのマスクは、イベントの型にちなんだ名前になっています。たとえば
EvChild (あるいは EvLoop::child())
は EV::CHILD
、
EvPrepare (あるいは EvLoop::prepare())
は Ev::PREPARE
、
EvPeriodic (あるいは EvLoop::periodic())
は Ev::PERIODIC
などです。ただ I/O のイベントは例外で、これは
Ev::READ
と Ev::WRITE
の両方のビットを設定します。