Sha256: 673c0c4fc2eacbd6c92afb04b26e5a900861d8d46e2a02028e3bace949040bd6

Contents?: true

Size: 936 Bytes

Versions: 3

Compression:

Stored size: 936 Bytes

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 = {})
        @ami_client = RubyAMI::Stream.new options[:host], options[:port], options[:username], options[:password], ->(event) { translator.async.handle_ami_event event }, pb_logger
        @translator = Translator::Asterisk.new @ami_client, self, options[:media_engine]
        super()
      end

      def run
        ami_client.async.run
        Celluloid::Actor.join(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
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
punchblock-1.9.4 lib/punchblock/connection/asterisk.rb
punchblock-1.9.3 lib/punchblock/connection/asterisk.rb
punchblock-1.9.2 lib/punchblock/connection/asterisk.rb