class Cassie::Subscribers
Thread safe list of subscribers. Each subscriber must respond to the :call method.
Public Class Methods
new(parent_subscribers = nil)
click to toggle source
# File lib/cassie/subscribers.rb, line 5 def initialize(parent_subscribers = nil) @array = [].freeze @lock = Mutex.new @parent_subscribers = parent_subscribers end
Public Instance Methods
add(subscriber)
click to toggle source
# File lib/cassie/subscribers.rb, line 11 def add(subscriber) @lock.synchronize do new_array = @array.dup new_array << subscriber @array = new_array end end
Also aliased as: <<
clear()
click to toggle source
# File lib/cassie/subscribers.rb, line 31 def clear @array = [] end
each(&block)
click to toggle source
# File lib/cassie/subscribers.rb, line 43 def each(&block) @array.each(&block) @parent_subscribers&.each(&block) end
empty?()
click to toggle source
# File lib/cassie/subscribers.rb, line 39 def empty? size == 0 end
include?(subscriber)
click to toggle source
# File lib/cassie/subscribers.rb, line 48 def include?(subscriber) @array.include?(subscriber) end
remove(subscriber)
click to toggle source
# File lib/cassie/subscribers.rb, line 20 def remove(subscriber) removed = nil @lock.synchronize do new_array = @array.dup removed = new_array.delete(subscriber) @array = new_array end removed end
Also aliased as: delete
size()
click to toggle source
# File lib/cassie/subscribers.rb, line 35 def size @array.size + (@parent_subscribers ? @parent_subscribers.size : 0) end