(PECL ev >= 0.2.0)
Ev は静的クラスで、デフォルトのループへのアクセスや各種共通操作へのアクセスを提供します。
ループを作るときに渡すフラグ
Ev::FLAG_AUTO
Ev::FLAG_NOENV
libev は環境変数
LIBEV_FLAGS を見ません。
それ以外の場合 (デフォルト) は、
LIBEV_FLAGS が見つかった場合は
その内容でフラグを上書きします。パフォーマンステストやバグの調査のときに有用です。
Ev::FLAG_FORKCHECK
getpid() を呼んでいます。
そのため、繰り返しの回数が増えるとイベントループがスローダウンするかもしれませんが、
通常は気になるほどではありません。このフラグの設定を上書きしたり、
環境変数 LIBEV_FLAGS で指定したりすることはできません。
Ev::FLAG_NOINOTIFY
libev
は » ev_stat
ウォッチャーに
inotify API を使わなくなります。
このフラグは inotify ファイルディスクリプタを節約するのに便利です。
これを使わなければ、ev_stat
ウォッチャーを使ったループのたびに
inotify
ハンドルをひとつずつ消費することになります。
Ev::FLAG_SIGNALFD
libev
は
» ev_signal
(および
» ev_child
) ウォッチャーに
signalfd API を使おうとします。
この API はシグナルを同期的に配送し、高速に処理したり
キューに入ったシグナルデータを取得できるようにしたりします。
また、スレッドを使ったときのシグナル処理も、
スレッド内でシグナルが適切にブロックされている限りはシンプルになります。
デフォルトでは signalfd を使いません。
Ev::FLAG_NOSIGMASK
libev はシグナルのマスクを変更しないようにします。
具体的には、シグナルが受信されるまではブロックしないようになるということです。
これは、自前のシグナル処理をするときに便利です。
また、特定のスレッドでだけシグナルを処理するという場合にも有用です。
Ev::run() あるいは EvLoop::run() に渡すフラグ
Ev::RUN_NOWAIT
Ev::RUN_ONCE
Ev::stop() あるいは EvLoop::stop() に渡すフラグ
Ev::BREAK_CANCEL
Ev::BREAK_ONE
Ev::BREAK_ALL
ウォッチャーの優先度
Ev::MINPRI
Ev::MAXPRI
受信したイベントのビットマスク
Ev::READ
Ev::WRITE
Ev::TIMER
Ev::PERIODIC
Ev::SIGNAL
Ev::CHILD
pid
が、状態の変更を受信しました。
Ev::STAT
Ev::IDLE
Ev::PREPARE
Ev::CHECK
Ev::EMBED
Ev::CUSTOM
libev
で送信したりそれ以外の使いかたをしたりはしていませんが、
libev
ユーザーが (EvWatcher::feed() などで)
ウォッチャーに通知するために使えます。
Ev::ERROR
libev がメモリ不足でウォッチャーをきちんと開始できなかった場合や
ファイルディスクリプタが閉じてしまった場合などがあります。
libev は、これらに関してはアプリケーションのバグとみなします。
詳細は
» ANATOMY
OF A WATCHER
を参照ください。
バックエンドのフラグ
Ev::BACKEND_SELECT
select(2) バックエンド
Ev::BACKEND_POLL
poll(2) バックエンド
Ev::BACKEND_EPOLL
epoll(7)
バックエンド。2.6.9 以前のカーネルでもそれ以降のカーネルでも使えます。
Ev::BACKEND_KQUEUE
kqueue
バックエンド。大半の BSD システムで利用します。
EvEmbed ウォッチャーを使って、
kqueue バックエンドのループを別のループに埋め込むことができます。
たとえば、
kqueue バックエンドのループを作って、
それをソケットに対してだけ使うこともできます。
Ev::BACKEND_DEVPOLL
Ev::BACKEND_PORT
Ev::BACKEND_ALL
Ev::BACKEND_ALL
& ~
Ev::BACKEND_KQUEUE
のようにするか、
Ev::recommendedBackends()
を使うか、あるいは何もバックエンドを指定しないようにしましょう。
Ev::BACKEND_MASK
flags の中のすべてのバックエンドビットをマスクするものです。
たとえば、環境変数
LIBEV_FLAGS
を変更するときに使います。
注意: デフォルトのループの場合は、モジュールの初期化時に
Evが (もし使えれば)pthread_atforkを使って » ev_loop_fork の呼び出しを登録します。
注意: Ev クラスには、 デフォルトのイベントループ にアクセスするメソッドが用意されています (Ev::iteration() や Ev::depth() など)。 カスタムループ (EvLoop::__construct() で作ったもの) の場合、これらの値にアクセスするには EvLoop クラスのプロパティやメソッドを使います。 デフォルトのイベントループ自体のインスタンスを取得するには EvLoop::defaultLoop() メソッドを使います。