Sha256: 7a5e34159081064ab5445be48156f75018325d9a0711af74885eb3adddebcea2

Contents?: true

Size: 1.73 KB

Versions: 31

Compression:

Stored size: 1.73 KB

Contents

# frozen_string_literal: true

module RubyRabbitmqJanus
  module Janus
    # Define an module for manipulate messages between apps and Janus
    module Transactions
      # @author VAILLANT Jeremy <jeremy.vaillant@dazzl.tv>
      #
      # # Manage a transactions
      #
      # This class work with Janus and send a series of message
      class Transaction
        # Initialize a transaction
        #
        # @param [Fixnum] session
        #   Use a session identifier for created message
        def initialize(session)
          @rabbit = RubyRabbitmqJanus::Rabbit::Connect.new
          @session = session
          @publisher = @exclusive = nil
        end

        private

        attr_reader :rabbit, :session, :response, :handle, :publisher,
                    :exclusive

        def choose_queue
          chan = @rabbit.channel
          @publisher = if @exclusive
                         ::Log.debug \
                           'Choose an queue Exclusive : ampq.gen-xxx'
                         Rabbit::Publisher::Exclusive.new(chan, '')
                       else
                         ::Log.debug \
                           'Choose an queue non Exclusive : to-janus'
                         Rabbit::Publisher::NonExclusive.new(chan)
                       end
        end

        def send_a_message
          ::Log.info 'Publish a message ...'
          response = read_response(@publisher.publish(yield))
          Janus::Responses::Standard.new(response)
        end

        def read_response(publish)
          @exclusive ? publish : {}
        end
      end
    end
  end
end

require 'rrj/janus/transactions/session'
require 'rrj/janus/transactions/handle'
require 'rrj/janus/transactions/admin'
require 'rrj/janus/transactions/rspec'

Version data entries

31 entries across 31 versions & 1 rubygems

Version Path
ruby_rabbitmq_janus-4.0.1 lib/rrj/janus/transactions/transaction.rb
ruby_rabbitmq_janus-4.0.1.pre.1265973744 lib/rrj/janus/transactions/transaction.rb
ruby_rabbitmq_janus-4.0.1.pre.1265506307 lib/rrj/janus/transactions/transaction.rb
ruby_rabbitmq_janus-4.0.1.pre.1265140558 lib/rrj/janus/transactions/transaction.rb
ruby_rabbitmq_janus-4.0.0 lib/rrj/janus/transactions/transaction.rb
ruby_rabbitmq_janus-4.0.0.pre.1001345090 lib/rrj/janus/transactions/transaction.rb
ruby_rabbitmq_janus-4.0.0.pre.1001181479 lib/rrj/janus/transactions/transaction.rb
ruby_rabbitmq_janus-4.0.0.pre.1001132533 lib/rrj/janus/transactions/transaction.rb
ruby_rabbitmq_janus-4.0.0.pre.1001107243 lib/rrj/janus/transactions/transaction.rb
ruby_rabbitmq_janus-4.0.0.pre.1001043172 lib/rrj/janus/transactions/transaction.rb
ruby_rabbitmq_janus-4.0.0.pre.949167646 lib/rrj/janus/transactions/transaction.rb
ruby_rabbitmq_janus-4.0.0.pre.946892338 lib/rrj/janus/transactions/transaction.rb
ruby_rabbitmq_janus-4.0.0.pre.946565704 lib/rrj/janus/transactions/transaction.rb
ruby_rabbitmq_janus-4.0.0.pre.939149205 lib/rrj/janus/transactions/transaction.rb
ruby_rabbitmq_janus-4.0.0.pre.939137013 lib/rrj/janus/transactions/transaction.rb
ruby_rabbitmq_janus-4.0.0.pre.939133437 lib/rrj/janus/transactions/transaction.rb
ruby_rabbitmq_janus-4.0.0.pre.939119110 lib/rrj/janus/transactions/transaction.rb
ruby_rabbitmq_janus-4.0.0.pre.939113634 lib/rrj/janus/transactions/transaction.rb
ruby_rabbitmq_janus-4.0.0.pre.850041590 lib/rrj/janus/transactions/transaction.rb
ruby_rabbitmq_janus-3.0.1 lib/rrj/janus/transactions/transaction.rb