Class: RubyRabbitmqJanus::RRJ
- Inherits:
-
Object
- Object
- RubyRabbitmqJanus::RRJ
- 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.
Instance Attribute Summary collapse
-
#session ⇒ Fixnum
readonly
Return an session number created when this gem is instanciate.
Instance Method Summary collapse
-
#cleanup_connection ⇒ Object
Delete all resources to JanusInstance reference.
-
#initialize ⇒ RRJ
constructor
Return a new instance of RubyRabbitmqJanus.
-
#start_transaction(exclusive = true, options = {}) ⇒ Object
Start a transaction with Janus.
-
#start_transaction_handle(exclusive = true, options = {}) ⇒ Fixnum
Start a transaction with Janus.
Constructor Details
#initialize ⇒ RRJ
Return a new instance of RubyRabbitmqJanus.
40 41 42 43 44 45 46 |
# File 'lib/rrj/init.rb', line 40 def initialize @option = Tools::Option.new ObjectSpace.define_finalizer(self, RRJ.method(:delete).to_proc) \ unless File.basename($PROGRAM_NAME).eql?('rspec') rescue => error raise Errors::RRJ::InstanciateGem, error end |
Instance Attribute Details
#session ⇒ Fixnum (readonly)
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 117 118 119 120 121 122 123 124 125 126 127 |
# 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 ObjectSpace.define_finalizer(self, RRJ.method(:delete).to_proc) \ unless File.basename($PROGRAM_NAME).eql?('rspec') 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, = {}) session = @option.use_current_session?() transaction = Janus::Transactions::Session.new(exclusive, session) transaction.connect { yield(transaction) } rescue raise Errors::RRJ::StartTransaction.new(exclusive, ) 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, = {}) session = @option.use_current_session?() handle = @option.use_current_handle?() instance = ['instance'] || 1 transaction = Janus::Transactions::Handle.new(exclusive, session, handle, instance) transaction.connect { yield(transaction) } rescue raise Errors::RRJ::StartTransactionHandle, exclusive, 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 def self.delete(_id) Tools::Cluster.instance.sessions.each do |janus_instance| array_ji = "#{janus_instance.instance},#{janus_instance.session}" `rake rrj:delete:one_instance[#{array_ji}]` end end private_class_method :delete end |
Instance Method Details
#cleanup_connection ⇒ Object
Delete all resources to JanusInstance reference. Warning: All data in database and Janus Instance is delete
109 110 111 112 113 |
# File 'lib/rrj/init.rb', line 109 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.
60 61 62 63 64 65 66 |
# File 'lib/rrj/init.rb', line 60 def start_transaction(exclusive = true, = {}) session = @option.use_current_session?() transaction = Janus::Transactions::Session.new(exclusive, session) transaction.connect { yield(transaction) } rescue raise Errors::RRJ::StartTransaction.new(exclusive, ) end |
#start_transaction_handle(exclusive = true, options = {}) ⇒ Fixnum
Use transaction.detach for closing handle in Janus
Start a transaction with Janus. Request used session_id/handle_id information.
92 93 94 95 96 97 98 99 100 101 102 103 |
# File 'lib/rrj/init.rb', line 92 def start_transaction_handle(exclusive = true, = {}) session = @option.use_current_session?() handle = @option.use_current_handle?() instance = ['instance'] || 1 transaction = Janus::Transactions::Handle.new(exclusive, session, handle, instance) transaction.connect { yield(transaction) } rescue raise Errors::RRJ::StartTransactionHandle, exclusive, end |