Sha256: 899354d331ab976034cc39c79a413f54a617f0d53af2a3ffe312f73bef78c584
Contents?: true
Size: 1.52 KB
Versions: 1
Compression:
Stored size: 1.52 KB
Contents
# encoding: utf-8 require 'ruby_ami' module Punchblock module Connection class Asterisk < GenericConnection attr_reader :ami_client, :translator attr_accessor :event_handler def initialize(options = {}) @stream_options = options.values_at(:host, :port, :username, :password) @translator_options = options.values_at(:media_engine) @ami_client = new_ami_stream @translator = Translator::Asterisk.new @ami_client, self, *@translator_options super() end def run start_ami_client raise DisconnectedError end def stop translator.async.shutdown ami_client.terminate end def write(command, options) translator.async.execute_command command, options end def handle_event(event) event_handler.call event end def new_ami_stream stream = RubyAMI::Stream.new(*@stream_options, ->(event) { translator.async.handle_ami_event event }, pb_logger) client = (ami_client || RubyAMIStreamProxy.new(stream)) client.stream = stream client end def start_ami_client @ami_client = new_ami_stream unless ami_client.alive? ami_client.async.run Celluloid::Actor.join(ami_client) end end class RubyAMIStreamProxy attr_accessor :stream def initialize(ami) @stream = ami end def method_missing(method, *args, &block) stream.__send__(method, *args, &block) end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
punchblock-2.0.0.beta1 | lib/punchblock/connection/asterisk.rb |