Class: Wisper::GlobalListeners
- Inherits:
-
Object
- Object
- Wisper::GlobalListeners
- Includes:
- Singleton
- Defined in:
- lib/wisper/global_listeners.rb
Class Method Summary collapse
- .clear ⇒ Object
- .listeners ⇒ Object
- .registrations ⇒ Object
- .subscribe(*listeners) ⇒ Object
- .unsubscribe(*listeners) ⇒ Object
Instance Method Summary collapse
- #clear ⇒ Object
-
#initialize ⇒ GlobalListeners
constructor
A new instance of GlobalListeners.
- #listeners ⇒ Object
- #registrations ⇒ Object
- #subscribe(*listeners) ⇒ Object
- #unsubscribe(*listeners) ⇒ Object
Constructor Details
#initialize ⇒ GlobalListeners
Returns a new instance of GlobalListeners.
11 12 13 14 |
# File 'lib/wisper/global_listeners.rb', line 11 def initialize @registrations = Set.new @mutex = Mutex.new end |
Class Method Details
.clear ⇒ Object
64 65 66 |
# File 'lib/wisper/global_listeners.rb', line 64 def self.clear instance.clear end |
.listeners ⇒ Object
60 61 62 |
# File 'lib/wisper/global_listeners.rb', line 60 def self.listeners instance.listeners end |
.registrations ⇒ Object
56 57 58 |
# File 'lib/wisper/global_listeners.rb', line 56 def self.registrations instance.registrations end |
.subscribe(*listeners) ⇒ Object
48 49 50 |
# File 'lib/wisper/global_listeners.rb', line 48 def self.subscribe(*listeners) instance.subscribe(*listeners) end |
.unsubscribe(*listeners) ⇒ Object
52 53 54 |
# File 'lib/wisper/global_listeners.rb', line 52 def self.unsubscribe(*listeners) instance.unsubscribe(*listeners) end |
Instance Method Details
#clear ⇒ Object
44 45 46 |
# File 'lib/wisper/global_listeners.rb', line 44 def clear with_mutex { @registrations.clear } end |
#listeners ⇒ Object
40 41 42 |
# File 'lib/wisper/global_listeners.rb', line 40 def listeners registrations.map(&:listener).freeze end |
#registrations ⇒ Object
36 37 38 |
# File 'lib/wisper/global_listeners.rb', line 36 def registrations with_mutex { @registrations } end |
#subscribe(*listeners) ⇒ Object
16 17 18 19 20 21 22 23 24 25 |
# File 'lib/wisper/global_listeners.rb', line 16 def subscribe(*listeners) = listeners.last.is_a?(Hash) ? listeners.pop : {} with_mutex do listeners.each do |listener| @registrations << ObjectRegistration.new(listener, ) end end self end |
#unsubscribe(*listeners) ⇒ Object
27 28 29 30 31 32 33 34 |
# File 'lib/wisper/global_listeners.rb', line 27 def unsubscribe(*listeners) with_mutex do @registrations.delete_if do |registration| listeners.include?(registration.listener) end end self end |