amq-client 0.7.0.alpha25 → 0.7.0.alpha26
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.
- data/.travis.yml +0 -1
- data/examples/coolio_adapter/basic_consume.rb +19 -15
- data/examples/coolio_adapter/channel_close.rb +4 -4
- data/examples/eventmachine_adapter/authentication/plain_password_with_default_role_credentials.rb +1 -1
- data/examples/eventmachine_adapter/basic_consume.rb +19 -17
- data/examples/eventmachine_adapter/basic_publish.rb +5 -5
- data/examples/eventmachine_adapter/channel_close.rb +4 -4
- data/examples/eventmachine_adapter/exchange_declare.rb +8 -8
- data/examples/eventmachine_adapter/kitchen_sink1.rb +10 -10
- data/lib/amq/client/adapter.rb +225 -38
- data/lib/amq/client/adapters/coolio.rb +72 -54
- data/lib/amq/client/adapters/event_machine.rb +67 -60
- data/lib/amq/client/callbacks.rb +18 -9
- data/lib/amq/client/channel.rb +44 -45
- data/lib/amq/client/entity.rb +4 -4
- data/lib/amq/client/exchange.rb +13 -21
- data/lib/amq/client/queue.rb +31 -31
- data/lib/amq/client/settings.rb +12 -1
- data/lib/amq/client/version.rb +1 -1
- data/spec/integration/coolio/connection_close_spec.rb +5 -5
- data/spec/integration/coolio/connection_start_spec.rb +9 -6
- data/spec/integration/eventmachine/channel_close_spec.rb +4 -4
- data/spec/integration/eventmachine/connection_close_spec.rb +5 -5
- data/spec/unit/client/entity_spec.rb +3 -8
- metadata +5 -6
- data/lib/amq/client/connection.rb +0 -246
data/lib/amq/client/channel.rb
CHANGED
@@ -41,8 +41,8 @@ module AMQ
|
|
41
41
|
attr_accessor :flow_is_active
|
42
42
|
|
43
43
|
|
44
|
-
def initialize(
|
45
|
-
super(
|
44
|
+
def initialize(connection, id)
|
45
|
+
super(connection)
|
46
46
|
|
47
47
|
@id = id
|
48
48
|
@exchanges = Hash.new
|
@@ -54,8 +54,8 @@ module AMQ
|
|
54
54
|
# 65536 is here for cases when channel is opened without passing a callback in,
|
55
55
|
# otherwise channel_mix would be nil and it causes a lot of needless headaches.
|
56
56
|
# lets just have this default. MK.
|
57
|
-
channel_max = if
|
58
|
-
|
57
|
+
channel_max = if @connection.open?
|
58
|
+
@connection.channel_max || 65536
|
59
59
|
else
|
60
60
|
65536
|
61
61
|
end
|
@@ -84,27 +84,27 @@ module AMQ
|
|
84
84
|
#
|
85
85
|
# @return [AMQ::Client::Connection] Connection this channel belongs to.
|
86
86
|
def connection
|
87
|
-
@
|
87
|
+
@connection
|
88
88
|
end # connection
|
89
89
|
|
90
90
|
# Opens AMQP channel.
|
91
91
|
#
|
92
92
|
# @api public
|
93
93
|
def open(&block)
|
94
|
-
@
|
95
|
-
@
|
94
|
+
@connection.send Protocol::Channel::Open.encode(@id, AMQ::Protocol::EMPTY_STRING)
|
95
|
+
@connection.channels[@id] = self
|
96
96
|
self.status = :opening
|
97
97
|
|
98
|
-
self.
|
98
|
+
self.redefine_callback :open, &block
|
99
99
|
end
|
100
100
|
|
101
101
|
# Closes AMQP channel.
|
102
102
|
#
|
103
103
|
# @api public
|
104
104
|
def close(reply_code = 200, reply_text = DEFAULT_REPLY_TEXT, class_id = 0, method_id = 0, &block)
|
105
|
-
@
|
105
|
+
@connection.send Protocol::Channel::Close.encode(@id, reply_code, reply_text, class_id, method_id)
|
106
106
|
|
107
|
-
self.
|
107
|
+
self.redefine_callback :close, &block
|
108
108
|
end
|
109
109
|
|
110
110
|
|
@@ -113,7 +113,7 @@ module AMQ
|
|
113
113
|
# @api public
|
114
114
|
# @see http://bit.ly/htCzCX AMQP 0.9.1 protocol documentation (Section 1.8.3.13.)
|
115
115
|
def acknowledge(delivery_tag, multiple = false)
|
116
|
-
@
|
116
|
+
@connection.send(Protocol::Basic::Ack.encode(self.id, delivery_tag, multiple))
|
117
117
|
|
118
118
|
self
|
119
119
|
end # acknowledge(delivery_tag, multiple = false)
|
@@ -123,7 +123,7 @@ module AMQ
|
|
123
123
|
# @api public
|
124
124
|
# @see http://bit.ly/htCzCX AMQP 0.9.1 protocol documentation (Section 1.8.3.14.)
|
125
125
|
def reject(delivery_tag, requeue = true)
|
126
|
-
@
|
126
|
+
@connection.send(Protocol::Basic::Reject.encode(self.id, delivery_tag, requeue))
|
127
127
|
|
128
128
|
self
|
129
129
|
end # reject(delivery_tag, requeue = true)
|
@@ -134,7 +134,7 @@ module AMQ
|
|
134
134
|
# @note RabbitMQ as of 2.3.1 does not support prefetch_size.
|
135
135
|
# @api public
|
136
136
|
def qos(prefetch_size = 0, prefetch_count = 32, global = false, &block)
|
137
|
-
@
|
137
|
+
@connection.send Protocol::Basic::Qos.encode(@id, prefetch_size, prefetch_count, global)
|
138
138
|
|
139
139
|
self.redefine_callback :qos, &block
|
140
140
|
self
|
@@ -149,7 +149,7 @@ module AMQ
|
|
149
149
|
# @see http://bit.ly/htCzCX AMQP 0.9.1 protocol documentation (Section 1.8.3.16.)
|
150
150
|
# @api public
|
151
151
|
def recover(requeue = true, &block)
|
152
|
-
@
|
152
|
+
@connection.send(Protocol::Basic::Recover.encode(@id, requeue))
|
153
153
|
|
154
154
|
self.redefine_callback :recover, &block
|
155
155
|
self
|
@@ -166,7 +166,7 @@ module AMQ
|
|
166
166
|
# @see http://bit.ly/htCzCX AMQP 0.9.1 protocol documentation (Section 1.5.2.3.)
|
167
167
|
# @api public
|
168
168
|
def flow(active = false, &block)
|
169
|
-
@
|
169
|
+
@connection.send Protocol::Channel::Flow.encode(@id, active)
|
170
170
|
|
171
171
|
self.redefine_callback :flow, &block
|
172
172
|
self
|
@@ -178,7 +178,7 @@ module AMQ
|
|
178
178
|
#
|
179
179
|
# @api public
|
180
180
|
def tx_select(&block)
|
181
|
-
@
|
181
|
+
@connection.send Protocol::Tx::Select.encode(@id)
|
182
182
|
|
183
183
|
self.redefine_callback :tx_select, &block
|
184
184
|
self
|
@@ -188,7 +188,7 @@ module AMQ
|
|
188
188
|
#
|
189
189
|
# @api public
|
190
190
|
def tx_commit(&block)
|
191
|
-
@
|
191
|
+
@connection.send Protocol::Tx::Commit.encode(@id)
|
192
192
|
|
193
193
|
self.redefine_callback :tx_commit, &block
|
194
194
|
self
|
@@ -198,7 +198,7 @@ module AMQ
|
|
198
198
|
#
|
199
199
|
# @api public
|
200
200
|
def tx_rollback(&block)
|
201
|
-
@
|
201
|
+
@connection.send Protocol::Tx::Rollback.encode(@id)
|
202
202
|
|
203
203
|
self.redefine_callback :tx_rollback, &block
|
204
204
|
self
|
@@ -270,78 +270,77 @@ module AMQ
|
|
270
270
|
|
271
271
|
|
272
272
|
|
273
|
-
def handle_open_ok(
|
273
|
+
def handle_open_ok(open_ok)
|
274
274
|
self.status = :opened
|
275
|
-
self.exec_callback_once_yielding_self(:open,
|
275
|
+
self.exec_callback_once_yielding_self(:open, open_ok)
|
276
276
|
end
|
277
277
|
|
278
|
-
def handle_close_ok(
|
278
|
+
def handle_close_ok(close_ok)
|
279
279
|
self.status = :closed
|
280
|
-
self.exec_callback_once_yielding_self(:close,
|
280
|
+
self.exec_callback_once_yielding_self(:close, close_ok)
|
281
281
|
end
|
282
282
|
|
283
|
-
def handle_close(
|
283
|
+
def handle_close(channel_close)
|
284
284
|
self.status = :closed
|
285
|
-
self.exec_callback_yielding_self(:error,
|
285
|
+
self.exec_callback_yielding_self(:error, channel_close)
|
286
286
|
|
287
|
-
self.handle_connection_interruption(
|
287
|
+
self.handle_connection_interruption(channel_close)
|
288
288
|
end
|
289
289
|
|
290
|
-
# === Handlers ===
|
291
290
|
|
292
|
-
|
293
|
-
|
291
|
+
|
292
|
+
self.handle(Protocol::Channel::OpenOk) do |connection, frame|
|
293
|
+
channel = connection.channels[frame.channel]
|
294
294
|
channel.handle_open_ok(frame.decode_payload)
|
295
295
|
end
|
296
296
|
|
297
|
-
self.handle(Protocol::Channel::CloseOk) do |
|
297
|
+
self.handle(Protocol::Channel::CloseOk) do |connection, frame|
|
298
298
|
method = frame.decode_payload
|
299
|
-
channels =
|
299
|
+
channels = connection.channels
|
300
300
|
|
301
301
|
channel = channels[frame.channel]
|
302
302
|
channels.delete(channel)
|
303
|
-
|
304
303
|
channel.handle_close_ok(method)
|
305
304
|
end
|
306
305
|
|
307
|
-
self.handle(Protocol::Channel::Close) do |
|
306
|
+
self.handle(Protocol::Channel::Close) do |connection, frame|
|
308
307
|
method = frame.decode_payload
|
309
|
-
channels =
|
308
|
+
channels = connection.channels
|
310
309
|
channel = channels[frame.channel]
|
311
310
|
|
312
311
|
channel.handle_close(method)
|
313
312
|
end
|
314
313
|
|
315
|
-
self.handle(Protocol::Basic::QosOk) do |
|
316
|
-
channel =
|
314
|
+
self.handle(Protocol::Basic::QosOk) do |connection, frame|
|
315
|
+
channel = connection.channels[frame.channel]
|
317
316
|
channel.exec_callback(:qos, frame.decode_payload)
|
318
317
|
end
|
319
318
|
|
320
|
-
self.handle(Protocol::Basic::RecoverOk) do |
|
321
|
-
channel =
|
319
|
+
self.handle(Protocol::Basic::RecoverOk) do |connection, frame|
|
320
|
+
channel = connection.channels[frame.channel]
|
322
321
|
channel.exec_callback(:recover, frame.decode_payload)
|
323
322
|
end
|
324
323
|
|
325
|
-
self.handle(Protocol::Channel::FlowOk) do |
|
326
|
-
channel =
|
324
|
+
self.handle(Protocol::Channel::FlowOk) do |connection, frame|
|
325
|
+
channel = connection.channels[frame.channel]
|
327
326
|
method = frame.decode_payload
|
328
327
|
|
329
328
|
channel.flow_is_active = method.active
|
330
329
|
channel.exec_callback(:flow, method)
|
331
330
|
end
|
332
331
|
|
333
|
-
self.handle(Protocol::Tx::SelectOk) do |
|
334
|
-
channel =
|
332
|
+
self.handle(Protocol::Tx::SelectOk) do |connection, frame|
|
333
|
+
channel = connection.channels[frame.channel]
|
335
334
|
channel.exec_callback(:tx_select, frame.decode_payload)
|
336
335
|
end
|
337
336
|
|
338
|
-
self.handle(Protocol::Tx::CommitOk) do |
|
339
|
-
channel =
|
337
|
+
self.handle(Protocol::Tx::CommitOk) do |connection, frame|
|
338
|
+
channel = connection.channels[frame.channel]
|
340
339
|
channel.exec_callback(:tx_commit, frame.decode_payload)
|
341
340
|
end
|
342
341
|
|
343
|
-
self.handle(Protocol::Tx::RollbackOk) do |
|
344
|
-
channel =
|
342
|
+
self.handle(Protocol::Tx::RollbackOk) do |connection, frame|
|
343
|
+
channel = connection.channels[frame.channel]
|
345
344
|
channel.exec_callback(:tx_rollback, frame.decode_payload)
|
346
345
|
end
|
347
346
|
end # Channel
|
data/lib/amq/client/entity.rb
CHANGED
@@ -53,11 +53,11 @@ module AMQ
|
|
53
53
|
attr_reader :callbacks
|
54
54
|
|
55
55
|
|
56
|
-
def initialize(
|
57
|
-
@
|
56
|
+
def initialize(connection)
|
57
|
+
@connection = connection
|
58
58
|
# Be careful with default values for #ruby hashes: h = Hash.new(Array.new); h[:key] ||= 1
|
59
59
|
# won't assign anything to :key. MK.
|
60
|
-
@callbacks
|
60
|
+
@callbacks = Hash.new
|
61
61
|
end
|
62
62
|
|
63
63
|
|
@@ -65,7 +65,7 @@ module AMQ
|
|
65
65
|
# Asynchronous error handling.
|
66
66
|
# Set callback for given class (Queue for example)
|
67
67
|
# or for the Connection class (or instance, of course).
|
68
|
-
callbacks = [self.callbacks[:close], self.
|
68
|
+
callbacks = [self.callbacks[:close], self.connection.callbacks[:close]].flatten.compact
|
69
69
|
|
70
70
|
callbacks.map { |c| c.call(exception) } if callbacks.any?
|
71
71
|
end
|
data/lib/amq/client/exchange.rb
CHANGED
@@ -34,12 +34,12 @@ module AMQ
|
|
34
34
|
# @return [Symbol] One of :direct, :fanout, :topic, :headers
|
35
35
|
attr_reader :type
|
36
36
|
|
37
|
-
def initialize(
|
37
|
+
def initialize(connection, channel, name, type = :fanout)
|
38
38
|
if !(TYPES.include?(type.to_sym) || type.to_s =~ /^x-.+/i)
|
39
39
|
raise IncompatibleExchangeTypeError.new(TYPES, type)
|
40
40
|
end
|
41
41
|
|
42
|
-
@
|
42
|
+
@connection = connection
|
43
43
|
@channel = channel
|
44
44
|
@name = name
|
45
45
|
@type = type
|
@@ -49,7 +49,7 @@ module AMQ
|
|
49
49
|
@channel.register_exchange(self)
|
50
50
|
end
|
51
51
|
|
52
|
-
super(
|
52
|
+
super(connection)
|
53
53
|
end
|
54
54
|
|
55
55
|
|
@@ -68,7 +68,7 @@ module AMQ
|
|
68
68
|
|
69
69
|
|
70
70
|
def declare(passive = false, durable = false, auto_delete = false, nowait = false, arguments = nil, &block)
|
71
|
-
@
|
71
|
+
@connection.send(Protocol::Exchange::Declare.encode(@channel.id, @name, @type.to_s, passive, durable, auto_delete, false, nowait, arguments))
|
72
72
|
|
73
73
|
unless nowait
|
74
74
|
self.define_callback(:declare, &block)
|
@@ -80,7 +80,7 @@ module AMQ
|
|
80
80
|
|
81
81
|
|
82
82
|
def delete(if_unused = false, nowait = false, &block)
|
83
|
-
@
|
83
|
+
@connection.send(Protocol::Exchange::Delete.encode(@channel.id, @name, if_unused, nowait))
|
84
84
|
|
85
85
|
unless nowait
|
86
86
|
self.define_callback(:delete, &block)
|
@@ -95,7 +95,7 @@ module AMQ
|
|
95
95
|
|
96
96
|
def publish(payload, routing_key = AMQ::Protocol::EMPTY_STRING, user_headers = {}, mandatory = false, immediate = false, frame_size = nil, &block)
|
97
97
|
headers = { :priority => 0, :delivery_mode => 2, :content_type => "application/octet-stream" }.merge(user_headers)
|
98
|
-
@
|
98
|
+
@connection.send_frameset(Protocol::Basic::Publish.encode(@channel.id, payload, headers, @name, routing_key, mandatory, immediate, (frame_size || @connection.frame_max)))
|
99
99
|
|
100
100
|
block.call if block
|
101
101
|
|
@@ -125,32 +125,24 @@ module AMQ
|
|
125
125
|
|
126
126
|
|
127
127
|
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
self.handle(Protocol::Exchange::DeclareOk) do |client, frame|
|
132
|
-
method = frame.decode_payload
|
133
|
-
|
134
|
-
# We should have cache API, so it'll be easy to change caching behaviour easily.
|
135
|
-
# So in the amq-client we don't want to cache more than just the last instance per each channel,
|
136
|
-
# whereas more opinionated clients might want to have every single instance in the cache,
|
137
|
-
# so they can iterate over it etc.
|
138
|
-
channel = client.connection.channels[frame.channel]
|
128
|
+
self.handle(Protocol::Exchange::DeclareOk) do |connection, frame|
|
129
|
+
method = frame.decode_payload
|
130
|
+
channel = connection.channels[frame.channel]
|
139
131
|
exchange = channel.exchanges_awaiting_declare_ok.shift
|
140
132
|
|
141
133
|
exchange.handle_declare_ok(method)
|
142
134
|
end # handle
|
143
135
|
|
144
136
|
|
145
|
-
self.handle(Protocol::Exchange::DeleteOk) do |
|
146
|
-
channel =
|
137
|
+
self.handle(Protocol::Exchange::DeleteOk) do |connection, frame|
|
138
|
+
channel = connection.channels[frame.channel]
|
147
139
|
exchange = channel.exchanges_awaiting_delete_ok.shift
|
148
140
|
exchange.handle_delete_ok(frame.decode_payload)
|
149
141
|
end # handle
|
150
142
|
|
151
143
|
|
152
|
-
self.handle(Protocol::Basic::Return) do |
|
153
|
-
channel =
|
144
|
+
self.handle(Protocol::Basic::Return) do |connection, frame, content_frames|
|
145
|
+
channel = connection.channels[frame.channel]
|
154
146
|
method = frame.decode_payload
|
155
147
|
exchange = channel.find_exchange(method.exchange)
|
156
148
|
|
data/lib/amq/client/queue.rb
CHANGED
@@ -15,7 +15,7 @@ module AMQ
|
|
15
15
|
|
16
16
|
include Entity
|
17
17
|
include ServerNamedEntity
|
18
|
-
extend ProtocolMethodHandlers
|
18
|
+
extend ProtocolMethodHandlers
|
19
19
|
|
20
20
|
|
21
21
|
#
|
@@ -35,8 +35,8 @@ module AMQ
|
|
35
35
|
# @param [AMQ::Client::Channel] AMQ channel this queue object uses.
|
36
36
|
# @param [String] Queue name. Please note that AMQP spec does not require brokers to support Unicode for queue names.
|
37
37
|
# @api public
|
38
|
-
def initialize(
|
39
|
-
super(
|
38
|
+
def initialize(connection, channel, name = AMQ::Protocol::EMPTY_STRING)
|
39
|
+
super(connection)
|
40
40
|
|
41
41
|
@name = name
|
42
42
|
@channel = channel
|
@@ -87,7 +87,7 @@ module AMQ
|
|
87
87
|
@auto_delete = auto_delete
|
88
88
|
|
89
89
|
nowait = true if !block && !@name.empty?
|
90
|
-
@
|
90
|
+
@connection.send(Protocol::Queue::Declare.encode(@channel.id, @name, passive, durable, exclusive, auto_delete, nowait, arguments))
|
91
91
|
|
92
92
|
if !nowait
|
93
93
|
self.append_callback(:declare, &block)
|
@@ -108,7 +108,7 @@ module AMQ
|
|
108
108
|
# @see http://bit.ly/htCzCX AMQP 0.9.1 protocol documentation (Section 1.7.2.9.)
|
109
109
|
def delete(if_unused = false, if_empty = false, nowait = false, &block)
|
110
110
|
nowait = true unless block
|
111
|
-
@
|
111
|
+
@connection.send(Protocol::Queue::Delete.encode(@channel.id, @name, if_unused, if_empty, nowait))
|
112
112
|
|
113
113
|
if !nowait
|
114
114
|
self.append_callback(:delete, &block)
|
@@ -134,7 +134,7 @@ module AMQ
|
|
134
134
|
exchange
|
135
135
|
end
|
136
136
|
|
137
|
-
@
|
137
|
+
@connection.send(Protocol::Queue::Bind.encode(@channel.id, @name, exchange_name, routing_key, nowait, arguments))
|
138
138
|
|
139
139
|
if !nowait
|
140
140
|
self.append_callback(:bind, &block)
|
@@ -159,7 +159,7 @@ module AMQ
|
|
159
159
|
exchange
|
160
160
|
end
|
161
161
|
|
162
|
-
@
|
162
|
+
@connection.send(Protocol::Queue::Unbind.encode(@channel.id, @name, exchange_name, routing_key, arguments))
|
163
163
|
|
164
164
|
self.append_callback(:unbind, &block)
|
165
165
|
# TODO: handle channel & connection-level exceptions
|
@@ -179,7 +179,7 @@ module AMQ
|
|
179
179
|
|
180
180
|
nowait = true unless block
|
181
181
|
@consumer_tag = generate_consumer_tag(name)
|
182
|
-
@
|
182
|
+
@connection.send(Protocol::Basic::Consume.encode(@channel.id, @name, @consumer_tag, no_local, no_ack, exclusive, nowait, arguments))
|
183
183
|
|
184
184
|
@channel.consumers[@consumer_tag] = self
|
185
185
|
|
@@ -220,7 +220,7 @@ module AMQ
|
|
220
220
|
# @api public
|
221
221
|
# @see http://bit.ly/htCzCX AMQP 0.9.1 protocol documentation (Section 1.8.3.10.)
|
222
222
|
def get(no_ack = false, &block)
|
223
|
-
@
|
223
|
+
@connection.send(Protocol::Basic::Get.encode(@channel.id, @name, no_ack))
|
224
224
|
|
225
225
|
# most people only want one callback per #get call. Consider the following example:
|
226
226
|
#
|
@@ -241,7 +241,7 @@ module AMQ
|
|
241
241
|
def cancel(nowait = false, &block)
|
242
242
|
raise "There is no consumer tag for this queue. This usually means that you are trying to unsubscribe a queue that never was subscribed for messages in the first place." if @consumer_tag.nil?
|
243
243
|
|
244
|
-
@
|
244
|
+
@connection.send(Protocol::Basic::Cancel.encode(@channel.id, @consumer_tag, nowait))
|
245
245
|
@consumer_tag = nil
|
246
246
|
self.clear_callbacks(:delivery)
|
247
247
|
self.clear_callbacks(:consume)
|
@@ -261,7 +261,7 @@ module AMQ
|
|
261
261
|
# @see http://bit.ly/htCzCX AMQP 0.9.1 protocol documentation (Section 1.7.2.7.)
|
262
262
|
def purge(nowait = false, &block)
|
263
263
|
nowait = true unless block
|
264
|
-
@
|
264
|
+
@connection.send(Protocol::Queue::Purge.encode(@channel.id, @name, nowait))
|
265
265
|
|
266
266
|
if !nowait
|
267
267
|
self.redefine_callback(:purge, &block)
|
@@ -358,49 +358,49 @@ module AMQ
|
|
358
358
|
|
359
359
|
# Get the first queue which didn't receive Queue.Declare-Ok yet and run its declare callback.
|
360
360
|
# The cache includes only queues with {nowait: false}.
|
361
|
-
self.handle(Protocol::Queue::DeclareOk) do |
|
361
|
+
self.handle(Protocol::Queue::DeclareOk) do |connection, frame|
|
362
362
|
method = frame.decode_payload
|
363
363
|
|
364
|
-
channel =
|
364
|
+
channel = connection.channels[frame.channel]
|
365
365
|
queue = channel.queues_awaiting_declare_ok.shift
|
366
366
|
|
367
367
|
queue.handle_declare_ok(method)
|
368
368
|
end
|
369
369
|
|
370
370
|
|
371
|
-
self.handle(Protocol::Queue::DeleteOk) do |
|
372
|
-
channel =
|
371
|
+
self.handle(Protocol::Queue::DeleteOk) do |connection, frame|
|
372
|
+
channel = connection.channels[frame.channel]
|
373
373
|
queue = channel.queues_awaiting_delete_ok.shift
|
374
374
|
queue.handle_delete_ok(frame.decode_payload)
|
375
375
|
end
|
376
376
|
|
377
377
|
|
378
|
-
self.handle(Protocol::Queue::BindOk) do |
|
379
|
-
channel =
|
378
|
+
self.handle(Protocol::Queue::BindOk) do |connection, frame|
|
379
|
+
channel = connection.channels[frame.channel]
|
380
380
|
queue = channel.queues_awaiting_bind_ok.shift
|
381
381
|
|
382
382
|
queue.handle_bind_ok(frame.decode_payload)
|
383
383
|
end
|
384
384
|
|
385
385
|
|
386
|
-
self.handle(Protocol::Queue::UnbindOk) do |
|
387
|
-
channel =
|
386
|
+
self.handle(Protocol::Queue::UnbindOk) do |connection, frame|
|
387
|
+
channel = connection.channels[frame.channel]
|
388
388
|
queue = channel.queues_awaiting_unbind_ok.shift
|
389
389
|
|
390
390
|
queue.handle_unbind_ok(frame.decode_payload)
|
391
391
|
end
|
392
392
|
|
393
393
|
|
394
|
-
self.handle(Protocol::Basic::ConsumeOk) do |
|
395
|
-
channel =
|
394
|
+
self.handle(Protocol::Basic::ConsumeOk) do |connection, frame|
|
395
|
+
channel = connection.channels[frame.channel]
|
396
396
|
queue = channel.queues_awaiting_consume_ok.shift
|
397
397
|
|
398
398
|
queue.handle_consume_ok(frame.decode_payload)
|
399
399
|
end
|
400
400
|
|
401
401
|
|
402
|
-
self.handle(Protocol::Basic::CancelOk) do |
|
403
|
-
channel =
|
402
|
+
self.handle(Protocol::Basic::CancelOk) do |connection, frame|
|
403
|
+
channel = connection.channels[frame.channel]
|
404
404
|
queue = channel.queues_awaiting_cancel_ok.shift
|
405
405
|
|
406
406
|
queue.handle_consume_ok(frame.decode_payload)
|
@@ -408,8 +408,8 @@ module AMQ
|
|
408
408
|
|
409
409
|
|
410
410
|
# Basic.Deliver
|
411
|
-
self.handle(Protocol::Basic::Deliver) do |
|
412
|
-
channel =
|
411
|
+
self.handle(Protocol::Basic::Deliver) do |connection, method_frame, content_frames|
|
412
|
+
channel = connection.channels[method_frame.channel]
|
413
413
|
method = method_frame.decode_payload
|
414
414
|
queue = channel.consumers[method.consumer_tag]
|
415
415
|
|
@@ -420,16 +420,16 @@ module AMQ
|
|
420
420
|
end
|
421
421
|
|
422
422
|
|
423
|
-
self.handle(Protocol::Queue::PurgeOk) do |
|
424
|
-
channel =
|
423
|
+
self.handle(Protocol::Queue::PurgeOk) do |connection, frame|
|
424
|
+
channel = connection.channels[frame.channel]
|
425
425
|
queue = channel.queues_awaiting_purge_ok.shift
|
426
426
|
|
427
427
|
queue.handle_purge_ok(frame.decode_payload)
|
428
428
|
end
|
429
429
|
|
430
430
|
|
431
|
-
self.handle(Protocol::Basic::GetOk) do |
|
432
|
-
channel =
|
431
|
+
self.handle(Protocol::Basic::GetOk) do |connection, frame, content_frames|
|
432
|
+
channel = connection.channels[frame.channel]
|
433
433
|
queue = channel.queues_awaiting_get_response.shift
|
434
434
|
method = frame.decode_payload
|
435
435
|
|
@@ -440,8 +440,8 @@ module AMQ
|
|
440
440
|
end
|
441
441
|
|
442
442
|
|
443
|
-
self.handle(Protocol::Basic::GetEmpty) do |
|
444
|
-
channel =
|
443
|
+
self.handle(Protocol::Basic::GetEmpty) do |connection, frame|
|
444
|
+
channel = connection.channels[frame.channel]
|
445
445
|
queue = channel.queues_awaiting_get_response.shift
|
446
446
|
|
447
447
|
queue.handle_get_empty(frame.decode_payload)
|