notify(event, pattern, sec = nil) -> Rinda::NotifyTemplateEntry
[permalink][rdoc][edit]-
event で指定した種類のイベントの監視を開始します。
イベントを生じさせたタプルがpattern にマッチした場合にのみ報告されます。
イベントが生じた場合、このメソッドの返り値の Rinda::NotifyTemplateEntry を経由し、 Rinda::NotifyTemplateEntry#each を用いて報告を受け取ります。
sec で監視期間を秒数で指定できます。 nil で無限に監視し続けます。
event として以下の3つを指定できます。
- 'write' : タプルが追加された
- 'take' : タプルが take された
- 'delete' : タプルが有効期限切れや上書きされたなどでタプルスペースから削除された
これで指定したイベントに加えて、有効期限切れによって監視が終了した場合には 'close' イベントが報告されます。
pattern で指定できるパターンについては rinda/rinda/タプルのパターンについて を参照してください。
- [PARAM] event:
- 監視対象のイベント(文字列)
- [PARAM] pattern:
- 監視対象となるタプルのパターン
- [PARAM] sec:
- 監視期間の長さ(秒数)
例
require 'rinda/tuplespace' tuplespace = Rinda::TupleSpace.new observer = tuplespace.notify("write", ["xyz", nil, nil]) Therad.new do observer.each{|event, tuple| p event, tuple } end tuplespace.write(["xyz", 0, 1]) tuplespace.write(["pqr", 0, 1]) tuplespace.write(["xyz", 4, 2])