thrift-amqp 0.2.2 → 0.2.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 46ad28b0f2b399a9849386fa2f3498884b6dfc59
4
- data.tar.gz: 613972cd7aebe6456d59d789ff61b6b15494f97f
3
+ metadata.gz: a39a5e783d243c6a1f4f5a595a6fdcf1fa2552e5
4
+ data.tar.gz: 4ed02c44bd570c34389a04ae5faa90aa2fec01a2
5
5
  SHA512:
6
- metadata.gz: 8628a3a69199564f22cfbef12e1425b48ba01acaa2386a1b1c39f19cd788fc6638e435098974fa24b97f3e7a7ef49c96b5cf7efe3d0a7ce313af83da4240f999
7
- data.tar.gz: 93097eb1622f65fd459a2a789477db607a6b324652c4773d2e4900146b958be76a87c474568cb371575e52652e09283a457910c4e6a9be3467892ce27b4593fd
6
+ metadata.gz: 68ef35270696f943921db74310a8524ecb4e8a2cebdab831542604f61fd43a57e1b18ba945de7ec358c45a5035d8228a581bf91d5933646dcb4a89ed01619b9d
7
+ data.tar.gz: 942a385f3975fcbd85e1990cab57ffe0d2f3ae3a5a6d474e559c5123ff1be8a0935de28f15371d409cdab63a0c0f76b3cd4986e207dfd175a0a59b0630a396f5
@@ -7,20 +7,43 @@ require 'securerandom'
7
7
 
8
8
  module Thrift
9
9
  class AMQPClientTransport < BaseTransport
10
- def initialize(amqp_uri, exchange_name, routing_key)
10
+ class << self
11
+ def from_channel(channel, exchange_name, routing_key)
12
+ new(nil, exchange_name, routing_key, channel: channel)
13
+ end
14
+ end
15
+
16
+ def initialize(amqp_uri, exchange_name, routing_key, opts = {})
11
17
  @outbuf = Bytes.empty_byte_buffer
12
18
  @inbuf_r, @inbuf_w = IO.pipe(binmode: true)
13
19
  @inbuf_w.set_encoding('binary')
14
- @conn = Bunny.new(amqp_uri)
15
20
 
16
- @exchange_name, @routing_key = exchange_name, routing_key
21
+ if opts[:channel]
22
+ @channel = opts[:channel]
23
+ else
24
+ @conn = Bunny.new(amqp_uri)
25
+ end
26
+
27
+ @opened = false
28
+ @handle_conn_lifecycle = opts[:channel].nil?
29
+ @exchange_name = exchange_name
30
+ @routing_key = routing_key
17
31
  end
18
32
 
19
33
  def open
20
34
  return if open?
21
35
 
22
- @conn.start
23
- @channel = @conn.create_channel
36
+ if @channel.nil? || !@channel.open?
37
+ unless @conn
38
+ raise TransportException.new(
39
+ TransportException::NOT_OPEN, 'channel cosed'
40
+ )
41
+ end
42
+
43
+ @conn.start
44
+ @channel = @conn.create_channel
45
+ end
46
+
24
47
  @service_exchange = @channel.exchange(@exchange_name)
25
48
  @reply_queue = @channel.queue('', auto_delete: true, exclusive: true)
26
49
 
@@ -28,18 +51,20 @@ module Thrift
28
51
  @inbuf_w << Bytes.force_binary_encoding(payload)
29
52
  @channel.acknowledge(delivery_info.delivery_tag, false)
30
53
  end
54
+ @opened = true
31
55
  end
32
56
 
33
57
 
34
58
  def close
35
59
  if open?
36
60
  @reply_queue.delete
37
- @channel.close
61
+ @channel.close if @handle_conn_lifecycle
62
+ @opened = false
38
63
  end
39
64
  end
40
65
 
41
66
  def open?
42
- @channel && @channel.open?
67
+ @opened && @channel && @channel.open?
43
68
  end
44
69
 
45
70
  def read(sz)
@@ -66,7 +91,7 @@ module Thrift
66
91
  protected
67
92
 
68
93
  def generate_uuid
69
- SecureRandom.hex(13)
94
+ SecureRandom.hex(13)
70
95
  end
71
96
  end
72
97
  end
@@ -1,5 +1,5 @@
1
1
  module Thrift
2
2
  module AMQP
3
- VERSION = "0.2.2"
3
+ VERSION = "0.2.3"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: thrift-amqp
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.2
4
+ version: 0.2.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alexis Montagne
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-07-21 00:00:00.000000000 Z
11
+ date: 2017-07-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler