ruby_rabbitmq_janus 1.0.1 → 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a6cd4ddd4d531fad7d95ba9f66a16534d66cd35e
4
- data.tar.gz: 5432f6b8bfa2ef968a03cf6cfd57e841f8965735
3
+ metadata.gz: c75cd0c7c7d224f8c5f3386e7eb847de7ffcecbc
4
+ data.tar.gz: 17fe7cc7dfb933f50fe6293fbd9015f209bae0d9
5
5
  SHA512:
6
- metadata.gz: cd17673a91b51bddc0cca8c0ab788e1bb6d4e5baf601942bcd3df79d23c6f703ed742921d92c5feeb34b47494dfbf0e17cb5cf45f4bfef43605d55f04c7928a6
7
- data.tar.gz: 97e18cb653f2c45a86f06b99f4ec995265c525e23138c5cf79efdc73eb8a2070c1df5f37727a2b6bdf38632203b40e2338eb48d9bfaa62a6fd187fc4c94831e1
6
+ metadata.gz: 07d48d6283589d3adfd76be6820de3bb3508cf565a0e22af174e1704b8eeefdfb8bffca6d7d3afeb904627e92d71ac0af391545a58abe18d3985fae0d8b4ee36
7
+ data.tar.gz: b6704497ca1ed9f0bace2e8f024e6da2a2e4998948a64371a662572aecab6c00a941699e9bbd0a3bc8a16d6f01de39eaa8889e60345df2af3edb3fd8e700377c
@@ -14,7 +14,7 @@ module RubyRabbitmqJanus
14
14
  # @author VAILLANT Jeremy <jeremy.vaillant@dazzl.tv>
15
15
  # Define an error for response initalize
16
16
  class JanusResponseInit < JanusResponse
17
- def initalize(message)
17
+ def initialize(message)
18
18
  super "Error create object : #{message}"
19
19
  end
20
20
  end
@@ -70,7 +70,7 @@ module RubyRabbitmqJanus
70
70
  # @author VAILLANT Jeremy <jeremy.vaillant@dazzl.tv>
71
71
  # Define an error for response data
72
72
  class JanusResponseDataId < JanusResponse
73
- def initalize(message)
73
+ def initialize(message)
74
74
  super "Error Data : #{message}"
75
75
  end
76
76
  end
@@ -15,7 +15,7 @@ module RubyRabbitmqJanus
15
15
  # @author VAILLANT Jeremy <jeremy.vaillant@dazzl.tv>
16
16
  # Define an exception for running_handle
17
17
  class JanusTransactionHandle
18
- def initalize(message)
18
+ def initialize(message)
19
19
  super "[Transaction] Error handle #{message}"
20
20
  end
21
21
  end
data/lib/rrj/info.rb CHANGED
@@ -3,7 +3,7 @@
3
3
  # Define constant to gem.
4
4
  module RubyRabbitmqJanus
5
5
  # Define version to gem
6
- VERSION = '1.0.1'
6
+ VERSION = '1.0.2'
7
7
 
8
8
  # Define a summary description to gem
9
9
  SUMMARY = 'Ruby RabbitMQ Janus'
@@ -21,7 +21,7 @@ module RubyRabbitmqJanus
21
21
  # Define a post install message
22
22
  POST_INSTALL = \
23
23
  "# ====================================================== #\n" \
24
- "# Thanks for installing! #\n" \
24
+ "# Thanks for installing RRJ ! #\n" \
25
25
  "# #{HOMEPAGE}. #\n" \
26
26
  "# ;;;;;;;;;;;:. #\n" \
27
27
  "# ;;;;;;;;;;;;;;;;;; #\n" \
data/lib/rrj/init.rb CHANGED
@@ -17,17 +17,13 @@ module RubyRabbitmqJanus
17
17
  # @!attribute [r] session
18
18
  # :reek:BooleanParameter
19
19
  class RRJ
20
- attr_reader :session
20
+ attr_reader :session, :event
21
21
 
22
22
  # Returns a new instance of RubyRabbitmqJanus
23
- def initialize
24
- Tools::Env.instance
25
- Tools::Log.instance
26
- Tools::Config.instance
27
- Tools::Requests.instance
28
-
29
- @session = Janus::Keepalive.new.session
30
-
23
+ def initialize(listen_queue_classic = true)
24
+ start_instances_tools
25
+ @session = Janus::Keepalive.instance.session
26
+ Janus::Event.instance if listen_queue_classic
31
27
  @transaction = nil
32
28
  rescue => error
33
29
  raise Errors::RRJErrorInit, error
@@ -38,7 +34,7 @@ module RubyRabbitmqJanus
38
34
  # Given a type to request. JSON request writing in 'config/requests/'
39
35
  # @param [Bollean] exclusive
40
36
  # Use an exclusive queue or not
41
- # @exemple Sending an message info
37
+ # @example Sending an message info
42
38
  # RubyRabbitmqJanus::RRJ.new.message_simple('base::info')
43
39
  # #=> {"janus":"server_info","name":"Janus WebRTC Gateway" ... }
44
40
  # @return [RubyRabbitmqJanus::Janus::Response] Give an object response to janus server
@@ -54,7 +50,7 @@ module RubyRabbitmqJanus
54
50
  # @param [Hash] options Options update in request
55
51
  # @param [Bollean] exclusive
56
52
  # Use an exclusive queue or not
57
- # @exemple Sending an message create
53
+ # @example Sending an message create
58
54
  # RubyRabbitmqJanus::RRJ.new.message_session('base::create')
59
55
  # #=> {"janus":"server_info","name":"Janus WebRTC Gateway" ... }
60
56
  # @return [RubyRabbitmqJanus::Janus::Response] Give an object response to janus server
@@ -70,7 +66,7 @@ module RubyRabbitmqJanus
70
66
  # @param [String] type
71
67
  # Given a type to request. JSON request writing in 'config/requests/'
72
68
  # @param [Hash] options Options update in request
73
- # @exemple Sending an message create
69
+ # @example Sending an message create
74
70
  # RubyRabbitmqJanus::RRJ.new.message_admin('admin::sessions')
75
71
  # #=> {"janus":"success","sessions": [12345, 8786567465465, ...] }
76
72
  # @return [RubyRabbitmqJanus::Janus::Response] Give an object response to janus server
@@ -83,35 +79,28 @@ module RubyRabbitmqJanus
83
79
  # Send an message in handle session in current session.
84
80
  # @param [String] type
85
81
  # Given a type to request. JSON request writing in 'config/requests/'
86
- # @param [Hash] options Options update in request
87
- # @param [Bollean] exclusive
88
- # Use an exclusive queue or not
89
- # @exemple Sending an message create
82
+ # @param [Hash] replace Options update in request
83
+ # @param [Hash] add Elements adding to request
84
+ # @example Sending an message create
90
85
  # RubyRabbitmqJanus::RRJ.new.message_session('base::create')
91
86
  # #=> {"janus":"server_info","name":"Janus WebRTC Gateway" ... }
92
87
  # @return [RubyRabbitmqJanus::Janus::Response] Give an object response to janus server
93
88
  def message_handle(type, replace = {}, add = {})
94
89
  options = { 'replace' => replace, 'add' => add }
95
- Tools::Log.instance.debug "Transaction : #{@transaction}"
96
90
  @transaction.publish_message_handle(type, options)
97
91
  end
98
92
 
99
- # Manage a transaction simple. Just for create element or destroy
100
- # def transaction_simple(type, replace = {}, add = {})
101
- # options = { 'replace' => replace, 'add' => add }
102
- # Janus::Transaction.new(@session).handle_running_simple(type, options)
103
- # end
104
-
105
- # Define an handle and establish connection with janus
93
+ # Define an handle transaction and establish connection with janus
106
94
  def start_handle(exclusive = false)
107
- @transaction = Janus::TransactionHandle.new(@session)
95
+ @transaction ||= Janus::TransactionHandle.new(@session)
108
96
  @transaction.handle_connect(exclusive) { yield }
109
97
  rescue => error
110
98
  raise Errors::RRJErrorHandle, error
111
99
  end
112
100
 
101
+ # Define an handle admin transaction and establish connection with janus
113
102
  def start_handle_admin
114
- @transaction = Janus::TransactionAdmin.new(@session)
103
+ @transaction ||= Janus::TransactionAdmin.new(@session)
115
104
  @transaction.handle_connect { yield }
116
105
  rescue => error
117
106
  raise Errors::RRJErrorHandle, error
@@ -124,7 +113,7 @@ module RubyRabbitmqJanus
124
113
 
125
114
  # Start an short transaction, this queue is not exclusive
126
115
  def handle_message_simple(type, replace = {}, add = {})
127
- @transaction = Janus::TransactionHandle.new(@session)
116
+ @transaction ||= Janus::TransactionHandle.new(@session)
128
117
  @transaction.handle_connect_and_stop(false) do
129
118
  message_handle(type, replace, add).for_plugin
130
119
  end
@@ -134,6 +123,16 @@ module RubyRabbitmqJanus
134
123
 
135
124
  private
136
125
 
126
+ attr_accessor :transaction
127
+
128
+ # Start singleton instances
129
+ def start_instances_tools
130
+ Tools::Env.instance
131
+ Tools::Log.instance
132
+ Tools::Config.instance
133
+ Tools::Requests.instance
134
+ end
135
+
137
136
  # Return a current session if not specified
138
137
  def use_current_session?(option)
139
138
  { 'session_id' => @session } unless option.key?('session_id')
@@ -1,13 +1,10 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'rrj/janus/keepalive'
3
+ require 'rrj/janus/threads/thread'
4
4
  require 'rrj/janus/message'
5
5
  require 'rrj/janus/admin'
6
6
  require 'rrj/janus/response'
7
- require 'rrj/janus/transaction'
8
- require 'rrj/janus/transaction_session'
9
- require 'rrj/janus/transaction_handle'
10
- require 'rrj/janus/transaction_admin'
7
+ require 'rrj/janus/transactions/transaction'
11
8
 
12
9
  module RubyRabbitmqJanus
13
10
  # Module interaction with Janus
@@ -0,0 +1,49 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RubyRabbitmqJanus
4
+ # @author VAILLANT Jeremy <jeremy.vaillant@dazzl.tv>
5
+ module Janus
6
+ # For listen standard queue ("from-janus" by default)
7
+ class Event < OneThread
8
+ include Singleton
9
+
10
+ # Initialize Event object. Is used for listen an standard out queue to Janus
11
+ def initialize
12
+ Tools::Log.instance.debug 'Start listen events in from-janus queue'
13
+ @response = nil
14
+ super
15
+ listen_live
16
+ end
17
+
18
+ # Start listen queue and return each message
19
+ def listen
20
+ lock.synchronize { condition.wait(lock) }
21
+ @response
22
+ end
23
+
24
+ private
25
+
26
+ # Listen q queue "from-janus"
27
+ def listen_live
28
+ start_thread
29
+ end
30
+
31
+ # Intialize an listen to queue
32
+ def initialize_thread
33
+ start_transaction
34
+ rescue Interrupt
35
+ Tools::Log.instance.info 'Stop to listen standard queue'
36
+ rabbit.close
37
+ end
38
+
39
+ # Start a transaction with Rabbit an Janus
40
+ def start_transaction
41
+ rabbit.transaction_long do
42
+ publisher = Rabbit::Publisher::Listener.new(rabbit)
43
+ @response = publisher.listen_events
44
+ lock.synchronize { condition.signal }
45
+ end
46
+ end
47
+ end
48
+ end
49
+ end
@@ -4,20 +4,20 @@ module RubyRabbitmqJanus
4
4
  module Janus
5
5
  # @author VAILLANT Jeremy <jeremy.vaillant@dazzl.tv>
6
6
  # Manage sending keepalive message
7
- # :reek:TooManyInstanceVariables { max_instance_variables: 6 }
8
- class Keepalive
7
+ class Keepalive < OneThread
8
+ include Singleton
9
+
9
10
  # Initalize a keepalive message
10
11
  def initialize
11
- @response, @publish = nil
12
- @rabbit = Rabbit::Connect.new
13
- @lock = Mutex.new
14
- @condition = ConditionVariable.new
12
+ Tools::Log.instance.debug 'Create an session for keepalive'
13
+ super
14
+ @publish = @response = nil
15
15
  session_live
16
16
  end
17
17
 
18
18
  # Return an number session created
19
19
  def session
20
- @lock.synchronize { @condition.wait(@lock) }
20
+ lock.synchronize { condition.wait(lock) }
21
21
  @response.session
22
22
  end
23
23
 
@@ -25,26 +25,23 @@ module RubyRabbitmqJanus
25
25
 
26
26
  # Send to regular interval a message keepalive
27
27
  def session_live
28
- Thread.new do
29
- Tools::Log.instance.debug 'Create an session for keepalive'
30
- initialize_thread
31
- end
28
+ start_thread
32
29
  end
33
30
 
34
31
  # Initialize an session with janus and start a keepalive transaction
35
32
  def initialize_thread
36
- @rabbit.start
33
+ rabbit.start
37
34
  @response = session_start
38
- @lock.synchronize { @condition.signal }
35
+ lock.synchronize { condition.signal }
39
36
  session_keepalive(ttl)
40
- @rabbit.close
37
+ rabbit.close
41
38
  end
42
39
 
43
40
  # Star an session janus
44
41
  def session_start
45
42
  msg_create = Janus::Message.new 'base::create'
46
- @publish = Rabbit::PublishExclusive.new(@rabbit.channel, '')
47
- Janus::Response.new @publish.send_a_message(msg_create)
43
+ @publish = Rabbit::Publisher::PublishExclusive.new(rabbit.channel, '')
44
+ @response = Janus::Response.new(@publish.send_a_message(msg_create))
48
45
  end
49
46
 
50
47
  # Create an loop for sending a keepalive message
@@ -0,0 +1,27 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RubyRabbitmqJanus
4
+ module Janus
5
+ # @author VAILLANT Jeremy <jeremy.vaillant@dazzl.tv>
6
+ # Abstract class for janus Event and Keepalive
7
+ class OneThread
8
+ # Initialize class with elements for thread communication
9
+ def initialize
10
+ @rabbit = Rabbit::Connect.new
11
+ @lock = Mutex.new
12
+ @condition = ConditionVariable.new
13
+ end
14
+
15
+ private
16
+
17
+ def start_thread
18
+ Thread.new { initialize_thread }
19
+ end
20
+
21
+ attr_accessor :rabbit, :lock, :condition
22
+ end
23
+ end
24
+ end
25
+
26
+ require 'rrj/janus/threads/keepalive'
27
+ require 'rrj/janus/threads/event'
@@ -13,6 +13,7 @@ module RubyRabbitmqJanus
13
13
  end
14
14
  end
15
15
 
16
+ # Choose queue, create an handle, connect to rabbitmq server and send messages
16
17
  def handle_connect
17
18
  rabbit.transaction_long do
18
19
  choose_queue
@@ -36,7 +37,7 @@ module RubyRabbitmqJanus
36
37
 
37
38
  # Define queue used for admin message
38
39
  def choose_queue
39
- @publish = Rabbit::PublishAdmin.new(rabbit.channel)
40
+ @publish = Rabbit::PublisherPublishAdmin.new(rabbit.channel)
40
41
  end
41
42
  end
42
43
  end
@@ -32,9 +32,11 @@ module RubyRabbitmqJanus
32
32
  def choose_queue(exclusive = false)
33
33
  chan = @rabbit.channel
34
34
  @publish = if exclusive
35
- Rabbit::PublishNonExclusive.new(chan)
35
+ Tools::Log.instance.debug 'Choose an queue non Exclusive : to-janus'
36
+ Rabbit::Publisher::PublishNonExclusive.new(chan)
36
37
  else
37
- Rabbit::PublishExclusive.new(chan, '')
38
+ Tools::Log.instance.debug 'Choose an queue Exclusive : ampq.gen-xxx'
39
+ Rabbit::Publisher::PublishExclusive.new(chan, '')
38
40
  end
39
41
  end
40
42
 
@@ -51,3 +53,7 @@ module RubyRabbitmqJanus
51
53
  end
52
54
  end
53
55
  end
56
+
57
+ require 'rrj/janus/transactions/session'
58
+ require 'rrj/janus/transactions/handle'
59
+ require 'rrj/janus/transactions/admin'
@@ -0,0 +1,26 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RubyRabbitmqJanus
4
+ module Rabbit
5
+ module Publisher
6
+ # @author VAILLANT Jeremy <jeremy.vaillant@dazzl.tv>
7
+ # This publisher send and read an message in admin queues
8
+ class PublisherAdmin < Publisher
9
+ # Intialize an queue non eclusive for admin/monitor API with Janus
10
+ def initialize(exchange)
11
+ super(exchange)
12
+ @reply = exchange.queue(queue_from)
13
+ end
14
+
15
+ private
16
+
17
+ attr_reader :reply
18
+
19
+ # Define queue used for posting a message to API admin
20
+ def queue_from
21
+ Tools::Config.instance.options['queues']['admin']['queue_from']
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,37 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RubyRabbitmqJanus
4
+ module Rabbit
5
+ module Publisher
6
+ # @author VAILLANT Jeremy <jeremy.vaillant@dazzl.tv>
7
+ # @abstract Publish message in RabbitMQ
8
+ class BasePublisher
9
+ attr_reader :response
10
+
11
+ # Define a base publisher
12
+ def initialize
13
+ Tools::Log.instance.debug 'Create an publisher'
14
+ @response = nil
15
+ @condition = ConditionVariable.new
16
+ @lock = Mutex.new
17
+ end
18
+
19
+ private
20
+
21
+ attr_accessor :condition, :lock
22
+
23
+ # return an response when signal is trigger
24
+ def return_response
25
+ Tools::Log.instance.debug 'Waiting an response ...'
26
+ @lock.synchronize do
27
+ @condition.wait(@lock)
28
+ response
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end
35
+
36
+ require 'rrj/rabbit/publish/publisher'
37
+ require 'rrj/rabbit/publish/listener'
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RubyRabbitmqJanus
4
+ module Rabbit
5
+ module Publisher
6
+ # @author VAILLANT Jeremy <jeremy.vaillant@dazzl.tv>
7
+ class PublishExclusive < Publisher
8
+ # Initialize an queue exclusive and generated automaticaly by bunny
9
+ def initialize(exchange, name_queue)
10
+ @reply = exchange.queue(name_queue, exclusive: true)
11
+ super(exchange)
12
+ Tools::Log.instance.debug 'Create/Connect to queue exclusive'
13
+ end
14
+
15
+ private
16
+
17
+ attr_reader :reply
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,40 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RubyRabbitmqJanus
4
+ module Rabbit
5
+ module Publisher
6
+ # @author VAILLANT Jeremy <jeremy.vaillant@dazzl.tv>
7
+ # This publisher don't post message. Is listen just an standard queue to Janus.
8
+ # By default is "from-janus". It's a parameter in config to this gem.
9
+ class Listener < BasePublisher
10
+ # Define an publisher
11
+ def initialize(rabbit)
12
+ super()
13
+ @count = 1
14
+ @rabbit = rabbit.channel
15
+ @reply = @rabbit.queue(Tools::Config.instance.options['queues']['queue_from'])
16
+ Tools::Log.instance.debug "Waiting message from queue : #{@reply.name}"
17
+ end
18
+
19
+ # Listen a queue and return a body response
20
+ def listen_events
21
+ @reply.subscribe do |_info_delivery, _propertie, payload|
22
+ synchronize_response(payload)
23
+ end
24
+ return_response
25
+ end
26
+
27
+ private
28
+
29
+ # Sending an signal when an response is reading in queue
30
+ def synchronize_response(payload)
31
+ @response = JSON.parse payload
32
+ Tools::Log.instance.debug \
33
+ "[X] Message number reading : #{@count} -- type : #{response['janus']}"
34
+ @count += 1
35
+ lock.synchronize { condition.signal }
36
+ end
37
+ end
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,27 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RubyRabbitmqJanus
4
+ module Rabbit
5
+ module Publisher
6
+ # @author VAILLANT Jeremy <jeremy.vaillant@dazzl.tv>
7
+ # Publish message in queue non exclusive. By default "to-janus".
8
+ # This an option in config to this gem.
9
+ class PublishNonExclusive < Publisher
10
+ def initialize(exchange)
11
+ @reply = exchange.queue(queue_from)
12
+ super(exchange)
13
+ Tools::Log.instance.debug 'Create/Connect to queue non exclusive'
14
+ end
15
+
16
+ private
17
+
18
+ attr_reader :reply
19
+
20
+ # Define queue used for posting a message to API public
21
+ def queue_from
22
+ Tools::Config.instance.options['queues']['queue_from']
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,52 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RubyRabbitmqJanus
4
+ module Rabbit
5
+ module Publisher
6
+ # @author VAILLANT Jeremy <jeremy.vaillant@dazzl.tv>
7
+ # This publisher send and read an message in queues
8
+ class Publisher < BasePublisher
9
+ # Intialize a publisher for sending and reading a message
10
+ def initialize(exchange)
11
+ super()
12
+ @exchange = exchange.default_exchange
13
+ @message = nil
14
+ subscribe_to_queue
15
+ end
16
+
17
+ # Publish an message in queue
18
+ def send_a_message(request)
19
+ Tools::Log.instance.info "Send request type : #{request.type}"
20
+ @message = request
21
+ @exchange.publish(@message.to_json,
22
+ request.options.merge!(reply_to: queue_name))
23
+ return_response
24
+ end
25
+
26
+ private
27
+
28
+ # Subscribe to queue selectd with a message
29
+ def subscribe_to_queue
30
+ reply.subscribe do |_delivery_info, propertie, payload|
31
+ if @message.correlation.eql?(propertie.correlation_id)
32
+ @response = JSON.parse payload
33
+ lock.synchronize { condition.signal }
34
+ end
35
+ end
36
+ end
37
+
38
+ # Name to queue used for this publisher
39
+ # @return [String] Name to queue used
40
+ def queue_name
41
+ reply.name
42
+ end
43
+
44
+ attr_accessor :message
45
+ end
46
+ end
47
+ end
48
+ end
49
+
50
+ require 'rrj/rabbit/publish/admin'
51
+ require 'rrj/rabbit/publish/exclusive'
52
+ require 'rrj/rabbit/publish/non_exclusive'
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'rrj/rabbit/connect'
4
- require 'rrj/rabbit/publish'
4
+ require 'rrj/rabbit/publish/base_publisher'
5
5
  require 'rrj/rabbit/propertie'
6
6
 
7
7
  module RubyRabbitmqJanus
data/lib/rrj/tools/env.rb CHANGED
@@ -8,6 +8,7 @@ module RubyRabbitmqJanus
8
8
  class Env
9
9
  include Singleton
10
10
 
11
+ # Test if a string contains a word ENV
11
12
  def test_env_var(configuration, key)
12
13
  test = configuration[key.to_s]
13
14
  if test.is_a?(String)
data/lib/rrj/tools/log.rb CHANGED
@@ -72,6 +72,7 @@ module RubyRabbitmqJanus
72
72
  @logs
73
73
  end
74
74
 
75
+ # Return device to log is writing
75
76
  def logdev
76
77
  @logs.instance_variable_get(:'@logdev').filename
77
78
  end
@@ -99,6 +99,7 @@ module RubyRabbitmqJanus
99
99
  end
100
100
  end
101
101
 
102
+ # Return a key to hash parsing
102
103
  def new_parent(key, parent)
103
104
  "#{parent}#{'.' unless parent.empty?}#{key}"
104
105
  end
@@ -28,12 +28,14 @@ module RubyRabbitmqJanus
28
28
  Tools::Log.instance.warn "Error replace admin_secret : #{message}"
29
29
  end
30
30
 
31
+ # Replace level element
31
32
  def replace_level
32
33
  request['level'] = opts['level']
33
34
  rescue => message
34
35
  Tools::Log.instance.warn "Error replace level : #{message}"
35
36
  end
36
37
 
38
+ # Replace debug element
37
39
  def replace_debug
38
40
  request['debug'] = opts['debug']
39
41
  rescue => message
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby_rabbitmq_janus
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - VAILLANT Jeremy
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-11-03 00:00:00.000000000 Z
11
+ date: 2016-11-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -342,16 +342,23 @@ files:
342
342
  - lib/rrj/init.rb
343
343
  - lib/rrj/janus/admin.rb
344
344
  - lib/rrj/janus/janus.rb
345
- - lib/rrj/janus/keepalive.rb
346
345
  - lib/rrj/janus/message.rb
347
346
  - lib/rrj/janus/response.rb
348
- - lib/rrj/janus/transaction.rb
349
- - lib/rrj/janus/transaction_admin.rb
350
- - lib/rrj/janus/transaction_handle.rb
351
- - lib/rrj/janus/transaction_session.rb
347
+ - lib/rrj/janus/threads/event.rb
348
+ - lib/rrj/janus/threads/keepalive.rb
349
+ - lib/rrj/janus/threads/thread.rb
350
+ - lib/rrj/janus/transactions/admin.rb
351
+ - lib/rrj/janus/transactions/handle.rb
352
+ - lib/rrj/janus/transactions/session.rb
353
+ - lib/rrj/janus/transactions/transaction.rb
352
354
  - lib/rrj/rabbit/connect.rb
353
355
  - lib/rrj/rabbit/propertie.rb
354
- - lib/rrj/rabbit/publish.rb
356
+ - lib/rrj/rabbit/publish/admin.rb
357
+ - lib/rrj/rabbit/publish/base_publisher.rb
358
+ - lib/rrj/rabbit/publish/exclusive.rb
359
+ - lib/rrj/rabbit/publish/listener.rb
360
+ - lib/rrj/rabbit/publish/non_exclusive.rb
361
+ - lib/rrj/rabbit/publish/publisher.rb
355
362
  - lib/rrj/rabbit/rabbit.rb
356
363
  - lib/rrj/tools/config.rb
357
364
  - lib/rrj/tools/env.rb
@@ -368,7 +375,7 @@ licenses:
368
375
  metadata: {}
369
376
  post_install_message: |-
370
377
  # ====================================================== #
371
- # Thanks for installing! #
378
+ # Thanks for installing RRJ ! #
372
379
  # https://github.com/dazzl-tv/ruby-rabbitmq-janus. #
373
380
  # ;;;;;;;;;;;:. #
374
381
  # ;;;;;;;;;;;;;;;;;; #
@@ -1,100 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- # :reek:FeatureEnvy and :reek:InstanceVariableAssumption
4
- module RubyRabbitmqJanus
5
- module Rabbit
6
- # @author VAILLANT Jeremy <jeremy.vaillant@dazzl.tv>
7
- # @abstract Publish message in RabbitMQ
8
- class Publish
9
- # Define Exchange operation
10
- def initialize(exchange)
11
- Tools::Log.instance.debug 'Create/Connect to queue'
12
- @exchange = exchange.default_exchange
13
- @message = nil
14
- end
15
-
16
- # Send a message in queue
17
- def send_a_message(request)
18
- Tools::Log.instance.info "Send request type : #{request.type}"
19
- @message = request
20
- @exchange.publish(@message.to_json, request.options)
21
- end
22
- end
23
-
24
- # @author VAILLANT Jeremy <jeremy.vaillant@dazzl.tv>
25
- # @abstract Publish an message in RabbitMQ and waiting a response
26
- class PublishReply < Publish
27
- # Initialize a queue
28
- def initialize(exchange)
29
- @condition = ConditionVariable.new
30
- @lock = Mutex.new
31
- @response = nil
32
- subscribe_to_queue
33
- super
34
- end
35
-
36
- # Publish an message in rabbitmq
37
- def send_a_message(request)
38
- Tools::Log.instance.info "Send request type : #{request.type}"
39
- @exchange.publish(read_message(request),
40
- request.options.merge!(reply_to: @reply.name))
41
- @lock.synchronize { @condition.wait(@lock) }
42
- @response
43
- end
44
-
45
- private
46
-
47
- # Read message and return to JSON format
48
- def read_message(request)
49
- @message = request
50
- @message.to_json
51
- end
52
-
53
- # Subscribe to queue in Rabbitmq
54
- def subscribe_to_queue
55
- @reply.subscribe do |_delivery_info, properties, payload|
56
- if @message.correlation.eql?(properties.correlation_id)
57
- @response = JSON.parse payload
58
- @lock.synchronize { @condition.signal }
59
- end
60
- end
61
- end
62
- end
63
-
64
- # @author VAILLANT Jeremy <jeremy.vaillant@dazzl.tv>
65
- # Publish message in non exclusive queue
66
- class PublishNonExclusive < PublishReply
67
- # Initialize an queue non exclusive
68
- def initialize(exchange)
69
- @reply = exchange.queue(Tools::Config.instance.options['queues']['queue_from'])
70
- super(exchange)
71
- end
72
- end
73
-
74
- # Publish for admin Janus
75
- class PublishAdmin < PublishReply
76
- # Initialize an queue non exclusive
77
- def initialize(exchange)
78
- name = Tools::Config.instance.options['queues']['admin']['queue_from']
79
- @reply = exchange.queue(name)
80
- super(exchange)
81
- end
82
- end
83
-
84
- # @author VAILLANT Jeremy <jeremy.vaillant@dazzl.tv>
85
- # Publish message in exclusive queue
86
- class PublishExclusive < PublishReply
87
- # Initialize an queue exclusive
88
- def initialize(exchange, name_queue = '')
89
- @reply = exchange.queue(name_queue, exclusive: true)
90
- super(exchange)
91
- end
92
-
93
- # Name to queue
94
- # @return [String] Name to queue used
95
- def queue_name
96
- @reply.name
97
- end
98
- end
99
- end
100
- end