def receive(element)
while @threadBlocks.size==0 && @filters.size==0
sleep 0.1
end
Jabber::DEBUG && puts("RECEIVED:\n#{element.to_s}")
@threadBlocks.each do |thread, proc|
begin
proc.call(element)
if element.element_consumed?
@threadBlocks.delete(thread)
thread.wakeup if thread.alive?
return
end
rescue Exception => error
puts error.to_s
puts error.backtrace.join("\n")
end
end
@filters.each_value do |proc|
begin
proc.call(element)
return if element.element_consumed?
rescue Exception => error
puts error.to_s
puts error.backtrace.join("\n")
end
end
end