instance method Rinda::TupleSpace#notify

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])