Sha256: c57c05b6d68240d4566bd5407c2f30552699474627aab65ca2f537f8246a6e07

Contents?: true

Size: 1.83 KB

Versions: 6

Compression:

Stored size: 1.83 KB

Contents

# frozen_string_literal: true

# :reek:TooManyStatements
# :reek:BooleanParameter
# :reek:UtilityFunction

module RubyRabbitmqJanus
  # @author VAILLANT jeremy <jeremy.vaillant@dazl.tv>

  # # RubyRabbitmqJanus - Task
  #
  # This class is used with rake task.
  class RRJTask < RRJ
    def initialize
      Tools::Config.instance
      Tools::Requests.instance
    rescue
      raise Errors::RRJTask::Initialize
    end

    # Start a transaction with Janus. Request use session_id information.
    #
    # @param [Hash] options
    #   Give a session number for use another session in Janus
    #
    # @example Get Janus information
    #   @rrj.start_transaction do |transaction|
    #     response = transaction.publish_message('base::info').to_hash
    #   end
    #
    # @since 2.1.0
    def start_transaction(options = {})
      transaction = Janus::Transactions::Session.new(true,
                                                     options['session_id'])
      transaction.connect { yield(transaction) }
    rescue
      raise Errors::RRJ::StartTransaction.new(true, options)
    end

    # Create a transaction between apps and janus with a handle
    #
    # @since 2.1.0
    def start_transaction_handle(exclusive = true, options = {})
      janus = session_instance(options)
      handle = 0 # Create always a new handle
      transaction = Janus::Transactions::Handle.new(exclusive,
                                                    janus.session,
                                                    handle,
                                                    janus.instance)
      transaction.connect { yield(transaction) }
    rescue
      raise Errors::RRJTask::StartTransactionHandle.new(exclusive, options)
    end

    private

    def session_instance(options)
      Models::JanusInstance.find_by_instance(options['instance'])
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
ruby_rabbitmq_janus-2.6.0 lib/rrj/task.rb
ruby_rabbitmq_janus-2.6.0.pre.263 lib/rrj/task.rb
ruby_rabbitmq_janus-2.6.0.pre.261 lib/rrj/task.rb
ruby_rabbitmq_janus-2.6.0.pre.260 lib/rrj/task.rb
ruby_rabbitmq_janus-2.6.0.pre.259 lib/rrj/task.rb
ruby_rabbitmq_janus-2.6.0.pre.258 lib/rrj/task.rb