Sha256: b93a56d0d06ca9f29bed69881265e2a693ecabae0f8d30f5fe922cfc1841ae3d
Contents?: true
Size: 1.06 KB
Versions: 5
Compression:
Stored size: 1.06 KB
Contents
require 'singleton' module Wisper class GlobalListeners include Singleton attr_reader :mutex private :mutex def initialize @registrations = Set.new @mutex = Mutex.new end def add(listener, options = {}) with_mutex { @registrations << ObjectRegistration.new(listener, options) } self end def registrations with_mutex { @registrations } end def listeners registrations.map(&:listener).freeze end def clear with_mutex { @registrations.clear } end def self.add(listener, options = {}) instance.add(listener, options) end def self.registrations instance.registrations end def self.listeners instance.listeners end def self.clear instance.clear end # remain backwards compatible def self.add_listener(listener, options = {}) warn "[DEPRECATION] use `add` instead of `add_listener`" add(listener, options) end private def with_mutex mutex.synchronize { yield } end end end
Version data entries
5 entries across 5 versions & 1 rubygems