Dispatch::Source クラスは何らかのイベントが発生するときに、イベントをハンドリングして処理を実行する仕組みを提供します。
Dispatch::Source クラスの定数
- Dispatch::Source::DATA_ADD
- Dispatch::Source::DATA_OR
- Dispatch::Source::PROC
- Dispatch::Source::SIGNAL
- Dispatch::Source::READ
- Dispatch::Source::WRITE
- Dispatch::Source::VNODE
- Dispatch::Source::PROC_EXIT
- Dispatch::Source::PROC_FORK
- Dispatch::Source::PROC_EXEC
- Dispatch::Source::PROC_SIGNAL
- Dispatch::Source::VNODE_DELETE
- Dispatch::Source::VNODE_WRITE
- Dispatch::Source::VNODE_EXTEND
- Dispatch::Source::VNODE_ATTRIB
- Dispatch::Source::VNODE_LINK
- Dispatch::Source::VNODE_RENAME
- Dispatch::Source::VNODE_REVOKE
Dispatch Source の種類として、以下のものを使用できます。
定数名 | GCD API での定義 | 内容 |
---|---|---|
Dispatch::Source::DATA_ADD | DISPATCH_SOURCE_TYPE_DATA_ADD | << メソッドを通じてイベントが発生し、処理を実行します。 |
Dispatch::Source::DATA_OR | DISPATCH_SOURCE_TYPE_DATA_OR | << メソッドを通じてイベントが発生し、処理を実行します。 |
Dispatch::Source::PROC | DISPATCH_SOURCE_TYPE_PROC | プロセスに関するイベントを受けると、処理を実行します。 |
Dispatch::Source::SIGNAL | DISPATCH_SOURCE_TYPE_SIGNAL | シグナルを受けると、処理を実行します。 |
Dispatch::Source::READ | DISPATCH_SOURCE_TYPE_READ | ファイルディスクリプタが読み込み可能になると、処理を実行します。 |
Dispatch::Source::WRITE | DISPATCH_SOURCE_TYPE_WRITE | ファイルディスクリプタが書き込み可能になると、処理を実行します。 |
Dispatch::Source::VNODE | DISPATCH_SOURCE_TYPE_VNODE | ファイルが削除されたりファイルシステム上で変更があると、処理を実行します。 |
Dispatch::Source::PROC を使用する際に、以下の定数をマスクとして使用できます。
Dispatch::Source::PROC_EXIT | DISPATCH_PROC_EXIT | プロセスが終了した。 |
Dispatch::Source::PROC_FORK | DISPATCH_PROC_FORK | 子プロセスを作成した。 |
Dispatch::Source::PROC_EXEC | DISPATCH_PROC_EXEC | exec や posix_spawn で別のプロセスを実行した。 |
Dispatch::Source::PROC_SIGNAL | DISPATCH_PROC_SIGNAL | シグナルを送信した。 |
Dispatch::Source::VNODE を使用する際に、以下の定数をマスクとして使用できます。
Dispatch::Source::VNODE_DELETE | DISPATCH_VNODE_DELETE | ファイルなどが削除された。 |
Dispatch::Source::VNODE_WRITE | DISPATCH_VNODE_WRITE | ファイルなどのデータが変更された。 |
Dispatch::Source::VNODE_EXTEND | DISPATCH_VNODE_EXTEND | ファイルサイズが変更された。 |
Dispatch::Source::VNODE_ATTRIB | DISPATCH_VNODE_ATTRIB | ファイルなどのメタ情報が変更された。 |
Dispatch::Source::VNODE_LINK | DISPATCH_VNODE_LINK | The file-system object link count changed. |
Dispatch::Source::VNODE_RENAME | DISPATCH_VNODE_RENAME | ファイル名が変更された。 |
Dispatch::Source::VNODE_REVOKE | DISPATCH_VNODE_REVOKE | The file-system object was revoked. |
Dispatch Source は他のクラスよりもわかりにくいと思います。MacRuby のリポジトリにある source_spec.rb を参考にしたりすると良いでしょう。
Dispatch::Source クラスのメソッド
Dispatch::Source.new
Dispatch Source を生成し返します。
- new(type, handle, mask, queue) { … } -> Source
- [PARAM] type:
- Dispatch Source の種類を指定します。
- [PARAM] handle:
- イベントを監視するためのディスクリプタを指定します。type に
DATA_ADD
とDATA_OR
を指定した場合には、handle
は0
とします。
- イベントを監視するためのディスクリプタを指定します。type に
- [PARAM] mask:
- マスクを指定できる Dispatch Source の種類を type で使用した際に指定します。
- [PARAM] queue:
- イベントが発生したときに、block の処理を追加する Dispatch Queue を指定します。
- [RETURN]
- 生成した Dispatch Source のインスタンスを返します。
- [PARAM] type:
Dispatch::Source.timer
タイマーイベント用の Dispatch Source を生成し返します。
- timer(delay, interval, leeway, queue) { … } -> Source
- [PARAM] delay:
- 何秒後からタイマーを開始するか指定します。nil の場合には Dispatch::TIME_NOW が指定されたのと同じになります
- [PARAM] interval:
- 何秒間隔で繰り返すか指定します。
- [PARAM] leeway:
- 何秒までの遅れを許容するか指定します。
- [PARAM] queue:
- イベントが発生したときに、block の処理を追加する Dispatch Queue を指定します。
- [RETURN]
- 生成した Dispatch Source のインスタンスを返します。
- [PARAM] delay:
1 2 3 4 5 6 |
|
Dispatch::Source#cancelled?
Dispatch Source がキャンセルされているか返します。
- cancelled? -> bool
- [RETURN]
- キャンセルされていれば true、そうでなれば false を返します。
- [RETURN]
Dispatch::Source#cancel!
Dispatch Source をキャンセルします。
- cancel!
1 2 3 4 5 6 7 8 9 10 11 |
|
Dispatch::Source#handle
Dispatch Source の handle を返します。
- handle
- [RETURN]
- Dispatch Source の handle を返します。
- [RETURN]
Dispatch::Source#mask
Dispatch Source の mask を返します。GCD API の dispatch_source_get_mask
に相当します。
- mask
- [RETURN]
- Dispatch Source の mask を返します。
- [RETURN]
Dispatch::Source#data
Dispatch Source でまだ処理されていないデータを返します。GCD API の dispatch_source_get_data
に相当します。
- data
- [RETURN]
- Dispatch Source でまだ処理されていないデータを返します。
- [RETURN]
Dispatch Source の種類によって、以下のようなデータを返します。
Dispatch::Source::DATA_ADD | << で送信されたデータ |
Dispatch::Source::DATA_OR | << で送信されたデータ |
Dispatch::Source::PROC | Dispatch::Source::PROC_EXIT、Dispatch::Source::PROC_FORK、Dispatch::Source::PROC_EXEC、Dispatch::Source::PROC_SIGNAL のいずれか |
Dispatch::Source::SIGNAL | シグナルの番号 |
Dispatch::Source::READ | 読み込み可能なバイト数 |
1 2 3 4 5 6 |
|
Dispatch::Source#<<
Dispatch::Source::DATA_ADD と Dispatch::Source::DATA_OR を指定した Dispatch Source で使用します。指定したデータを Dispatch Source の block へ送信します。GCD API の dispatch_source_get_data
に相当します。
- << data