bunny 0.5.3 → 0.6.0
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/{README → README.rdoc} +9 -2
- data/bunny.gemspec +12 -7
- data/examples/simple_08.rb +1 -1
- data/examples/simple_09.rb +1 -1
- data/examples/simple_ack_08.rb +1 -1
- data/examples/simple_ack_09.rb +1 -1
- data/examples/simple_consumer_08.rb +6 -14
- data/examples/simple_consumer_09.rb +6 -14
- data/examples/simple_fanout_08.rb +2 -2
- data/examples/simple_fanout_09.rb +2 -2
- data/examples/simple_headers_08.rb +1 -1
- data/examples/simple_headers_09.rb +1 -1
- data/examples/simple_topic_08.rb +4 -4
- data/examples/simple_topic_09.rb +4 -4
- data/lib/bunny.rb +23 -15
- data/lib/bunny/channel08.rb +8 -2
- data/lib/bunny/channel09.rb +8 -2
- data/lib/bunny/client08.rb +67 -24
- data/lib/bunny/client09.rb +88 -48
- data/lib/bunny/exchange08.rb +55 -43
- data/lib/bunny/exchange09.rb +67 -54
- data/lib/bunny/queue08.rb +79 -137
- data/lib/bunny/queue09.rb +79 -141
- data/lib/bunny/subscription08.rb +85 -0
- data/lib/bunny/subscription09.rb +85 -0
- data/lib/qrack/client.rb +29 -10
- data/lib/qrack/protocol/spec08.rb +1 -0
- data/lib/qrack/protocol/spec09.rb +1 -0
- data/lib/qrack/qrack08.rb +1 -0
- data/lib/qrack/qrack09.rb +1 -0
- data/lib/qrack/queue.rb +1 -1
- data/lib/qrack/subscription.rb +102 -0
- data/spec/spec_08/bunny_spec.rb +6 -0
- data/spec/spec_08/connection_spec.rb +12 -0
- data/spec/spec_08/exchange_spec.rb +19 -3
- data/spec/spec_08/queue_spec.rb +87 -13
- data/spec/spec_09/bunny_spec.rb +7 -1
- data/spec/spec_09/connection_spec.rb +12 -0
- data/spec/spec_09/exchange_spec.rb +19 -3
- data/spec/spec_09/queue_spec.rb +94 -21
- metadata +11 -6
data/lib/bunny/client09.rb
CHANGED
@@ -20,10 +20,15 @@ Sets up a Bunny::Client object ready for connection to a broker/server. _Client_
|
|
20
20
|
==== OPTIONS:
|
21
21
|
|
22
22
|
* <tt>:host => '_hostname_' (default = 'localhost')</tt>
|
23
|
-
* <tt>:port => _portno_ (default = 5672)</tt>
|
23
|
+
* <tt>:port => _portno_ (default = 5672 or 5671 if :ssl set to true)</tt>
|
24
24
|
* <tt>:vhost => '_vhostname_' (default = '/')</tt>
|
25
25
|
* <tt>:user => '_username_' (default = 'guest')</tt>
|
26
26
|
* <tt>:pass => '_password_' (default = 'guest')</tt>
|
27
|
+
* <tt>:ssl => true or false (default = false)</tt> - If set to _true_, ssl
|
28
|
+
encryption will be used and port will default to 5671.
|
29
|
+
* <tt>:verify_ssl => true or false (default = true)</tt> - If ssl is enabled,
|
30
|
+
this will cause OpenSSL to validate the server certificate unless this
|
31
|
+
parameter is set to _false_.
|
27
32
|
* <tt>:logfile => '_logfilepath_' (default = nil)</tt>
|
28
33
|
* <tt>:logging => true or false (_default_)</tt> - If set to _true_, session information is sent
|
29
34
|
to STDOUT if <tt>:logfile</tt> has not been specified. Otherwise, session information is written to
|
@@ -31,15 +36,48 @@ Sets up a Bunny::Client object ready for connection to a broker/server. _Client_
|
|
31
36
|
* <tt>:frame_max => maximum frame size in bytes (default = 131072)</tt>
|
32
37
|
* <tt>:channel_max => maximum number of channels (default = 0 no maximum)</tt>
|
33
38
|
* <tt>:heartbeat => number of seconds (default = 0 no heartbeat)</tt>
|
39
|
+
* <tt>:connect_timeout => number of seconds before Qrack::ConnectionTimeout is raised (default = 5)</tt>
|
34
40
|
|
35
41
|
=end
|
36
42
|
|
37
43
|
def initialize(opts = {})
|
38
44
|
super
|
39
45
|
@spec = '0-9-1'
|
40
|
-
@port = opts[:port] || Qrack::Protocol09::PORT
|
46
|
+
@port = opts[:port] || (opts[:ssl] ? Qrack::Protocol09::SSL_PORT : Qrack::Protocol09::PORT)
|
41
47
|
end
|
42
48
|
|
49
|
+
=begin rdoc
|
50
|
+
|
51
|
+
=== DESCRIPTION:
|
52
|
+
|
53
|
+
Checks response from AMQP methods and takes appropriate action
|
54
|
+
|
55
|
+
=end
|
56
|
+
|
57
|
+
def check_response(received_method, expected_method, err_msg, err_class = Bunny::ProtocolError)
|
58
|
+
case
|
59
|
+
when received_method.is_a?(Qrack::Protocol09::Connection::Close)
|
60
|
+
# Clean up the socket
|
61
|
+
close_socket
|
62
|
+
|
63
|
+
raise Bunny::ForcedConnectionCloseError,
|
64
|
+
"Error Reply Code: #{received_method.reply_code}\nError Reply Text: #{received_method.reply_text}"
|
65
|
+
|
66
|
+
when received_method.is_a?(Qrack::Protocol09::Channel::Close)
|
67
|
+
# Clean up the channel
|
68
|
+
channel.active = false
|
69
|
+
|
70
|
+
raise Bunny::ForcedChannelCloseError,
|
71
|
+
"Error Reply Code: #{received_method.reply_code}\nError Reply Text: #{received_method.reply_text}"
|
72
|
+
|
73
|
+
when !received_method.is_a?(expected_method)
|
74
|
+
raise err_class, err_msg
|
75
|
+
|
76
|
+
else
|
77
|
+
:response_ok
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
43
81
|
def close_connection
|
44
82
|
# Set client channel to zero
|
45
83
|
switch_channel(0)
|
@@ -47,7 +85,11 @@ Sets up a Bunny::Client object ready for connection to a broker/server. _Client_
|
|
47
85
|
send_frame(
|
48
86
|
Qrack::Protocol09::Connection::Close.new(:reply_code => 200, :reply_text => 'Goodbye', :class_id => 0, :method_id => 0)
|
49
87
|
)
|
50
|
-
|
88
|
+
|
89
|
+
method = next_method
|
90
|
+
|
91
|
+
check_response(method, Qrack::Protocol09::Connection::CloseOk, "Error closing connection")
|
92
|
+
|
51
93
|
end
|
52
94
|
|
53
95
|
def create_channel
|
@@ -86,8 +128,7 @@ Exchange
|
|
86
128
|
=end
|
87
129
|
|
88
130
|
def exchange(name, opts = {})
|
89
|
-
|
90
|
-
exchanges[name] ||= Bunny::Exchange09.new(self, name, opts)
|
131
|
+
exchanges[name] || Bunny::Exchange09.new(self, name, opts)
|
91
132
|
end
|
92
133
|
|
93
134
|
def init_connection
|
@@ -135,6 +176,34 @@ Exchange
|
|
135
176
|
|
136
177
|
end
|
137
178
|
|
179
|
+
def open_connection
|
180
|
+
send_frame(
|
181
|
+
Qrack::Protocol09::Connection::StartOk.new(
|
182
|
+
:client_properties => {:platform => 'Ruby', :product => 'Bunny', :information => 'http://github.com/celldee/bunny', :version => VERSION},
|
183
|
+
:mechanism => 'PLAIN',
|
184
|
+
:response => "\0" + @user + "\0" + @pass,
|
185
|
+
:locale => 'en_US'
|
186
|
+
)
|
187
|
+
)
|
188
|
+
|
189
|
+
frame = next_frame
|
190
|
+
raise Bunny::ProtocolError, "Connection failed - user: #{@user}" if frame.nil?
|
191
|
+
|
192
|
+
method = frame.payload
|
193
|
+
|
194
|
+
if method.is_a?(Qrack::Protocol09::Connection::Tune)
|
195
|
+
send_frame(
|
196
|
+
Qrack::Protocol09::Connection::TuneOk.new( :channel_max => @channel_max, :frame_max => @frame_max, :heartbeat => @heartbeat)
|
197
|
+
)
|
198
|
+
end
|
199
|
+
|
200
|
+
send_frame(
|
201
|
+
Qrack::Protocol09::Connection::Open.new(:virtual_host => @vhost, :reserved_1 => 0, :reserved_2 => false)
|
202
|
+
)
|
203
|
+
|
204
|
+
raise Bunny::ProtocolError, 'Cannot open connection' unless next_method.is_a?(Qrack::Protocol09::Connection::OpenOk)
|
205
|
+
end
|
206
|
+
|
138
207
|
=begin rdoc
|
139
208
|
|
140
209
|
=== DESCRIPTION:
|
@@ -173,9 +242,9 @@ true, they are applied to the entire connection.
|
|
173
242
|
Qrack::Protocol09::Basic::Qos.new({ :prefetch_size => 0, :prefetch_count => 1, :global => false }.merge(opts))
|
174
243
|
)
|
175
244
|
|
176
|
-
|
177
|
-
|
178
|
-
|
245
|
+
method = next_method
|
246
|
+
|
247
|
+
check_response(method, Qrack::Protocol09::Basic::QosOk, "Error specifying Quality of Service")
|
179
248
|
|
180
249
|
# return confirmation
|
181
250
|
:qos_ok
|
@@ -221,9 +290,8 @@ Queue
|
|
221
290
|
name = nil
|
222
291
|
end
|
223
292
|
|
224
|
-
|
225
|
-
|
226
|
-
Bunny::Queue09.new(self, name, opts)
|
293
|
+
# Queue is responsible for placing itself in the list of queues
|
294
|
+
queues[name] || Bunny::Queue09.new(self, name, opts)
|
227
295
|
end
|
228
296
|
|
229
297
|
=begin rdoc
|
@@ -326,9 +394,9 @@ after a commit.
|
|
326
394
|
def tx_commit
|
327
395
|
send_frame(Qrack::Protocol09::Tx::Commit.new())
|
328
396
|
|
329
|
-
|
330
|
-
|
331
|
-
|
397
|
+
method = next_method
|
398
|
+
|
399
|
+
check_response(method, Qrack::Protocol09::Tx::CommitOk, "Error commiting transaction")
|
332
400
|
|
333
401
|
# return confirmation
|
334
402
|
:commit_ok
|
@@ -350,9 +418,9 @@ after a rollback.
|
|
350
418
|
def tx_rollback
|
351
419
|
send_frame(Qrack::Protocol09::Tx::Rollback.new())
|
352
420
|
|
353
|
-
|
354
|
-
|
355
|
-
|
421
|
+
method = next_method
|
422
|
+
|
423
|
+
check_response(method, Qrack::Protocol09::Tx::RollbackOk, "Error rolling back transaction")
|
356
424
|
|
357
425
|
# return confirmation
|
358
426
|
:rollback_ok
|
@@ -374,41 +442,13 @@ using the Commit or Rollback methods.
|
|
374
442
|
def tx_select
|
375
443
|
send_frame(Qrack::Protocol09::Tx::Select.new())
|
376
444
|
|
377
|
-
|
378
|
-
|
379
|
-
|
445
|
+
method = next_method
|
446
|
+
|
447
|
+
check_response(method, Qrack::Protocol::Tx::SelectOk, "Error initiating transactions for current channel")
|
380
448
|
|
381
449
|
# return confirmation
|
382
450
|
:select_ok
|
383
451
|
end
|
384
|
-
|
385
|
-
def open_connection
|
386
|
-
send_frame(
|
387
|
-
Qrack::Protocol09::Connection::StartOk.new(
|
388
|
-
:client_properties => {:platform => 'Ruby', :product => 'Bunny', :information => 'http://github.com/celldee/bunny', :version => VERSION},
|
389
|
-
:mechanism => 'PLAIN',
|
390
|
-
:response => "\0" + @user + "\0" + @pass,
|
391
|
-
:locale => 'en_US'
|
392
|
-
)
|
393
|
-
)
|
394
|
-
|
395
|
-
frame = next_frame
|
396
|
-
raise Bunny::ProtocolError, "Connection failed - user: #{@user}, pass: #{@pass}" if frame.nil?
|
397
|
-
|
398
|
-
method = frame.payload
|
399
|
-
|
400
|
-
if method.is_a?(Qrack::Protocol09::Connection::Tune)
|
401
|
-
send_frame(
|
402
|
-
Qrack::Protocol09::Connection::TuneOk.new( :channel_max => @channel_max, :frame_max => @frame_max, :heartbeat => @heartbeat)
|
403
|
-
)
|
404
|
-
end
|
405
|
-
|
406
|
-
send_frame(
|
407
|
-
Qrack::Protocol09::Connection::Open.new(:virtual_host => @vhost, :reserved_1 => 0, :reserved_2 => false)
|
408
|
-
)
|
409
|
-
|
410
|
-
raise Bunny::ProtocolError, 'Cannot open connection' unless next_method.is_a?(Qrack::Protocol09::Connection::OpenOk)
|
411
|
-
end
|
412
452
|
|
413
453
|
private
|
414
454
|
|
data/lib/bunny/exchange08.rb
CHANGED
@@ -63,9 +63,11 @@ specification that applies to your target broker/server.
|
|
63
63
|
)
|
64
64
|
)
|
65
65
|
|
66
|
-
|
67
|
-
|
68
|
-
|
66
|
+
method = client.next_method
|
67
|
+
|
68
|
+
client.check_response(method, Qrack::Protocol::Exchange::DeclareOk,
|
69
|
+
"Error declaring exchange #{name}: type = #{type}")
|
70
|
+
|
69
71
|
end
|
70
72
|
end
|
71
73
|
|
@@ -73,6 +75,45 @@ specification that applies to your target broker/server.
|
|
73
75
|
|
74
76
|
=== DESCRIPTION:
|
75
77
|
|
78
|
+
Requests that an exchange is deleted from broker/server. Removes reference from exchanges
|
79
|
+
if successful. If an error occurs raises _Bunny_::_ProtocolError_.
|
80
|
+
|
81
|
+
==== Options:
|
82
|
+
|
83
|
+
* <tt>:if_unused => true or false (_default_)</tt> - If set to _true_, the server will only
|
84
|
+
delete the exchange if it has no queue bindings. If the exchange has queue bindings the
|
85
|
+
server does not delete it but raises a channel exception instead.
|
86
|
+
* <tt>:nowait => true or false (_default_)</tt> - Ignored by Bunny, always _false_.
|
87
|
+
|
88
|
+
==== Returns:
|
89
|
+
|
90
|
+
<tt>:delete_ok</tt> if successful
|
91
|
+
=end
|
92
|
+
|
93
|
+
def delete(opts = {})
|
94
|
+
# ignore the :nowait option if passed, otherwise program will hang waiting for a
|
95
|
+
# response that will not be sent by the server
|
96
|
+
opts.delete(:nowait)
|
97
|
+
|
98
|
+
client.send_frame(
|
99
|
+
Qrack::Protocol::Exchange::Delete.new({ :exchange => name, :nowait => false }.merge(opts))
|
100
|
+
)
|
101
|
+
|
102
|
+
method = client.next_method
|
103
|
+
|
104
|
+
client.check_response(method, Qrack::Protocol::Exchange::DeleteOk,
|
105
|
+
"Error deleting exchange #{name}")
|
106
|
+
|
107
|
+
client.exchanges.delete(name)
|
108
|
+
|
109
|
+
# return confirmation
|
110
|
+
:delete_ok
|
111
|
+
end
|
112
|
+
|
113
|
+
=begin rdoc
|
114
|
+
|
115
|
+
=== DESCRIPTION:
|
116
|
+
|
76
117
|
Publishes a message to a specific exchange. The message will be routed to queues as defined
|
77
118
|
by the exchange configuration and distributed to any active consumers when the transaction,
|
78
119
|
if any, is committed.
|
@@ -103,15 +144,24 @@ nil
|
|
103
144
|
opts = opts.dup
|
104
145
|
out = []
|
105
146
|
|
147
|
+
# Set up options
|
148
|
+
routing_key = opts.delete(:key) || key
|
149
|
+
mandatory = opts.delete(:mandatory)
|
150
|
+
immediate = opts.delete(:immediate)
|
151
|
+
delivery_mode = opts.delete(:persistent) ? 2 : 1
|
152
|
+
|
106
153
|
out << Qrack::Protocol::Basic::Publish.new(
|
107
|
-
{ :exchange => name,
|
154
|
+
{ :exchange => name,
|
155
|
+
:routing_key => routing_key,
|
156
|
+
:mandatory => mandatory,
|
157
|
+
:immediate => immediate }
|
108
158
|
)
|
109
159
|
data = data.to_s
|
110
160
|
out << Qrack::Protocol::Header.new(
|
111
161
|
Qrack::Protocol::Basic,
|
112
162
|
data.length, {
|
113
163
|
:content_type => 'application/octet-stream',
|
114
|
-
:delivery_mode =>
|
164
|
+
:delivery_mode => delivery_mode,
|
115
165
|
:priority => 0
|
116
166
|
}.merge(opts)
|
117
167
|
)
|
@@ -120,44 +170,6 @@ nil
|
|
120
170
|
client.send_frame(*out)
|
121
171
|
end
|
122
172
|
|
123
|
-
=begin rdoc
|
124
|
-
|
125
|
-
=== DESCRIPTION:
|
126
|
-
|
127
|
-
Requests that an exchange is deleted from broker/server. Removes reference from exchanges
|
128
|
-
if successful. If an error occurs raises _Bunny_::_ProtocolError_.
|
129
|
-
|
130
|
-
==== Options:
|
131
|
-
|
132
|
-
* <tt>:if_unused => true or false (_default_)</tt> - If set to _true_, the server will only
|
133
|
-
delete the exchange if it has no queue bindings. If the exchange has queue bindings the
|
134
|
-
server does not delete it but raises a channel exception instead.
|
135
|
-
* <tt>:nowait => true or false (_default_)</tt> - Ignored by Bunny, always _false_.
|
136
|
-
|
137
|
-
==== Returns:
|
138
|
-
|
139
|
-
<tt>:delete_ok</tt> if successful
|
140
|
-
=end
|
141
|
-
|
142
|
-
def delete(opts = {})
|
143
|
-
# ignore the :nowait option if passed, otherwise program will hang waiting for a
|
144
|
-
# response that will not be sent by the server
|
145
|
-
opts.delete(:nowait)
|
146
|
-
|
147
|
-
client.send_frame(
|
148
|
-
Qrack::Protocol::Exchange::Delete.new({ :exchange => name, :nowait => false }.merge(opts))
|
149
|
-
)
|
150
|
-
|
151
|
-
raise Bunny::ProtocolError,
|
152
|
-
"Error deleting exchange #{name}" unless
|
153
|
-
client.next_method.is_a?(Qrack::Protocol::Exchange::DeleteOk)
|
154
|
-
|
155
|
-
client.exchanges.delete(name)
|
156
|
-
|
157
|
-
# return confirmation
|
158
|
-
:delete_ok
|
159
|
-
end
|
160
|
-
|
161
173
|
end
|
162
174
|
|
163
175
|
end
|
data/lib/bunny/exchange09.rb
CHANGED
@@ -64,9 +64,11 @@ specification that applies to your target broker/server.
|
|
64
64
|
)
|
65
65
|
)
|
66
66
|
|
67
|
-
|
68
|
-
|
69
|
-
|
67
|
+
method = client.next_method
|
68
|
+
|
69
|
+
client.check_response(method, Qrack::Protocol09::Exchange::DeclareOk,
|
70
|
+
"Error declaring exchange #{name}: type = #{type}")
|
71
|
+
|
70
72
|
end
|
71
73
|
end
|
72
74
|
|
@@ -74,6 +76,45 @@ specification that applies to your target broker/server.
|
|
74
76
|
|
75
77
|
=== DESCRIPTION:
|
76
78
|
|
79
|
+
Requests that an exchange is deleted from broker/server. Removes reference from exchanges
|
80
|
+
if successful. If an error occurs raises _Bunny_::_ProtocolError_.
|
81
|
+
|
82
|
+
==== Options:
|
83
|
+
|
84
|
+
* <tt>:if_unused => true or false (_default_)</tt> - If set to _true_, the server will only
|
85
|
+
delete the exchange if it has no queue bindings. If the exchange has queue bindings the
|
86
|
+
server does not delete it but raises a channel exception instead.
|
87
|
+
* <tt>:nowait => true or false (_default_)</tt> - Ignored by Bunny, always _false_.
|
88
|
+
|
89
|
+
==== Returns:
|
90
|
+
|
91
|
+
<tt>:delete_ok</tt> if successful
|
92
|
+
=end
|
93
|
+
|
94
|
+
def delete(opts = {})
|
95
|
+
# ignore the :nowait option if passed, otherwise program will hang waiting for a
|
96
|
+
# response that will not be sent by the server
|
97
|
+
opts.delete(:nowait)
|
98
|
+
|
99
|
+
client.send_frame(
|
100
|
+
Qrack::Protocol09::Exchange::Delete.new({ :exchange => name, :nowait => false, :reserved_1 => 0 }.merge(opts))
|
101
|
+
)
|
102
|
+
|
103
|
+
method = client.next_method
|
104
|
+
|
105
|
+
client.check_response(method, Qrack::Protocol09::Exchange::DeleteOk,
|
106
|
+
"Error deleting exchange #{name}")
|
107
|
+
|
108
|
+
client.exchanges.delete(name)
|
109
|
+
|
110
|
+
# return confirmation
|
111
|
+
:delete_ok
|
112
|
+
end
|
113
|
+
|
114
|
+
=begin rdoc
|
115
|
+
|
116
|
+
=== DESCRIPTION:
|
117
|
+
|
77
118
|
Publishes a message to a specific exchange. The message will be routed to queues as defined
|
78
119
|
by the exchange configuration and distributed to any active consumers when the transaction,
|
79
120
|
if any, is committed.
|
@@ -104,61 +145,33 @@ nil
|
|
104
145
|
opts = opts.dup
|
105
146
|
out = []
|
106
147
|
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
148
|
+
# Set up options
|
149
|
+
routing_key = opts.delete(:key) || key
|
150
|
+
mandatory = opts.delete(:mandatory)
|
151
|
+
immediate = opts.delete(:immediate)
|
152
|
+
delivery_mode = opts.delete(:persistent) ? 2 : 1
|
153
|
+
|
154
|
+
out << Qrack::Protocol09::Basic::Publish.new(
|
155
|
+
{ :exchange => name,
|
156
|
+
:routing_key => routing_key,
|
157
|
+
:mandatory => mandatory,
|
158
|
+
:immediate => immediate,
|
159
|
+
:reserved_1 => 0 }
|
160
|
+
)
|
161
|
+
data = data.to_s
|
162
|
+
out << Qrack::Protocol09::Header.new(
|
163
|
+
Qrack::Protocol09::Basic,
|
164
|
+
data.length, {
|
165
|
+
:content_type => 'application/octet-stream',
|
166
|
+
:delivery_mode => delivery_mode,
|
167
|
+
:priority => 0
|
168
|
+
}.merge(opts)
|
169
|
+
)
|
170
|
+
out << Qrack::Transport09::Body.new(data)
|
120
171
|
|
121
172
|
client.send_frame(*out)
|
122
173
|
end
|
123
174
|
|
124
|
-
=begin rdoc
|
125
|
-
|
126
|
-
=== DESCRIPTION:
|
127
|
-
|
128
|
-
Requests that an exchange is deleted from broker/server. Removes reference from exchanges
|
129
|
-
if successful. If an error occurs raises _Bunny_::_ProtocolError_.
|
130
|
-
|
131
|
-
==== Options:
|
132
|
-
|
133
|
-
* <tt>:if_unused => true or false (_default_)</tt> - If set to _true_, the server will only
|
134
|
-
delete the exchange if it has no queue bindings. If the exchange has queue bindings the
|
135
|
-
server does not delete it but raises a channel exception instead.
|
136
|
-
* <tt>:nowait => true or false (_default_)</tt> - Ignored by Bunny, always _false_.
|
137
|
-
|
138
|
-
==== Returns:
|
139
|
-
|
140
|
-
<tt>:delete_ok</tt> if successful
|
141
|
-
=end
|
142
|
-
|
143
|
-
def delete(opts = {})
|
144
|
-
# ignore the :nowait option if passed, otherwise program will hang waiting for a
|
145
|
-
# response that will not be sent by the server
|
146
|
-
opts.delete(:nowait)
|
147
|
-
|
148
|
-
client.send_frame(
|
149
|
-
Qrack::Protocol09::Exchange::Delete.new({ :exchange => name, :nowait => false, :reserved_1 => 0 }.merge(opts))
|
150
|
-
)
|
151
|
-
|
152
|
-
raise Bunny::ProtocolError,
|
153
|
-
"Error deleting exchange #{name}" unless
|
154
|
-
client.next_method.is_a?(Qrack::Protocol09::Exchange::DeleteOk)
|
155
|
-
|
156
|
-
client.exchanges.delete(name)
|
157
|
-
|
158
|
-
# return confirmation
|
159
|
-
:delete_ok
|
160
|
-
end
|
161
|
-
|
162
175
|
end
|
163
176
|
|
164
177
|
end
|