Sha256: 532231778af5d3a1bd1c94b01fcf3d64df6d576d1640b32e994a0e78353f2ae8
Contents?: true
Size: 1.43 KB
Versions: 5
Compression:
Stored size: 1.43 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) @ami_client = new_ami_stream @translator = Translator::Asterisk.new @ami_client, self super() end def run start_ami_client raise DisconnectedError end def stop translator.terminate 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
5 entries across 5 versions & 1 rubygems