![show/hide quicksearch [+]](../images/find.png)
A NotifyTemplateEntry is returned by Rinda::TupleSpace#notify and is notified of TupleSpace changes. You may receive either your subscribed event or the ‘close’ event when iterating over notifications.
See TupleSpace#notify_event for valid notification types.
ts = Rinda::TupleSpace.new observer = ts.notify 'write', [nil] Thread.start do observer.each { |t| p t } end 3.times { |i| ts.write [i] }
Outputs:
['write', [0]] ['write', [1]] ['write', [2]]
Creates a new NotifyTemplateEntry
that watches place for +event+s that match tuple.
 
               # File rinda/tuplespace.rb, line 245
def initialize(place, event, tuple, expires=nil)
  ary = [event, Rinda::Template.new(tuple)]
  super(ary, expires)
  @queue = Thread::Queue.new
  @done = false
end
             
            Yields event/tuple pairs until this NotifyTemplateEntry expires.
 
               # File rinda/tuplespace.rb, line 273
def each # :yields: event, tuple
  while !@done
    it = pop
    yield(it)
  end
rescue
ensure
  cancel
end
             
            Called by TupleSpace to notify this NotifyTemplateEntry of a new event.
 
               # File rinda/tuplespace.rb, line 255
def notify(ev)
  @queue.push(ev)
end
             
            Retrieves a notification. Raises RequestExpiredError when this NotifyTemplateEntry expires.
 
               # File rinda/tuplespace.rb, line 263
def pop
  raise RequestExpiredError if @done
  it = @queue.pop
  @done = true if it[0] == 'close'
  return it
end