class PubSub::Hash

Public Class Methods

new() click to toggle source
# File lib/pub_sub/hash.rb, line 7
def initialize
  @container = ::RequestStore.store[:hash] = {}
end

Public Instance Methods

pub(event, args={}) click to toggle source
# File lib/pub_sub/hash.rb, line 11
def pub(event, args={})
  iterable_subscriber_list = @container[event]
  return false unless iterable_subscriber_list

  clazzes = retrieve_klasses(iterable_subscriber_list)
  fan_out(clazzes, args)
end
sub(event, klazz_name) click to toggle source
# File lib/pub_sub/hash.rb, line 19
def sub(event, klazz_name)
  mutex = Mutex.new

  mutex.synchronize do
    @container[event] = [] unless @container[event]
    @container[event] << klazz_name unless @container[event].include?(klazz_name)
  end
  true
end
unsub(event, klazz_name) click to toggle source
# File lib/pub_sub/hash.rb, line 29
def unsub(event, klazz_name)
  mutex = Mutex.new

  mutex.synchronize do
    return false unless @container[event]

    @container[event].delete(klazz_name)
    true
  end
end