This is a default queue implementation that ships with Notifications. It just pushes events to all registered log subscribers.
This class is thread safe. All methods are reentrant.
Methods
- F
- L
- N
- P
- S
- U
- W
Included Modules
- Mutex_m
Class Public methods
new()
Link
Instance Public methods
finish(name, id, payload, listeners = listeners_for(name))
Link
listeners_for(name)
Link
# File activesupport/lib/active_support/notifications/fanout.rb, line 53 def listeners_for(name) # this is correctly done double-checked locking (Concurrent::Map's lookups have volatile semantics) @listeners_for[name] || synchronize do # use synchronisation when accessing @subscribers @listeners_for[name] ||= @subscribers.select { |s| s.subscribed_to?(name) } end end
listening?(name)
Link
publish(name, *args)
Link
start(name, id, payload)
Link
subscribe(pattern = nil, block = Proc.new)
Link
unsubscribe(subscriber_or_name)
Link
# File activesupport/lib/active_support/notifications/fanout.rb, line 28 def unsubscribe(subscriber_or_name) synchronize do case subscriber_or_name when String @subscribers.reject! { |s| s.matches?(subscriber_or_name) } else @subscribers.delete(subscriber_or_name) end @listeners_for.clear end end