ruby_rabbitmq_janus 1.2.8 → 1.2.9

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: f476513f5e5d4c4e80d79a6744d57742d50c523e
4
- data.tar.gz: 929e04e9429877f21cdedaa4ad7b5461e8ddf54a
3
+ metadata.gz: 9e7097b3084bdf28a6ca3d98594bf42b6ec88a11
4
+ data.tar.gz: 12039167df87de0454f6b47f81764392e0b5cb92
5
5
  SHA512:
6
- metadata.gz: 77f0c437d77862d84f9492e27ab27f497fe674fd1ce419d670a21944cf920b21af3a49f3cdcec22f500b8d47b6ce045e5bc4c02c7e8fdefdd1fa2ad8590fd5c7
7
- data.tar.gz: 90bf97502d8770c33bc5383969eb53e7968469f11d4509b6e2a17b20beb509dc4ddec6d240ff17d98a98773ebcbb6fcf859801ecf2ca75ee6d62aa530ac12b62
6
+ metadata.gz: 515d7007165d7a1e53485b27bb75265aa5522ebf876655c07945c789efef28cd3ec99071543d8c7062df8c62fe4611d2aa30107ccbd66bf84e74f0b5e7c341da
7
+ data.tar.gz: 58611d01139e576079557531897b65c24b80e275cce625e519358c263c91432d09cfbd45d6acac4542cd8e862ba96fe6c6c42356e4a25192d60a483e67e92efb
data/lib/rrj/info.rb CHANGED
@@ -5,7 +5,7 @@
5
5
  # Define constant to gem.
6
6
  module RubyRabbitmqJanus
7
7
  # Define version to gem
8
- VERSION = '1.2.8'
8
+ VERSION = '1.2.9'
9
9
 
10
10
  # Name to gem
11
11
  GEM_NAME = 'ruby_rabbitmq_janus'
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+ require 'semaphore'
2
3
 
3
4
  module RubyRabbitmqJanus
4
5
  module Rabbit
@@ -15,13 +16,13 @@ module RubyRabbitmqJanus
15
16
  #
16
17
  # @abstract Publish message in RabbitMQ
17
18
  class BasePublisher
18
- attr_reader :response
19
+ attr_reader :responses
19
20
 
20
21
  # Define a base publisher
21
22
  def initialize
22
23
  Tools::Log.instance.debug 'Create an publisher'
23
- @response = nil
24
- @condition = ConditionVariable.new
24
+ @responses = []
25
+ @semaphore= Semaphore.new
25
26
  @lock = Mutex.new
26
27
  end
27
28
 
@@ -31,11 +32,14 @@ module RubyRabbitmqJanus
31
32
 
32
33
  # return an response when signal is trigger
33
34
  def return_response
35
+ Tools::Log.instance.debug 'Waiting response...'
36
+ @semaphore.wait
37
+ Tools::Log.instance.debug 'Response received'
38
+ response = nil
34
39
  @lock.synchronize do
35
- Tools::Log.instance.debug 'Response received'
36
- @condition.wait(@lock)
37
- @response
40
+ response = @responses.shift
38
41
  end
42
+ response
39
43
  end
40
44
  end
41
45
  end
@@ -13,18 +13,21 @@ module RubyRabbitmqJanus
13
13
  # @param [String] rabbit Information connection to rabbitmq server
14
14
  def initialize(rabbit)
15
15
  super()
16
+ @responses = []
16
17
  @rabbit = rabbit.channel
17
- @response = nil
18
18
  subscribe_queue
19
19
  end
20
20
 
21
21
  # Listen a queue and return a body response
22
22
  def listen_events
23
+ Tools::Log.instance.debug 'Waiting event...'
24
+ @semaphore.wait
25
+ Tools::Log.instance.info 'Janus event received .. treatment ..'
26
+ response = nil
23
27
  lock.synchronize do
24
- condition.wait(lock)
25
- Tools::Log.instance.info 'Janus event received .. treatment ..'
26
- yield @response.event, @response
28
+ response = @responses.shift
27
29
  end
30
+ yield response.event, response
28
31
  end
29
32
 
30
33
  private
@@ -56,15 +59,16 @@ module RubyRabbitmqJanus
56
59
  # Counts transmitted messages
57
60
  def log_message_id(propertie)
58
61
  message_id = propertie.message_id
59
- Tools::Log.instance.info "[X] Message reading with ID ##{message_id}"
62
+ Tools::Log.instance.info "[X] Message reading with ID #{message_id}"
60
63
  end
61
64
 
62
65
  # Sending an signal when an response is reading in queue
63
66
  def synchronize_response(info, payload)
64
- sleep 0.2
65
- @response = Janus::Responses::Event.new(JSON.parse(payload))
67
+ lock.synchronize do
68
+ @responses.push(Janus::Responses::Event.new(JSON.parse(payload)))
69
+ end
66
70
  @rabbit.acknowledge(info.delivery_tag, false)
67
- lock.synchronize { condition.signal }
71
+ @semaphore.signal
68
72
  end
69
73
  end
70
74
  end
@@ -39,8 +39,14 @@ module RubyRabbitmqJanus
39
39
  def subscribe_to_queue
40
40
  reply.subscribe do |_delivery_info, propertie, payload|
41
41
  if @message.correlation.eql?(propertie.correlation_id)
42
- @response = JSON.parse payload
43
- lock.synchronize { condition.signal }
42
+ Tools::Log.instance.debug "Parsing response payload......"
43
+ lock.synchronize do
44
+ @responses.push(JSON.parse payload)
45
+ end
46
+ Tools::Log.instance.debug "Response payload is: #{payload}"
47
+ @semaphore.signal
48
+ else
49
+ Tools::Log.instance.error "Response correlation ID mismatch (#{@message.correlation}!=#{propertie.correlation_id})"
44
50
  end
45
51
  end
46
52
  end
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.2.8
4
+ version: 1.2.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - VAILLANT Jeremy
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-01-27 00:00:00.000000000 Z
11
+ date: 2017-02-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -278,6 +278,20 @@ dependencies:
278
278
  - - "~>"
279
279
  - !ruby/object:Gem::Version
280
280
  version: 0.2.2
281
+ - !ruby/object:Gem::Dependency
282
+ name: semaphore
283
+ requirement: !ruby/object:Gem::Requirement
284
+ requirements:
285
+ - - "~>"
286
+ - !ruby/object:Gem::Version
287
+ version: 0.0.1
288
+ type: :runtime
289
+ prerelease: false
290
+ version_requirements: !ruby/object:Gem::Requirement
291
+ requirements:
292
+ - - "~>"
293
+ - !ruby/object:Gem::Version
294
+ version: 0.0.1
281
295
  description: |
282
296
  This gem is used to communicate to a server Janus through RabbitMQ software
283
297
  (Message-oriented middleware). It waiting a messages to Rails API who send to