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