Sha256: 026be994d1ff3b20b478d8c8c3bece492fda2f5d15f02446b0efc4e5fe06203e
Contents?: true
Size: 1.5 KB
Versions: 1
Compression:
Stored size: 1.5 KB
Contents
# encoding: utf-8 require 'celluloid' require 'singleton' require 'adhearsion/version' if Gem::Version.new(Adhearsion::VERSION) < Gem::Version.new('3.0.0') # Backport https://github.com/adhearsion/adhearsion/commit/8c6855612c70dd822fb4e4c2006d1fdc9d05fe23 to avoid confusion around dead calls require 'adhearsion/call' class Adhearsion::Call::ActorProxy < Celluloid::ActorProxy def active? alive? && super rescue Adhearsion::Call::ExpiredError false end end end %w( call_queue plugin ).each { |f| require "electric_slide/#{f}" } class ElectricSlide include Singleton def initialize @mutex = Mutex.new @queues = {} end def create(name, queue_class = nil, *args) fail "Queue with name #{name} already exists!" if @queues.key? name queue_class ||= CallQueue @queues[name] = queue_class.work *args # Return the queue instance or current actor get_queue name end def get_queue!(name) fail "Queue #{name} not found!" unless @queues.key?(name) get_queue name end def get_queue(name) queue = @queues[name] if queue.respond_to? :actors # In case we have a Celluloid supervision group, get the current actor queue.actors.first else queue end end def shutdown_queue(name) queue = get_queue name queue.terminate @queues.delete name end def self.method_missing(method, *args, &block) @@mutex ||= Mutex.new @@mutex.synchronize do instance.send method, *args, &block end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
electric_slide-0.2.0 | lib/electric_slide.rb |