bunny 0.10.8 → 1.0.0.pre1
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 +4 -4
- data/.travis.yml +1 -4
- data/ChangeLog.md +1 -152
- data/Gemfile +1 -1
- data/README.md +5 -5
- data/bunny.gemspec +1 -1
- data/lib/bunny.rb +14 -2
- data/lib/bunny/channel.rb +94 -158
- data/lib/bunny/channel_id_allocator.rb +1 -2
- data/lib/bunny/concurrent/condition.rb +1 -2
- data/lib/bunny/concurrent/continuation_queue.rb +1 -1
- data/lib/bunny/consumer.rb +0 -13
- data/lib/bunny/consumer_work_pool.rb +2 -5
- data/lib/bunny/delivery_info.rb +1 -3
- data/lib/bunny/exceptions.rb +1 -4
- data/lib/bunny/heartbeat_sender.rb +1 -1
- data/lib/bunny/reader_loop.rb +3 -23
- data/lib/bunny/session.rb +19 -103
- data/lib/bunny/socket.rb +1 -1
- data/lib/bunny/transport.rb +7 -31
- data/lib/bunny/version.rb +1 -1
- data/spec/higher_level_api/integration/basic_ack_spec.rb +19 -34
- data/spec/higher_level_api/integration/basic_cancel_spec.rb +1 -1
- data/spec/higher_level_api/integration/basic_consume_spec.rb +2 -63
- data/spec/higher_level_api/integration/basic_get_spec.rb +1 -1
- data/spec/higher_level_api/integration/basic_nack_spec.rb +1 -1
- data/spec/higher_level_api/integration/basic_publish_spec.rb +1 -1
- data/spec/higher_level_api/integration/basic_qos_spec.rb +8 -5
- data/spec/higher_level_api/integration/basic_reject_spec.rb +17 -16
- data/spec/higher_level_api/integration/basic_return_spec.rb +1 -1
- data/spec/higher_level_api/integration/channel_close_spec.rb +10 -6
- data/spec/higher_level_api/integration/channel_flow_spec.rb +9 -6
- data/spec/higher_level_api/integration/channel_open_spec.rb +20 -11
- data/spec/higher_level_api/integration/confirm_select_spec.rb +1 -1
- data/spec/higher_level_api/integration/connection_spec.rb +1 -1
- data/spec/higher_level_api/integration/consistent_hash_exchange_spec.rb +1 -1
- data/spec/higher_level_api/integration/consumer_cancellation_notification_spec.rb +1 -46
- data/spec/higher_level_api/integration/dead_lettering_spec.rb +1 -1
- data/spec/higher_level_api/integration/exchange_bind_spec.rb +1 -1
- data/spec/higher_level_api/integration/exchange_declare_spec.rb +1 -1
- data/spec/higher_level_api/integration/exchange_delete_spec.rb +1 -1
- data/spec/higher_level_api/integration/exchange_unbind_spec.rb +1 -1
- data/spec/higher_level_api/integration/merry_go_round_spec.rb +1 -1
- data/spec/higher_level_api/integration/message_properties_access_spec.rb +1 -1
- data/spec/higher_level_api/integration/predeclared_exchanges_spec.rb +1 -1
- data/spec/higher_level_api/integration/publishing_edge_cases_spec.rb +1 -1
- data/spec/higher_level_api/integration/queue_declare_spec.rb +1 -1
- data/spec/higher_level_api/integration/queue_delete_spec.rb +2 -2
- data/spec/higher_level_api/integration/queue_purge_spec.rb +1 -1
- data/spec/higher_level_api/integration/queue_unbind_spec.rb +2 -2
- data/spec/higher_level_api/integration/read_only_consumer_spec.rb +1 -1
- data/spec/higher_level_api/integration/sender_selected_distribution_spec.rb +2 -2
- data/spec/higher_level_api/integration/tls_connection_spec.rb +2 -86
- data/spec/higher_level_api/integration/tx_commit_spec.rb +1 -1
- data/spec/higher_level_api/integration/tx_rollback_spec.rb +1 -1
- data/spec/unit/concurrent/condition_spec.rb +46 -53
- metadata +5 -25
- data/benchmarks/mutex_and_monitor.rb +0 -42
- data/benchmarks/synchronized_sorted_set.rb +0 -53
- data/lib/amq/protocol/extensions.rb +0 -16
- data/lib/bunny/concurrent/atomic_fixnum.rb +0 -74
- data/lib/bunny/concurrent/synchronized_sorted_set.rb +0 -56
- data/lib/bunny/timeout.rb +0 -18
- data/lib/bunny/versioned_delivery_tag.rb +0 -28
- data/spec/higher_level_api/integration/connection_stop_spec.rb +0 -26
- data/spec/higher_level_api/integration/exclusive_queue_spec.rb +0 -28
- data/spec/issues/issue141_spec.rb +0 -44
- data/spec/stress/connection_open_close_spec.rb +0 -40
- data/spec/unit/concurrent/atomic_fixnum_spec.rb +0 -35
- data/spec/unit/concurrent/synchronized_sorted_set_spec.rb +0 -73
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bunny
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 1.0.0.pre1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Chris Duncan
|
@@ -12,7 +12,7 @@ authors:
|
|
12
12
|
autorequire:
|
13
13
|
bindir: bin
|
14
14
|
cert_chain: []
|
15
|
-
date: 2013-
|
15
|
+
date: 2013-07-25 00:00:00.000000000 Z
|
16
16
|
dependencies:
|
17
17
|
- !ruby/object:Gem::Dependency
|
18
18
|
name: amq-protocol
|
@@ -28,8 +28,7 @@ dependencies:
|
|
28
28
|
- - '>='
|
29
29
|
- !ruby/object:Gem::Version
|
30
30
|
version: 1.6.0
|
31
|
-
description: Easy to use, feature complete Ruby client for RabbitMQ 2.0
|
32
|
-
versions.
|
31
|
+
description: Easy to use, feature complete Ruby client for RabbitMQ 2.0.
|
33
32
|
email:
|
34
33
|
- celldee@gmail.com
|
35
34
|
- eric@5stops.com
|
@@ -55,11 +54,9 @@ files:
|
|
55
54
|
- benchmarks/basic_publish/with_4K_messages.rb
|
56
55
|
- benchmarks/basic_publish/with_64K_messages.rb
|
57
56
|
- benchmarks/channel_open.rb
|
58
|
-
- benchmarks/mutex_and_monitor.rb
|
59
57
|
- benchmarks/queue_declare.rb
|
60
58
|
- benchmarks/queue_declare_and_bind.rb
|
61
59
|
- benchmarks/queue_declare_bind_and_delete.rb
|
62
|
-
- benchmarks/synchronized_sorted_set.rb
|
63
60
|
- benchmarks/write_vs_write_nonblock.rb
|
64
61
|
- bin/ci/before_build.sh
|
65
62
|
- bunny.gemspec
|
@@ -93,7 +90,6 @@ files:
|
|
93
90
|
- examples/guides/getting_started/weathr.rb
|
94
91
|
- examples/guides/queues/one_off_consumer.rb
|
95
92
|
- examples/guides/queues/redeliveries.rb
|
96
|
-
- lib/amq/protocol/extensions.rb
|
97
93
|
- lib/bunny.rb
|
98
94
|
- lib/bunny/authentication/credentials_encoder.rb
|
99
95
|
- lib/bunny/authentication/external_mechanism_encoder.rb
|
@@ -101,11 +97,9 @@ files:
|
|
101
97
|
- lib/bunny/channel.rb
|
102
98
|
- lib/bunny/channel_id_allocator.rb
|
103
99
|
- lib/bunny/compatibility.rb
|
104
|
-
- lib/bunny/concurrent/atomic_fixnum.rb
|
105
100
|
- lib/bunny/concurrent/condition.rb
|
106
101
|
- lib/bunny/concurrent/continuation_queue.rb
|
107
102
|
- lib/bunny/concurrent/linked_continuation_queue.rb
|
108
|
-
- lib/bunny/concurrent/synchronized_sorted_set.rb
|
109
103
|
- lib/bunny/consumer.rb
|
110
104
|
- lib/bunny/consumer_tag_generator.rb
|
111
105
|
- lib/bunny/consumer_work_pool.rb
|
@@ -123,10 +117,8 @@ files:
|
|
123
117
|
- lib/bunny/ssl_socket.rb
|
124
118
|
- lib/bunny/system_timer.rb
|
125
119
|
- lib/bunny/test_kit.rb
|
126
|
-
- lib/bunny/timeout.rb
|
127
120
|
- lib/bunny/transport.rb
|
128
121
|
- lib/bunny/version.rb
|
129
|
-
- lib/bunny/versioned_delivery_tag.rb
|
130
122
|
- profiling/basic_publish/with_4K_messages.rb
|
131
123
|
- spec/compatibility/queue_declare_spec.rb
|
132
124
|
- spec/compatibility/queue_declare_with_default_channel_spec.rb
|
@@ -145,7 +137,6 @@ files:
|
|
145
137
|
- spec/higher_level_api/integration/channel_open_spec.rb
|
146
138
|
- spec/higher_level_api/integration/confirm_select_spec.rb
|
147
139
|
- spec/higher_level_api/integration/connection_spec.rb
|
148
|
-
- spec/higher_level_api/integration/connection_stop_spec.rb
|
149
140
|
- spec/higher_level_api/integration/consistent_hash_exchange_spec.rb
|
150
141
|
- spec/higher_level_api/integration/consumer_cancellation_notification_spec.rb
|
151
142
|
- spec/higher_level_api/integration/dead_lettering_spec.rb
|
@@ -153,7 +144,6 @@ files:
|
|
153
144
|
- spec/higher_level_api/integration/exchange_declare_spec.rb
|
154
145
|
- spec/higher_level_api/integration/exchange_delete_spec.rb
|
155
146
|
- spec/higher_level_api/integration/exchange_unbind_spec.rb
|
156
|
-
- spec/higher_level_api/integration/exclusive_queue_spec.rb
|
157
147
|
- spec/higher_level_api/integration/heartbeat_spec.rb
|
158
148
|
- spec/higher_level_api/integration/merry_go_round_spec.rb
|
159
149
|
- spec/higher_level_api/integration/message_properties_access_spec.rb
|
@@ -171,7 +161,6 @@ files:
|
|
171
161
|
- spec/higher_level_api/integration/tx_commit_spec.rb
|
172
162
|
- spec/higher_level_api/integration/tx_rollback_spec.rb
|
173
163
|
- spec/issues/issue100_spec.rb
|
174
|
-
- spec/issues/issue141_spec.rb
|
175
164
|
- spec/issues/issue78_spec.rb
|
176
165
|
- spec/issues/issue83_spec.rb
|
177
166
|
- spec/issues/issue97_attachment.json
|
@@ -183,7 +172,6 @@ files:
|
|
183
172
|
- spec/stress/channel_open_stress_with_single_threaded_connection_spec.rb
|
184
173
|
- spec/stress/concurrent_consumers_stress_spec.rb
|
185
174
|
- spec/stress/concurrent_publishers_stress_spec.rb
|
186
|
-
- spec/stress/connection_open_close_spec.rb
|
187
175
|
- spec/stress/long_running_consumer_spec.rb
|
188
176
|
- spec/tls/cacert.pem
|
189
177
|
- spec/tls/client_cert.pem
|
@@ -191,10 +179,8 @@ files:
|
|
191
179
|
- spec/tls/server_cert.pem
|
192
180
|
- spec/tls/server_key.pem
|
193
181
|
- spec/unit/bunny_spec.rb
|
194
|
-
- spec/unit/concurrent/atomic_fixnum_spec.rb
|
195
182
|
- spec/unit/concurrent/condition_spec.rb
|
196
183
|
- spec/unit/concurrent/linked_continuation_queue_spec.rb
|
197
|
-
- spec/unit/concurrent/synchronized_sorted_set_spec.rb
|
198
184
|
homepage: http://rubybunny.info
|
199
185
|
licenses:
|
200
186
|
- MIT
|
@@ -210,9 +196,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
210
196
|
version: '0'
|
211
197
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
212
198
|
requirements:
|
213
|
-
- - '
|
199
|
+
- - '>'
|
214
200
|
- !ruby/object:Gem::Version
|
215
|
-
version:
|
201
|
+
version: 1.3.1
|
216
202
|
requirements: []
|
217
203
|
rubyforge_project:
|
218
204
|
rubygems_version: 2.0.5
|
@@ -237,7 +223,6 @@ test_files:
|
|
237
223
|
- spec/higher_level_api/integration/channel_open_spec.rb
|
238
224
|
- spec/higher_level_api/integration/confirm_select_spec.rb
|
239
225
|
- spec/higher_level_api/integration/connection_spec.rb
|
240
|
-
- spec/higher_level_api/integration/connection_stop_spec.rb
|
241
226
|
- spec/higher_level_api/integration/consistent_hash_exchange_spec.rb
|
242
227
|
- spec/higher_level_api/integration/consumer_cancellation_notification_spec.rb
|
243
228
|
- spec/higher_level_api/integration/dead_lettering_spec.rb
|
@@ -245,7 +230,6 @@ test_files:
|
|
245
230
|
- spec/higher_level_api/integration/exchange_declare_spec.rb
|
246
231
|
- spec/higher_level_api/integration/exchange_delete_spec.rb
|
247
232
|
- spec/higher_level_api/integration/exchange_unbind_spec.rb
|
248
|
-
- spec/higher_level_api/integration/exclusive_queue_spec.rb
|
249
233
|
- spec/higher_level_api/integration/heartbeat_spec.rb
|
250
234
|
- spec/higher_level_api/integration/merry_go_round_spec.rb
|
251
235
|
- spec/higher_level_api/integration/message_properties_access_spec.rb
|
@@ -263,7 +247,6 @@ test_files:
|
|
263
247
|
- spec/higher_level_api/integration/tx_commit_spec.rb
|
264
248
|
- spec/higher_level_api/integration/tx_rollback_spec.rb
|
265
249
|
- spec/issues/issue100_spec.rb
|
266
|
-
- spec/issues/issue141_spec.rb
|
267
250
|
- spec/issues/issue78_spec.rb
|
268
251
|
- spec/issues/issue83_spec.rb
|
269
252
|
- spec/issues/issue97_attachment.json
|
@@ -275,7 +258,6 @@ test_files:
|
|
275
258
|
- spec/stress/channel_open_stress_with_single_threaded_connection_spec.rb
|
276
259
|
- spec/stress/concurrent_consumers_stress_spec.rb
|
277
260
|
- spec/stress/concurrent_publishers_stress_spec.rb
|
278
|
-
- spec/stress/connection_open_close_spec.rb
|
279
261
|
- spec/stress/long_running_consumer_spec.rb
|
280
262
|
- spec/tls/cacert.pem
|
281
263
|
- spec/tls/client_cert.pem
|
@@ -283,8 +265,6 @@ test_files:
|
|
283
265
|
- spec/tls/server_cert.pem
|
284
266
|
- spec/tls/server_key.pem
|
285
267
|
- spec/unit/bunny_spec.rb
|
286
|
-
- spec/unit/concurrent/atomic_fixnum_spec.rb
|
287
268
|
- spec/unit/concurrent/condition_spec.rb
|
288
269
|
- spec/unit/concurrent/linked_continuation_queue_spec.rb
|
289
|
-
- spec/unit/concurrent/synchronized_sorted_set_spec.rb
|
290
270
|
has_rdoc: true
|
@@ -1,42 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
# encoding: utf-8
|
3
|
-
|
4
|
-
require "rubygems"
|
5
|
-
require "set"
|
6
|
-
require "thread"
|
7
|
-
require "benchmark"
|
8
|
-
require "monitor"
|
9
|
-
|
10
|
-
puts
|
11
|
-
puts "-" * 80
|
12
|
-
puts "Benchmarking on #{RUBY_DESCRIPTION}"
|
13
|
-
|
14
|
-
n = 2_000_000
|
15
|
-
mx = Mutex.new
|
16
|
-
mt = Monitor.new
|
17
|
-
|
18
|
-
# warm up the JIT, etc
|
19
|
-
puts "Doing a warmup run..."
|
20
|
-
n.times do |i|
|
21
|
-
mx.synchronize { 1 }
|
22
|
-
mt.synchronize { 1 }
|
23
|
-
end
|
24
|
-
|
25
|
-
t1 = Benchmark.realtime do
|
26
|
-
n.times do |i|
|
27
|
-
mx.synchronize { 1 }
|
28
|
-
end
|
29
|
-
end
|
30
|
-
r1 = (n.to_f/t1.to_f)
|
31
|
-
|
32
|
-
t2 = Benchmark.realtime do
|
33
|
-
n.times do |i|
|
34
|
-
mt.synchronize { 1 }
|
35
|
-
end
|
36
|
-
end
|
37
|
-
r2 = (n.to_f/t2.to_f)
|
38
|
-
|
39
|
-
puts "Mutex#synchronize, rate: #{(r1 / 1000).round(2)} KGHz"
|
40
|
-
puts "Monitor#synchronize, rate: #{(r2 / 1000).round(2)} KGHz"
|
41
|
-
puts
|
42
|
-
puts "-" * 80
|
@@ -1,53 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
# encoding: utf-8
|
3
|
-
|
4
|
-
require "rubygems"
|
5
|
-
require "set"
|
6
|
-
require "thread"
|
7
|
-
require "benchmark"
|
8
|
-
|
9
|
-
require "bunny/concurrent/synchronized_sorted_set"
|
10
|
-
|
11
|
-
puts
|
12
|
-
puts "-" * 80
|
13
|
-
puts "Benchmarking on #{RUBY_DESCRIPTION}"
|
14
|
-
|
15
|
-
n = 2_000_000
|
16
|
-
s = SortedSet.new
|
17
|
-
|
18
|
-
# warm up the JIT, etc
|
19
|
-
puts "Doing a warmup run..."
|
20
|
-
n.times do |i|
|
21
|
-
s << 1
|
22
|
-
s << i
|
23
|
-
s.delete i
|
24
|
-
s << i
|
25
|
-
end
|
26
|
-
|
27
|
-
t1 = Benchmark.realtime do
|
28
|
-
n.times do |i|
|
29
|
-
s << 1
|
30
|
-
s << i
|
31
|
-
s.delete i
|
32
|
-
s << i
|
33
|
-
s.length
|
34
|
-
end
|
35
|
-
end
|
36
|
-
r1 = (n.to_f/t1.to_f)
|
37
|
-
|
38
|
-
s2 = SynchronizedSortedSet.new
|
39
|
-
t2 = Benchmark.realtime do
|
40
|
-
n.times do |i|
|
41
|
-
s2 << 1
|
42
|
-
s2 << i
|
43
|
-
s2.delete i
|
44
|
-
s2 << i
|
45
|
-
s2.length
|
46
|
-
end
|
47
|
-
end
|
48
|
-
r2 = (n.to_f/t2.to_f)
|
49
|
-
|
50
|
-
puts "Mixed sorted set ops, rate: #{(r1 / 1000).round(2)} KGHz"
|
51
|
-
puts "Mixed synchronized sorted set ops, rate: #{(r2 / 1000).round(2)} KGHz"
|
52
|
-
puts
|
53
|
-
puts "-" * 80
|
@@ -1,74 +0,0 @@
|
|
1
|
-
require "set"
|
2
|
-
require "thread"
|
3
|
-
require "monitor"
|
4
|
-
|
5
|
-
module Bunny
|
6
|
-
module Concurrent
|
7
|
-
# Minimalistic implementation of a synchronized fixnum value,
|
8
|
-
# designed after (but not implementing the entire API of!)
|
9
|
-
#
|
10
|
-
# @note Designed to be intentionally minimalistic and only cover Bunny's needs.
|
11
|
-
#
|
12
|
-
# @api public
|
13
|
-
class AtomicFixnum
|
14
|
-
def initialize(n = 0)
|
15
|
-
@n = n
|
16
|
-
@mutex = Monitor.new
|
17
|
-
end
|
18
|
-
|
19
|
-
def get
|
20
|
-
@mutex.synchronize do
|
21
|
-
@n
|
22
|
-
end
|
23
|
-
end
|
24
|
-
|
25
|
-
def set(n)
|
26
|
-
@mutex.synchronize do
|
27
|
-
@n = n
|
28
|
-
end
|
29
|
-
end
|
30
|
-
|
31
|
-
def increment
|
32
|
-
@mutex.synchronize do
|
33
|
-
@n = @n + 1
|
34
|
-
end
|
35
|
-
end
|
36
|
-
alias inc increment
|
37
|
-
alias increment_and_get increment
|
38
|
-
|
39
|
-
def get_and_add(i)
|
40
|
-
@mutex.synchronize do
|
41
|
-
v = @n
|
42
|
-
@n = @n + i
|
43
|
-
|
44
|
-
v
|
45
|
-
end
|
46
|
-
end
|
47
|
-
|
48
|
-
def get_and_increment
|
49
|
-
@mutex.synchronize do
|
50
|
-
v = @n
|
51
|
-
@n = @n + 1
|
52
|
-
|
53
|
-
v
|
54
|
-
end
|
55
|
-
end
|
56
|
-
|
57
|
-
def decrement
|
58
|
-
@mutex.synchronize do
|
59
|
-
@n = @n - 1
|
60
|
-
end
|
61
|
-
end
|
62
|
-
alias dec decrement
|
63
|
-
alias decrement_and_get decrement
|
64
|
-
|
65
|
-
def ==(m)
|
66
|
-
@mutex.synchronize { @n == m }
|
67
|
-
end
|
68
|
-
|
69
|
-
def ===(v)
|
70
|
-
@mutex.synchronize { @n === v }
|
71
|
-
end
|
72
|
-
end
|
73
|
-
end
|
74
|
-
end
|
@@ -1,56 +0,0 @@
|
|
1
|
-
require "set"
|
2
|
-
require "thread"
|
3
|
-
|
4
|
-
module Bunny
|
5
|
-
module Concurrent
|
6
|
-
# A SortedSet variation that synchronizes key mutation operations.
|
7
|
-
#
|
8
|
-
# @note This is NOT a complete SortedSet replacement. It only synchronizes operations needed by Bunny.
|
9
|
-
# @api public
|
10
|
-
class SynchronizedSortedSet < SortedSet
|
11
|
-
def initialize(enum = nil)
|
12
|
-
@mutex = Mutex.new
|
13
|
-
|
14
|
-
super
|
15
|
-
end
|
16
|
-
|
17
|
-
def add(o)
|
18
|
-
# avoid using Mutex#synchronize because of a Ruby 1.8.7-specific
|
19
|
-
# bug that prevents super from being called from within a block. MK.
|
20
|
-
@mutex.lock
|
21
|
-
begin
|
22
|
-
super
|
23
|
-
ensure
|
24
|
-
@mutex.unlock
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
28
|
-
def delete(o)
|
29
|
-
@mutex.lock
|
30
|
-
begin
|
31
|
-
super
|
32
|
-
ensure
|
33
|
-
@mutex.unlock
|
34
|
-
end
|
35
|
-
end
|
36
|
-
|
37
|
-
def delete_if(&block)
|
38
|
-
@mutex.lock
|
39
|
-
begin
|
40
|
-
super
|
41
|
-
ensure
|
42
|
-
@mutex.unlock
|
43
|
-
end
|
44
|
-
end
|
45
|
-
|
46
|
-
def include?(o)
|
47
|
-
@mutex.lock
|
48
|
-
begin
|
49
|
-
super
|
50
|
-
ensure
|
51
|
-
@mutex.unlock
|
52
|
-
end
|
53
|
-
end
|
54
|
-
end
|
55
|
-
end
|
56
|
-
end
|
data/lib/bunny/timeout.rb
DELETED
@@ -1,18 +0,0 @@
|
|
1
|
-
module Bunny
|
2
|
-
# Unifies Ruby standard library's Timeout (which is not accurate on
|
3
|
-
# Ruby 1.8) and SystemTimer (the gem)
|
4
|
-
Timeout = if RUBY_VERSION < "1.9"
|
5
|
-
begin
|
6
|
-
require "bunny/system_timer"
|
7
|
-
Bunny::SystemTimer
|
8
|
-
rescue LoadError
|
9
|
-
Timeout
|
10
|
-
end
|
11
|
-
else
|
12
|
-
Timeout
|
13
|
-
end
|
14
|
-
|
15
|
-
# Backwards compatibility
|
16
|
-
# @private
|
17
|
-
Timer = Timeout
|
18
|
-
end
|
@@ -1,28 +0,0 @@
|
|
1
|
-
module Bunny
|
2
|
-
# Wraps a delivery tag (which is an integer) so that {Bunny::Channel} could
|
3
|
-
# detect stale tags after connection recovery.
|
4
|
-
#
|
5
|
-
# @private
|
6
|
-
class VersionedDeliveryTag
|
7
|
-
attr_reader :tag
|
8
|
-
attr_reader :version
|
9
|
-
|
10
|
-
def initialize(tag, version)
|
11
|
-
raise ArgumentError.new("tag cannot be nil") unless tag
|
12
|
-
raise ArgumentError.new("version cannot be nil") unless version
|
13
|
-
|
14
|
-
@tag = tag
|
15
|
-
@version = version
|
16
|
-
end
|
17
|
-
|
18
|
-
def to_i
|
19
|
-
@tag
|
20
|
-
end
|
21
|
-
|
22
|
-
def stale?(version)
|
23
|
-
raise ArgumentError.new("version cannot be nil") unless version
|
24
|
-
|
25
|
-
@version < version
|
26
|
-
end
|
27
|
-
end
|
28
|
-
end
|