すべてのウォッチャーは、アクティブ (イベントを待ち受け中)
あるいは非アクティブ (一時停止) の状態になります。
コールバックを実行できるのは、アクティブなウォッチャーだけです。
すべてのコールバックは、少なくとも二つの引数を付けて呼ばれます。
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
の両方のビットを設定します。