Class: RubyRabbitmqJanus::RRJ

Inherits:
Object
  • Object
show all
Defined in:
lib/rrj/init.rb

Overview

# RubyRabbitmqJanus - RRJ

Initialize RRJ gem and create automatically a session with janus and sending a keepalive message. The Time To Live is configured in yaml configuration file config/default.yml or if you a customize config in config/ruby-rabbitmq-janus.yml.

Direct Known Subclasses

RRJAdmin, RRJTask

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeRRJ

Return a new instance of RubyRabbitmqJanus.

Examples:

Create a instance to this gem

@rrj = RubyRabbitmqJanus::RRJ.new
=> #<RubyRabbitmqJanus::RRJ:0x007 @session=123>


40
41
42
43
44
# File 'lib/rrj/init.rb', line 40

def initialize
  @option = Tools::Option.new
rescue => error
  raise Errors::RRJ::InstanciateGem, error
end

Instance Attribute Details

#sessionFixnum (readonly)

Return an session number created when this gem is instanciate. It’s janus who creates the number of the session.

Returns:

  • (Fixnum)

    Return an session number created when this gem is instanciate. It’s janus who creates the number of the session.



32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
# File 'lib/rrj/init.rb', line 32

class RRJ
  attr_reader :session

  # Return a new instance of RubyRabbitmqJanus.
  #
  # @example Create a instance to this gem
  #   @rrj = RubyRabbitmqJanus::RRJ.new
  #   => #<RubyRabbitmqJanus::RRJ:0x007 @session=123>
  def initialize
    @option = Tools::Option.new
  rescue => error
    raise Errors::RRJ::InstanciateGem, error
  end

  # Start a transaction with Janus. Request use session_id information.
  #
  # @param [Boolean] exclusive Choose if message is storage in exclusive queue
  # @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.0.0
  def start_transaction(exclusive = true, options = {})
    session = @option.use_current_session?(options)
    transaction = Janus::Transactions::Session.new(exclusive, session)
    transaction.connect { yield(transaction) }
  rescue
    raise Errors::RRJ::StartTransaction.new(exclusive, options)
  end

  # Start a transaction with Janus. Request used session_id/handle_id
  # information.
  #
  # @param [Boolean] exclusive Choose if message is storage in exclusive queue
  # @param [Hash] options
  #   Give a session number for use another session in Janus
  #
  # @note Use transaction.detach for closing handle in Janus
  #
  # @example Send request trickles for exclusive queue
  #   @cde = { 'sdpMid' => '...', sdpMLineIndex => 0, 'candidate' => '...' }
  #   @rrj.start_transaction_handle do |transaction|
  #     transaction.publish_message('base::trickle', @cde)
  #   end
  #
  # @example Send request trickles for non exclusive queue
  #   @cde = { 'sdpMid' => '...', sdpMLineIndex => 0, 'candidate' => '...' }
  #   @rrj.start_transaction_handle(false) do |transaction|
  #     transaction.publish_message('base::trickle', @cde)
  #   end
  #
  # @return [Fixnum] Handle used for transaction
  #
  # @since 2.0.0
  def start_transaction_handle(exclusive = true, options = {})
    session = @option.use_current_session?(options)
    handle = @option.use_current_handle?(options)
    instance = options['instance'] || 1
    transaction = Janus::Transactions::Handle.new(exclusive,
                                                  session,
                                                  handle,
                                                  instance)
    transaction.connect { yield(transaction) }
  rescue
    raise Errors::RRJ::StartTransactionHandle, exclusive, options
  end

  # Delete all resources to JanusInstance reference.
  # Warning: All data in database and Janus Instance is delete
  #
  # @since 2.1.0
  def cleanup_connection
    Models::JanusInstance.destroys
  rescue
    raise Errors::RRJ::CleanupConnection
  end

  private

  attr_reader :option
end

Instance Method Details

#cleanup_connectionObject

Delete all resources to JanusInstance reference. Warning: All data in database and Janus Instance is delete

Since:

  • 2.1.0



107
108
109
110
111
# File 'lib/rrj/init.rb', line 107

def cleanup_connection
  Models::JanusInstance.destroys
rescue
  raise Errors::RRJ::CleanupConnection
end

#start_transaction(exclusive = true, options = {}) ⇒ Object

Start a transaction with Janus. Request use session_id information.

Examples:

Get Janus information

@rrj.start_transaction do |transaction|
  response = transaction.publish_message('base::info').to_hash
end

Parameters:

  • exclusive (Boolean) (defaults to: true)

    Choose if message is storage in exclusive queue

  • options (Hash) (defaults to: {})

    Give a session number for use another session in Janus

Since:

  • 2.0.0



58
59
60
61
62
63
64
# File 'lib/rrj/init.rb', line 58

def start_transaction(exclusive = true, options = {})
  session = @option.use_current_session?(options)
  transaction = Janus::Transactions::Session.new(exclusive, session)
  transaction.connect { yield(transaction) }
rescue
  raise Errors::RRJ::StartTransaction.new(exclusive, options)
end

#start_transaction_handle(exclusive = true, options = {}) ⇒ Fixnum

Note:

Use transaction.detach for closing handle in Janus

Start a transaction with Janus. Request used session_id/handle_id information.

Examples:

Send request trickles for exclusive queue

@cde = { 'sdpMid' => '...', sdpMLineIndex => 0, 'candidate' => '...' }
@rrj.start_transaction_handle do |transaction|
  transaction.publish_message('base::trickle', @cde)
end

Send request trickles for non exclusive queue

@cde = { 'sdpMid' => '...', sdpMLineIndex => 0, 'candidate' => '...' }
@rrj.start_transaction_handle(false) do |transaction|
  transaction.publish_message('base::trickle', @cde)
end

Parameters:

  • exclusive (Boolean) (defaults to: true)

    Choose if message is storage in exclusive queue

  • options (Hash) (defaults to: {})

    Give a session number for use another session in Janus

Returns:

  • (Fixnum)

    Handle used for transaction

Since:

  • 2.0.0



90
91
92
93
94
95
96
97
98
99
100
101
# File 'lib/rrj/init.rb', line 90

def start_transaction_handle(exclusive = true, options = {})
  session = @option.use_current_session?(options)
  handle = @option.use_current_handle?(options)
  instance = options['instance'] || 1
  transaction = Janus::Transactions::Handle.new(exclusive,
                                                session,
                                                handle,
                                                instance)
  transaction.connect { yield(transaction) }
rescue
  raise Errors::RRJ::StartTransactionHandle, exclusive, options
end