This is a default queue implementation that ships with Notifications. It just pushes events to all registered log subscribers.
Methods
- L
- N
- P
- S
- U
- W
Class Public methods
Source: show
# File activesupport/lib/active_support/notifications/fanout.rb, line 6 def initialize @subscribers = [] @listeners_for = {} end
Instance Public methods
Source: show
# File activesupport/lib/active_support/notifications/fanout.rb, line 28 def listeners_for(name) @listeners_for[name] ||= @subscribers.select { |s| s.subscribed_to?(name) } end
Source: show
# File activesupport/lib/active_support/notifications/fanout.rb, line 32 def listening?(name) listeners_for(name).any? end
Source: show
# File activesupport/lib/active_support/notifications/fanout.rb, line 24 def publish(name, *args) listeners_for(name).each { |s| s.publish(name, *args) } end
Source: show
# File activesupport/lib/active_support/notifications/fanout.rb, line 11 def subscribe(pattern = nil, block = Proc.new) subscriber = Subscriber.new(pattern, block).tap do |s| @subscribers << s end @listeners_for.clear subscriber end
Source: show
# File activesupport/lib/active_support/notifications/fanout.rb, line 19 def unsubscribe(subscriber) @subscribers.reject! {|s| s.matches?(subscriber)} @listeners_for.clear end
This is a sync queue, so there is no waiting.
Source: show
# File activesupport/lib/active_support/notifications/fanout.rb, line 37 def wait end