module DontStallMyProcess::ProxyRegistry

Public Instance Methods

each_proxy(pid, &block) click to toggle source
# File lib/dont-stall-my-process/proxy_registry.rb, line 25
def each_proxy(pid, &block)
  @proxies[pid].dup.values.each(&block)
end
register(pid, key, object) click to toggle source
# File lib/dont-stall-my-process/proxy_registry.rb, line 11
def register(pid, key, object)
  @proxies[pid][key] = object
end
setup_proxy_registry(pid, &block) click to toggle source
# File lib/dont-stall-my-process/proxy_registry.rb, line 3
def setup_proxy_registry(pid, &block)
  @empty_handler    ||= {}
  @empty_handler[pid] = block

  @proxies          ||= {}
  @proxies[pid]       = {}
end
unregister(pid, key) { |proxies| ... } click to toggle source
# File lib/dont-stall-my-process/proxy_registry.rb, line 15
def unregister(pid, key)
  if @proxies[pid].key?(key) && block_given?
    yield @proxies[pid]
  end
  @proxies[pid].delete(key)

  # Check if all proxies are gone now and call the process.
  @empty_handler[pid].call if @proxies[pid].empty?
end