/[de-setf-amqp]/AMQP-1-1-0-9-1/classes.lisp
ViewVC logotype

Contents of /AMQP-1-1-0-9-1/classes.lisp

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3 - (show annotations)
Tue Feb 23 09:05:39 2010 UTC (4 years, 1 month ago) by janderson
File size: 90680 byte(s)
Merge commit 'remotes/github/master' into remotes/git-svn
1 ;;; -*- Package: DE.SETF.AMQP.IMPLEMENTATION; -*-
2 ;;;
3 ;;; version: amqp-1-1-0-9-1
4 ;;; generated 20100127T210212
5
6 (in-package "DE.SETF.AMQP.IMPLEMENTATION")
7
8 (document :file
9 (description "This file contains generated protocol classes and wire-level codecs for AMQP based on the
10 xml-encoded protocol specification.")
11 (copyright
12 "Copyright 2010 [james anderson](mailto:james.anderson@setf.de)"
13 "'setf.amqp' is free software: you can redistribute it and/or modify
14 it under the terms of the GNU Lesser General Public License as published by
15 the Free Software Foundation, either version 3 of the License, or
16 (at your option) any later version.
17
18 'setf.amqp' is distributed in the hope that it will be useful,
19 but WITHOUT ANY WARRANTY; without even the implied warranty of
20 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21 GNU Lesser General Public License for more details.
22
23 You should have received a copy of the GNU Lesser General Public License
24 along with 'setf.amqp'. If not, see the GNU [http://www.gnu.org/licenses/ site]."))
25
26 (eval-when (:compile-toplevel :load-toplevel :execute)
27 (macrolet ((ensure-export (x) `(export (intern ,(string x) :amqp) :amqp)))
28 (ensure-export #:ack)
29 (ensure-export #:basic)
30 (ensure-export #:bind)
31 (ensure-export #:bind-ok)
32 (ensure-export #:cancel)
33 (ensure-export #:cancel-ok)
34 (ensure-export #:channel)
35 (ensure-export #:close)
36 (ensure-export #:close-ok)
37 (ensure-export #:commit)
38 (ensure-export #:commit-ok)
39 (ensure-export #:connection)
40 (ensure-export #:consume)
41 (ensure-export #:consume-ok)
42 (ensure-export #:declare)
43 (ensure-export #:declare-ok)
44 (ensure-export #:delete)
45 (ensure-export #:delete-ok)
46 (ensure-export #:deliver)
47 (ensure-export #:exchange)
48 (ensure-export #:flow)
49 (ensure-export #:flow-ok)
50 (ensure-export #:get)
51 (ensure-export #:get-empty)
52 (ensure-export #:get-ok)
53 (ensure-export #:open)
54 (ensure-export #:open-ok)
55 (ensure-export #:publish)
56 (ensure-export #:purge)
57 (ensure-export #:purge-ok)
58 (ensure-export #:qos)
59 (ensure-export #:qos-ok)
60 (ensure-export #:queue)
61 (ensure-export #:recover)
62 (ensure-export #:recover-async)
63 (ensure-export #:recover-ok)
64 (ensure-export #:reject)
65 (ensure-export #:return)
66 (ensure-export #:rollback)
67 (ensure-export #:rollback-ok)
68 (ensure-export #:secure)
69 (ensure-export #:secure-ok)
70 (ensure-export #:select)
71 (ensure-export #:select-ok)
72 (ensure-export #:start)
73 (ensure-export #:start-ok)
74 (ensure-export #:tune)
75 (ensure-export #:tune-ok)
76 (ensure-export #:tx)
77 (ensure-export #:unbind)
78 (ensure-export #:unbind-ok)))
79
80 (eval-when (:compile-toplevel :load-toplevel :execute)
81 (macrolet ((ensure-export (x) `(export (intern ,(string x) :amqp-1-1-0-9-1) :amqp-1-1-0-9-1)))
82 (ensure-export #:basic)
83 (ensure-export #:basic.ack)
84 (ensure-export #:basic.cancel)
85 (ensure-export #:basic.cancel-ok)
86 (ensure-export #:basic.consume)
87 (ensure-export #:basic.consume-ok)
88 (ensure-export #:basic.deliver)
89 (ensure-export #:basic.get)
90 (ensure-export #:basic.get-empty)
91 (ensure-export #:basic.get-ok)
92 (ensure-export #:basic.publish)
93 (ensure-export #:basic.qos)
94 (ensure-export #:basic.qos-ok)
95 (ensure-export #:basic.recover)
96 (ensure-export #:basic.recover-async)
97 (ensure-export #:basic.recover-ok)
98 (ensure-export #:basic.reject)
99 (ensure-export #:basic.return)
100 (ensure-export #:channel)
101 (ensure-export #:channel.close)
102 (ensure-export #:channel.close-ok)
103 (ensure-export #:channel.flow)
104 (ensure-export #:channel.flow-ok)
105 (ensure-export #:channel.open)
106 (ensure-export #:channel.open-ok)
107 (ensure-export #:connection)
108 (ensure-export #:connection.close)
109 (ensure-export #:connection.close-ok)
110 (ensure-export #:connection.open)
111 (ensure-export #:connection.open-ok)
112 (ensure-export #:connection.secure)
113 (ensure-export #:connection.secure-ok)
114 (ensure-export #:connection.start)
115 (ensure-export #:connection.start-ok)
116 (ensure-export #:connection.tune)
117 (ensure-export #:connection.tune-ok)
118 (ensure-export #:exchange)
119 (ensure-export #:exchange.declare)
120 (ensure-export #:exchange.declare-ok)
121 (ensure-export #:exchange.delete)
122 (ensure-export #:exchange.delete-ok)
123 (ensure-export #:queue)
124 (ensure-export #:queue.bind)
125 (ensure-export #:queue.bind-ok)
126 (ensure-export #:queue.declare)
127 (ensure-export #:queue.declare-ok)
128 (ensure-export #:queue.delete)
129 (ensure-export #:queue.delete-ok)
130 (ensure-export #:queue.purge)
131 (ensure-export #:queue.purge-ok)
132 (ensure-export #:queue.unbind)
133 (ensure-export #:queue.unbind-ok)
134 (ensure-export #:tx)
135 (ensure-export #:tx.commit)
136 (ensure-export #:tx.commit-ok)
137 (ensure-export #:tx.rollback)
138 (ensure-export #:tx.rollback-ok)
139 (ensure-export #:tx.select)
140 (ensure-export #:tx.select-ok)))
141
142
143 ;;; class: connection [id method-names]
144 ;;; connection.start [version-major version-minor server-properties mechanisms locales]
145 ;;; connection.start-ok [client-properties mechanism response locale]
146 ;;; connection.secure [challenge]
147 ;;; connection.secure-ok [response]
148 ;;; connection.tune [channel-max frame-max heartbeat]
149 ;;; connection.tune-ok [channel-max frame-max heartbeat]
150 ;;; connection.open [virtual-host reserved-1 reserved-2]
151 ;;; connection.open-ok [reserved-1]
152 ;;; connection.close [reply-code reply-text class-id method-id]
153 ;;; connection.close-ok
154
155 (def-amqp-class amqp-1-1-0-9-1:connection (amqp-1-1-0-9-1:object amqp:connection)
156 ((id :initform 10 :allocation :class)
157 (method-names :initform
158 '(amqp:start amqp:start-ok amqp:secure amqp:secure-ok amqp:tune amqp:tune-ok amqp:open amqp:open-ok amqp:close
159 amqp:close-ok)
160 :allocation :class))
161 ()
162 ((version-major :initform (field-type-initform version-major amqp-1-1-0-9-1:octet) :type amqp-1-1-0-9-1:octet
163 :documentation "protocol major version
164
165 The major version number can take any value from 0 to 99 as defined in the
166 AMQP specification.")
167 (version-minor :initform (field-type-initform version-minor amqp-1-1-0-9-1:octet) :type amqp-1-1-0-9-1:octet
168 :documentation "protocol minor version
169
170 The minor version number can take any value from 0 to 99 as defined in the
171 AMQP specification.")
172 (server-properties :initform (field-type-initform server-properties amqp-1-1-0-9-1:peer-properties) :type
173 amqp-1-1-0-9-1:peer-properties :documentation "server properties
174
175 The properties SHOULD contain at least these fields: 'host', specifying the
176 server host name or address, 'product', giving the name of the server product,
177 'version', giving the name of the server version, 'platform', giving the name
178 of the operating system, 'copyright', if appropriate, and 'information', giving
179 other general information.
180
181 Client connects to server and inspects the server properties. It checks for
182 the presence of the required fields.")
183 (mechanisms :initform (field-type-initform mechanisms amqp-1-1-0-9-1:longstr) :type amqp-1-1-0-9-1:longstr
184 :documentation "available security mechanisms
185
186 A list of the security mechanisms that the server supports, delimited by spaces.")
187 (locales :initform (field-type-initform locales amqp-1-1-0-9-1:longstr) :type amqp-1-1-0-9-1:longstr :documentation
188 "available message locales
189
190 A list of the message locales that the server supports, delimited by spaces. The
191 locale defines the language in which the server will send reply texts.
192
193 The server MUST support at least the en_US locale.
194
195 Client connects to server and inspects the locales field. It checks for
196 the presence of the required locale(s).")
197 (client-properties :initform (field-type-initform client-properties amqp-1-1-0-9-1:peer-properties) :type
198 amqp-1-1-0-9-1:peer-properties :documentation "client properties
199
200 The properties SHOULD contain at least these fields: 'product', giving the name
201 of the client product, 'version', giving the name of the client version, 'platform',
202 giving the name of the operating system, 'copyright', if appropriate, and
203 'information', giving other general information.")
204 (mechanism :initform (field-type-initform mechanism amqp-1-1-0-9-1:shortstr) :type amqp-1-1-0-9-1:shortstr
205 :documentation "selected security mechanism
206
207 A single security mechanisms selected by the client, which must be one of those
208 specified by the server.
209
210 The client SHOULD authenticate using the highest-level security profile it
211 can handle from the list provided by the server.
212
213 If the mechanism field does not contain one of the security mechanisms
214 proposed by the server in the Start method, the server MUST close the
215 connection without sending any further data.
216
217 Client connects to server and sends an invalid security mechanism. The
218 server must respond by closing the connection (a socket close, with no
219 connection close negotiation).")
220 (locale :initform (field-type-initform locale amqp-1-1-0-9-1:shortstr) :type amqp-1-1-0-9-1:shortstr :documentation
221 "selected message locale
222
223 A single message locale selected by the client, which must be one of those
224 specified by the server.")
225 (challenge :initform (field-type-initform challenge amqp-1-1-0-9-1:longstr) :type amqp-1-1-0-9-1:longstr
226 :documentation "security challenge data
227
228 Challenge information, a block of opaque binary data passed to the security
229 mechanism.")
230 (response :initform (field-type-initform response amqp-1-1-0-9-1:longstr) :type amqp-1-1-0-9-1:longstr
231 :documentation "security response data
232
233 A block of opaque data passed to the security mechanism. The contents of this
234 data are defined by the SASL security mechanism.")
235 (channel-max :initform (field-type-initform channel-max amqp-1-1-0-9-1:short) :type amqp-1-1-0-9-1:short
236 :documentation "negotiated maximum channels
237
238 The maximum total number of channels that the client will use per connection.
239
240 If the client specifies a channel max that is higher than the value provided
241 by the server, the server MUST close the connection without attempting a
242 negotiated close. The server may report the error in some fashion to assist
243 implementors.")
244 (frame-max :initform (field-type-initform frame-max amqp-1-1-0-9-1:long) :type amqp-1-1-0-9-1:long :documentation
245 "negotiated maximum frame size
246
247 The largest frame size that the client and server will use for the connection.
248 Zero means that the client does not impose any specific limit but may reject
249 very large frames if it cannot allocate resources for them. Note that the
250 frame-max limit applies principally to content frames, where large contents can
251 be broken into frames of arbitrary size.
252
253 Until the frame-max has been negotiated, both peers MUST accept frames of up
254 to frame-min-size octets large, and the minimum negotiated value for frame-max
255 is also frame-min-size.
256
257 If the client specifies a frame max that is higher than the value provided
258 by the server, the server MUST close the connection without attempting a
259 negotiated close. The server may report the error in some fashion to assist
260 implementors.")
261 (heartbeat :initform (field-type-initform heartbeat amqp-1-1-0-9-1:short) :type amqp-1-1-0-9-1:short :documentation
262 "desired heartbeat delay
263
264 The delay, in seconds, of the connection heartbeat that the client wants. Zero
265 means the client does not want a heartbeat.")
266 (virtual-host :initform (field-type-initform virtual-host amqp-1-1-0-9-1:path) :type amqp-1-1-0-9-1:path
267 :documentation "virtual host name
268
269 The name of the virtual host to work with.
270
271 If the server supports multiple virtual hosts, it MUST enforce a full
272 separation of exchanges, queues, and all associated entities per virtual
273 host. An application, connected to a specific virtual host, MUST NOT be able
274 to access resources of another virtual host.
275
276 The server SHOULD verify that the client has permission to access the
277 specified virtual host.")
278 (reserved-2 :initform (field-type-initform reserved-2 amqp-1-1-0-9-1:bit) :type amqp-1-1-0-9-1:bit :allocation
279 :class)
280 (reserved-1 :initform (field-type-initform reserved-1 amqp-1-1-0-9-1:shortstr) :type amqp-1-1-0-9-1:shortstr
281 :allocation :class)
282 (reply-code :initform (field-type-initform reply-code amqp-1-1-0-9-1:reply-code) :type amqp-1-1-0-9-1:reply-code)
283 (reply-text :initform (field-type-initform reply-text amqp-1-1-0-9-1:reply-text) :type amqp-1-1-0-9-1:reply-text)
284 (class-id :initform (field-type-initform class-id amqp-1-1-0-9-1:class-id) :type amqp-1-1-0-9-1:class-id
285 :documentation "failing method class
286
287 When the close is provoked by a method exception, this is the class of the
288 method.")
289 (method-id :initform (field-type-initform method-id amqp-1-1-0-9-1:method-id) :type amqp-1-1-0-9-1:method-id
290 :documentation "failing method ID
291
292 When the close is provoked by a method exception, this is the ID of the method."))
293 (:documentation "roles: server MUST; client MUST.
294
295 The connection class provides methods for a client to establish a network connection to
296 a server, and for both peers to operate the connection thereafter.
297
298 connection = open-connection *use-connection close-connection
299 open-connection = C:protocol-header
300 S:START C:START-OK
301 *challenge
302 S:TUNE C:TUNE-OK
303 C:OPEN S:OPEN-OK
304 challenge = S:SECURE C:SECURE-OK
305 use-connection = *channel
306 close-connection = C:CLOSE S:CLOSE-OK
307 / S:CLOSE C:CLOSE-OK
308 "))
309
310
311 (def-amqp-method (amqp-1-1-0-9-1:connection amqp:start) (amqp:start amqp-1-1-0-9-1:method)
312 ((id :initform 10))
313 ((version-major
314 :initform (field-type-initform version-major amqp-1-1-0-9-1:octet)
315 :type amqp-1-1-0-9-1:octet
316 :documentation "protocol major version
317
318 The major version number can take any value from 0 to 99 as defined in the
319 AMQP specification.")
320 (version-minor
321 :initform (field-type-initform version-minor amqp-1-1-0-9-1:octet)
322 :type amqp-1-1-0-9-1:octet
323 :documentation "protocol minor version
324
325 The minor version number can take any value from 0 to 99 as defined in the
326 AMQP specification.")
327 (server-properties
328 :initform (field-type-initform server-properties amqp-1-1-0-9-1:peer-properties)
329 :type amqp-1-1-0-9-1:peer-properties
330 :documentation "server properties
331
332 The properties SHOULD contain at least these fields: 'host', specifying the
333 server host name or address, 'product', giving the name of the server product,
334 'version', giving the name of the server version, 'platform', giving the name
335 of the operating system, 'copyright', if appropriate, and 'information', giving
336 other general information.
337
338 Client connects to server and inspects the server properties. It checks for
339 the presence of the required fields.")
340 (mechanisms
341 :initform (field-type-initform mechanisms amqp-1-1-0-9-1:longstr)
342 :type amqp-1-1-0-9-1:longstr
343 :documentation "available security mechanisms
344
345 A list of the security mechanisms that the server supports, delimited by spaces.")
346 (locales
347 :initform (field-type-initform locales amqp-1-1-0-9-1:longstr)
348 :type amqp-1-1-0-9-1:longstr
349 :documentation "available message locales
350
351 A list of the message locales that the server supports, delimited by spaces. The
352 locale defines the language in which the server will send reply texts.
353
354 The server MUST support at least the en_US locale.
355
356 Client connects to server and inspects the locales field. It checks for
357 the presence of the required locale(s)."))
358 (:documentation "roles: client MUST."))
359
360 (def-amqp-method (amqp-1-1-0-9-1:connection amqp:start-ok) (amqp:start-ok amqp-1-1-0-9-1:method)
361 ((id :initform 11))
362 ((client-properties
363 :initform (field-type-initform client-properties amqp-1-1-0-9-1:peer-properties)
364 :type amqp-1-1-0-9-1:peer-properties
365 :documentation "client properties
366
367 The properties SHOULD contain at least these fields: 'product', giving the name
368 of the client product, 'version', giving the name of the client version, 'platform',
369 giving the name of the operating system, 'copyright', if appropriate, and
370 'information', giving other general information.")
371 (mechanism
372 :initform (field-type-initform mechanism amqp-1-1-0-9-1:shortstr)
373 :type amqp-1-1-0-9-1:shortstr
374 :documentation "selected security mechanism
375
376 A single security mechanisms selected by the client, which must be one of those
377 specified by the server.
378
379 The client SHOULD authenticate using the highest-level security profile it
380 can handle from the list provided by the server.
381
382 If the mechanism field does not contain one of the security mechanisms
383 proposed by the server in the Start method, the server MUST close the
384 connection without sending any further data.
385
386 Client connects to server and sends an invalid security mechanism. The
387 server must respond by closing the connection (a socket close, with no
388 connection close negotiation).")
389 (response
390 :initform (field-type-initform response amqp-1-1-0-9-1:longstr)
391 :type amqp-1-1-0-9-1:longstr
392 :documentation "security response data
393
394 A block of opaque data passed to the security mechanism. The contents of this
395 data are defined by the SASL security mechanism.")
396 (locale
397 :initform (field-type-initform locale amqp-1-1-0-9-1:shortstr)
398 :type amqp-1-1-0-9-1:shortstr
399 :documentation "selected message locale
400
401 A single message locale selected by the client, which must be one of those
402 specified by the server."))
403 (:documentation "roles: server MUST."))
404
405 (def-amqp-method (amqp-1-1-0-9-1:connection amqp:secure) (amqp:secure amqp-1-1-0-9-1:method)
406 ((id :initform 20))
407 ((challenge
408 :initform (field-type-initform challenge amqp-1-1-0-9-1:longstr)
409 :type amqp-1-1-0-9-1:longstr
410 :documentation "security challenge data
411
412 Challenge information, a block of opaque binary data passed to the security
413 mechanism."))
414 (:documentation "roles: client MUST."))
415
416 (def-amqp-method (amqp-1-1-0-9-1:connection amqp:secure-ok) (amqp:secure-ok amqp-1-1-0-9-1:method)
417 ((id :initform 21))
418 ((response
419 :initform (field-type-initform response amqp-1-1-0-9-1:longstr)
420 :type amqp-1-1-0-9-1:longstr
421 :documentation "security response data
422
423 A block of opaque data passed to the security mechanism. The contents of this
424 data are defined by the SASL security mechanism."))
425 (:documentation "roles: server MUST."))
426
427 (def-amqp-method (amqp-1-1-0-9-1:connection amqp:tune) (amqp:tune amqp-1-1-0-9-1:method)
428 ((id :initform 30))
429 ((channel-max
430 :initform (field-type-initform channel-max amqp-1-1-0-9-1:short)
431 :type amqp-1-1-0-9-1:short
432 :documentation "proposed maximum channels
433
434 Specifies highest channel number that the server permits. Usable channel numbers
435 are in the range 1..channel-max. Zero indicates no specified limit.")
436 (frame-max
437 :initform (field-type-initform frame-max amqp-1-1-0-9-1:long)
438 :type amqp-1-1-0-9-1:long
439 :documentation "proposed maximum frame size
440
441 The largest frame size that the server proposes for the connection, including
442 frame header and end-byte. The client can negotiate a lower value. Zero means
443 that the server does not impose any specific limit but may reject very large
444 frames if it cannot allocate resources for them.
445
446 Until the frame-max has been negotiated, both peers MUST accept frames of up
447 to frame-min-size octets large, and the minimum negotiated value for frame-max
448 is also frame-min-size.
449
450 Client connects to server and sends a large properties field, creating a frame
451 of frame-min-size octets. The server must accept this frame.")
452 (heartbeat
453 :initform (field-type-initform heartbeat amqp-1-1-0-9-1:short)
454 :type amqp-1-1-0-9-1:short
455 :documentation "desired heartbeat delay
456
457 The delay, in seconds, of the connection heartbeat that the server wants.
458 Zero means the server does not want a heartbeat."))
459 (:documentation "roles: client MUST."))
460
461 (def-amqp-method (amqp-1-1-0-9-1:connection amqp:tune-ok) (amqp:tune-ok amqp-1-1-0-9-1:method)
462 ((id :initform 31))
463 ((channel-max
464 :initform (field-type-initform channel-max amqp-1-1-0-9-1:short)
465 :type amqp-1-1-0-9-1:short
466 :documentation "negotiated maximum channels
467
468 The maximum total number of channels that the client will use per connection.
469
470 If the client specifies a channel max that is higher than the value provided
471 by the server, the server MUST close the connection without attempting a
472 negotiated close. The server may report the error in some fashion to assist
473 implementors.")
474 (frame-max
475 :initform (field-type-initform frame-max amqp-1-1-0-9-1:long)
476 :type amqp-1-1-0-9-1:long
477 :documentation "negotiated maximum frame size
478
479 The largest frame size that the client and server will use for the connection.
480 Zero means that the client does not impose any specific limit but may reject
481 very large frames if it cannot allocate resources for them. Note that the
482 frame-max limit applies principally to content frames, where large contents can
483 be broken into frames of arbitrary size.
484
485 Until the frame-max has been negotiated, both peers MUST accept frames of up
486 to frame-min-size octets large, and the minimum negotiated value for frame-max
487 is also frame-min-size.
488
489 If the client specifies a frame max that is higher than the value provided
490 by the server, the server MUST close the connection without attempting a
491 negotiated close. The server may report the error in some fashion to assist
492 implementors.")
493 (heartbeat
494 :initform (field-type-initform heartbeat amqp-1-1-0-9-1:short)
495 :type amqp-1-1-0-9-1:short
496 :documentation "desired heartbeat delay
497
498 The delay, in seconds, of the connection heartbeat that the client wants. Zero
499 means the client does not want a heartbeat."))
500 (:documentation "roles: server MUST."))
501
502 (def-amqp-method (amqp-1-1-0-9-1:connection amqp:open) (amqp:open amqp-1-1-0-9-1:method)
503 ((id :initform 40))
504 ((virtual-host
505 :initform (field-type-initform virtual-host amqp-1-1-0-9-1:path)
506 :type amqp-1-1-0-9-1:path
507 :documentation "virtual host name
508
509 The name of the virtual host to work with.
510
511 If the server supports multiple virtual hosts, it MUST enforce a full
512 separation of exchanges, queues, and all associated entities per virtual
513 host. An application, connected to a specific virtual host, MUST NOT be able
514 to access resources of another virtual host.
515
516 The server SHOULD verify that the client has permission to access the
517 specified virtual host.")
518 (reserved-1
519 :initform (field-type-initform reserved-1 amqp-1-1-0-9-1:shortstr)
520 :type amqp-1-1-0-9-1:shortstr
521 :allocation :class)
522 (reserved-2
523 :initform (field-type-initform reserved-2 amqp-1-1-0-9-1:bit)
524 :type amqp-1-1-0-9-1:bit
525 :allocation :class))
526 (:documentation "roles: server MUST."))
527
528 (def-amqp-method (amqp-1-1-0-9-1:connection amqp:open-ok) (amqp:open-ok amqp-1-1-0-9-1:method)
529 ((id :initform 41))
530 ((reserved-1
531 :initform (field-type-initform reserved-1 amqp-1-1-0-9-1:shortstr)
532 :type amqp-1-1-0-9-1:shortstr
533 :allocation :class))
534 (:documentation "roles: client MUST."))
535
536 (def-amqp-method (amqp-1-1-0-9-1:connection amqp:close) (amqp:close amqp-1-1-0-9-1:method)
537 ((id :initform 50))
538 ((reply-code
539 :initform (field-type-initform reply-code amqp-1-1-0-9-1:reply-code)
540 :type amqp-1-1-0-9-1:reply-code)
541 (reply-text
542 :initform (field-type-initform reply-text amqp-1-1-0-9-1:reply-text)
543 :type amqp-1-1-0-9-1:reply-text)
544 (class-id
545 :initform (field-type-initform class-id amqp-1-1-0-9-1:class-id)
546 :type amqp-1-1-0-9-1:class-id
547 :documentation "failing method class
548
549 When the close is provoked by a method exception, this is the class of the
550 method.")
551 (method-id
552 :initform (field-type-initform method-id amqp-1-1-0-9-1:method-id)
553 :type amqp-1-1-0-9-1:method-id
554 :documentation "failing method ID
555
556 When the close is provoked by a method exception, this is the ID of the method."))
557 (:documentation "roles: client MUST; server MUST."))
558
559 (def-amqp-method (amqp-1-1-0-9-1:connection amqp:close-ok) (amqp:close-ok amqp-1-1-0-9-1:method)
560 ((id :initform 51))
561 ()
562 (:documentation "roles: client MUST; server MUST."))
563
564 ;;; class: channel [id method-names]
565 ;;; channel.open [reserved-1]
566 ;;; channel.open-ok [reserved-1]
567 ;;; channel.flow [active]
568 ;;; channel.flow-ok [active]
569 ;;; channel.close [reply-code reply-text class-id method-id]
570 ;;; channel.close-ok
571
572 (def-amqp-class amqp-1-1-0-9-1:channel (amqp-1-1-0-9-1:object amqp:channel)
573 ((id :initform 20 :allocation :class)
574 (method-names :initform '(amqp:open amqp:open-ok amqp:flow amqp:flow-ok amqp:close amqp:close-ok) :allocation
575 :class))
576 ()
577 ((reserved-1 :initform (field-type-initform reserved-1 amqp-1-1-0-9-1:longstr) :type amqp-1-1-0-9-1:longstr
578 :allocation :class)
579 (active :initform (field-type-initform active amqp-1-1-0-9-1:bit) :type amqp-1-1-0-9-1:bit :documentation
580 "current flow setting
581
582 Confirms the setting of the processed flow method: 1 means the peer will start
583 sending or continue to send content frames; 0 means it will not.")
584 (reply-code :initform (field-type-initform reply-code amqp-1-1-0-9-1:reply-code) :type amqp-1-1-0-9-1:reply-code)
585 (reply-text :initform (field-type-initform reply-text amqp-1-1-0-9-1:reply-text) :type amqp-1-1-0-9-1:reply-text)
586 (class-id :initform (field-type-initform class-id amqp-1-1-0-9-1:class-id) :type amqp-1-1-0-9-1:class-id
587 :documentation "failing method class
588
589 When the close is provoked by a method exception, this is the class of the
590 method.")
591 (method-id :initform (field-type-initform method-id amqp-1-1-0-9-1:method-id) :type amqp-1-1-0-9-1:method-id
592 :documentation "failing method ID
593
594 When the close is provoked by a method exception, this is the ID of the method."))
595 (:documentation "roles: server MUST; client MUST.
596
597 The channel class provides methods for a client to establish a channel to a
598 server and for both peers to operate the channel thereafter.
599
600 channel = open-channel *use-channel close-channel
601 open-channel = C:OPEN S:OPEN-OK
602 use-channel = C:FLOW S:FLOW-OK
603 / S:FLOW C:FLOW-OK
604 / functional-class
605 close-channel = C:CLOSE S:CLOSE-OK
606 / S:CLOSE C:CLOSE-OK
607 "))
608
609
610 (def-amqp-method (amqp-1-1-0-9-1:channel amqp:open) (amqp:open amqp-1-1-0-9-1:method)
611 ((id :initform 10))
612 ((reserved-1
613 :initform (field-type-initform reserved-1 amqp-1-1-0-9-1:shortstr)
614 :type amqp-1-1-0-9-1:shortstr
615 :allocation :class))
616 (:documentation "roles: server MUST."))
617
618 (def-amqp-method (amqp-1-1-0-9-1:channel amqp:open-ok) (amqp:open-ok amqp-1-1-0-9-1:method)
619 ((id :initform 11))
620 ((reserved-1
621 :initform (field-type-initform reserved-1 amqp-1-1-0-9-1:longstr)
622 :type amqp-1-1-0-9-1:longstr
623 :allocation :class))
624 (:documentation "roles: client MUST."))
625
626 (def-amqp-method (amqp-1-1-0-9-1:channel amqp:flow) (amqp:flow amqp-1-1-0-9-1:method)
627 ((id :initform 20))
628 ((active
629 :initform (field-type-initform active amqp-1-1-0-9-1:bit)
630 :type amqp-1-1-0-9-1:bit
631 :documentation "start/stop content frames
632
633 If 1, the peer starts sending content frames. If 0, the peer stops sending
634 content frames."))
635 (:documentation "roles: server MUST; client MUST."))
636
637 (def-amqp-method (amqp-1-1-0-9-1:channel amqp:flow-ok) (amqp:flow-ok amqp-1-1-0-9-1:method)
638 ((id :initform 21))
639 ((active
640 :initform (field-type-initform active amqp-1-1-0-9-1:bit)
641 :type amqp-1-1-0-9-1:bit
642 :documentation "current flow setting
643
644 Confirms the setting of the processed flow method: 1 means the peer will start
645 sending or continue to send content frames; 0 means it will not."))
646 (:documentation "roles: server MUST; client MUST."))
647
648 (def-amqp-method (amqp-1-1-0-9-1:channel amqp:close) (amqp:close amqp-1-1-0-9-1:method)
649 ((id :initform 40))
650 ((reply-code
651 :initform (field-type-initform reply-code amqp-1-1-0-9-1:reply-code)
652 :type amqp-1-1-0-9-1:reply-code)
653 (reply-text
654 :initform (field-type-initform reply-text amqp-1-1-0-9-1:reply-text)
655 :type amqp-1-1-0-9-1:reply-text)
656 (class-id
657 :initform (field-type-initform class-id amqp-1-1-0-9-1:class-id)
658 :type amqp-1-1-0-9-1:class-id
659 :documentation "failing method class
660
661 When the close is provoked by a method exception, this is the class of the
662 method.")
663 (method-id
664 :initform (field-type-initform method-id amqp-1-1-0-9-1:method-id)
665 :type amqp-1-1-0-9-1:method-id
666 :documentation "failing method ID
667
668 When the close is provoked by a method exception, this is the ID of the method."))
669 (:documentation "roles: client MUST; server MUST."))
670
671 (def-amqp-method (amqp-1-1-0-9-1:channel amqp:close-ok) (amqp:close-ok amqp-1-1-0-9-1:method)
672 ((id :initform 41))
673 ()
674 (:documentation "roles: client MUST; server MUST."))
675
676 ;;; class: exchange [id method-names]
677 ;;; exchange.declare [reserved-1 exchange type passive durable reserved-2 reserved-3 no-wait arguments]
678 ;;; exchange.declare-ok
679 ;;; exchange.delete [reserved-1 exchange if-unused no-wait]
680 ;;; exchange.delete-ok
681
682 (def-amqp-class amqp-1-1-0-9-1:exchange (amqp-1-1-0-9-1:object amqp:exchange)
683 ((id :initform 40 :allocation :class)
684 (method-names :initform '(amqp:declare amqp:declare-ok amqp:delete amqp:delete-ok) :allocation :class))
685 ()
686 ((type :initform (field-type-initform type amqp-1-1-0-9-1:shortstr) :type amqp-1-1-0-9-1:shortstr :documentation
687 "exchange type
688
689 Each exchange belongs to one of a set of exchange types implemented by the
690 server. The exchange types define the functionality of the exchange - i.e. how
691 messages are routed through it. It is not valid or meaningful to attempt to
692 change the type of an existing exchange.
693
694 Exchanges cannot be redeclared with different types. The client MUST not
695 attempt to redeclare an existing exchange with a different type than used
696 in the original Exchange.Declare method.
697
698 TODO.
699
700 The client MUST NOT attempt to declare an exchange with a type that the
701 server does not support.
702
703 TODO.")
704 (passive :initform (field-type-initform passive amqp-1-1-0-9-1:bit) :type amqp-1-1-0-9-1:bit :documentation
705 "do not create exchange
706
707 If set, the server will reply with Declare-Ok if the exchange already
708 exists with the same name, and raise an error if not. The client can
709 use this to check whether an exchange exists without modifying the
710 server state. When set, all other method fields except name and no-wait
711 are ignored. A declare with both passive and no-wait has no effect.
712 Arguments are compared for semantic equivalence.
713
714 If set, and the exchange does not already exist, the server MUST
715 raise a channel exception with reply code 404 (not found).
716
717 TODO.
718
719 If not set and the exchange exists, the server MUST check that the
720 existing exchange has the same values for type, durable, and arguments
721 fields. The server MUST respond with Declare-Ok if the requested
722 exchange matches these fields, and MUST raise a channel exception if
723 not.
724
725 TODO.")
726 (durable :initform (field-type-initform durable amqp-1-1-0-9-1:bit) :type amqp-1-1-0-9-1:bit :documentation
727 "request a durable exchange
728
729 If set when creating a new exchange, the exchange will be marked as durable.
730 Durable exchanges remain active when a server restarts. Non-durable exchanges
731 (transient exchanges) are purged if/when a server restarts.
732
733 The server MUST support both durable and transient exchanges.
734
735 TODO.")
736 (reserved-2 :initform (field-type-initform reserved-2 amqp-1-1-0-9-1:bit) :type amqp-1-1-0-9-1:bit :allocation
737 :class)
738 (reserved-3 :initform (field-type-initform reserved-3 amqp-1-1-0-9-1:bit) :type amqp-1-1-0-9-1:bit :allocation
739 :class)
740 (arguments :initform (field-type-initform arguments amqp-1-1-0-9-1:table) :type amqp-1-1-0-9-1:table :documentation
741 "arguments for declaration
742
743 A set of arguments for the declaration. The syntax and semantics of these
744 arguments depends on the server implementation.")
745 (reserved-1 :initform (field-type-initform reserved-1 amqp-1-1-0-9-1:short) :type amqp-1-1-0-9-1:short :allocation
746 :class)
747 (exchange :initform (field-type-initform exchange amqp-1-1-0-9-1:exchange-name) :type amqp-1-1-0-9-1:exchange-name
748 :documentation "The client MUST NOT attempt to delete an exchange that does not exist.")
749 (if-unused :initform (field-type-initform if-unused amqp-1-1-0-9-1:bit) :type amqp-1-1-0-9-1:bit :documentation
750 "delete only if unused
751
752 If set, the server will only delete the exchange if it has no queue bindings. If
753 the exchange has queue bindings the server does not delete it but raises a
754 channel exception instead.
755
756 The server MUST NOT delete an exchange that has bindings on it, if the if-unused
757 field is true.
758
759 The client declares an exchange, binds a queue to it, then tries to delete it
760 setting if-unused to true.")
761 (no-wait :initform (field-type-initform no-wait amqp-1-1-0-9-1:no-wait) :type amqp-1-1-0-9-1:no-wait))
762 (:documentation "roles: server MUST; client MUST.
763
764 Exchanges match and distribute messages across queues. Exchanges can be configured in
765 the server or declared at runtime.
766
767 exchange = C:DECLARE S:DECLARE-OK
768 / C:DELETE S:DELETE-OK
769 "))
770
771
772 (def-amqp-method (amqp-1-1-0-9-1:exchange amqp:declare) (amqp:declare amqp-1-1-0-9-1:method)
773 ((id :initform 10))
774 ((reserved-1
775 :initform (field-type-initform reserved-1 amqp-1-1-0-9-1:short)
776 :type amqp-1-1-0-9-1:short
777 :allocation :class)
778 (exchange
779 :initform (field-type-initform exchange amqp-1-1-0-9-1:exchange-name)
780 :type amqp-1-1-0-9-1:exchange-name
781 :documentation "Exchange names starting with 'amq.' are reserved for pre-declared and
782 standardised exchanges. The client MAY declare an exchange starting with
783 'amq.' if the passive option is set, or the exchange already exists.
784
785 The client attempts to declare a non-existing exchange starting with
786 'amq.' and with the passive option set to zero.
787
788 The exchange name consists of a non-empty sequence of these characters:
789 letters, digits, hyphen, underscore, period, or colon.
790
791 The client attempts to declare an exchange with an illegal name.")
792 (type
793 :initform (field-type-initform type amqp-1-1-0-9-1:shortstr)
794 :type amqp-1-1-0-9-1:shortstr
795 :documentation "exchange type
796
797 Each exchange belongs to one of a set of exchange types implemented by the
798 server. The exchange types define the functionality of the exchange - i.e. how
799 messages are routed through it. It is not valid or meaningful to attempt to
800 change the type of an existing exchange.
801
802 Exchanges cannot be redeclared with different types. The client MUST not
803 attempt to redeclare an existing exchange with a different type than used
804 in the original Exchange.Declare method.
805
806 TODO.
807
808 The client MUST NOT attempt to declare an exchange with a type that the
809 server does not support.
810
811 TODO.")
812 (passive
813 :initform (field-type-initform passive amqp-1-1-0-9-1:bit)
814 :type amqp-1-1-0-9-1:bit
815 :documentation "do not create exchange
816
817 If set, the server will reply with Declare-Ok if the exchange already
818 exists with the same name, and raise an error if not. The client can
819 use this to check whether an exchange exists without modifying the
820 server state. When set, all other method fields except name and no-wait
821 are ignored. A declare with both passive and no-wait has no effect.
822 Arguments are compared for semantic equivalence.
823
824 If set, and the exchange does not already exist, the server MUST
825 raise a channel exception with reply code 404 (not found).
826
827 TODO.
828
829 If not set and the exchange exists, the server MUST check that the
830 existing exchange has the same values for type, durable, and arguments
831 fields. The server MUST respond with Declare-Ok if the requested
832 exchange matches these fields, and MUST raise a channel exception if
833 not.
834
835 TODO.")
836 (durable
837 :initform (field-type-initform durable amqp-1-1-0-9-1:bit)
838 :type amqp-1-1-0-9-1:bit
839 :documentation "request a durable exchange
840
841 If set when creating a new exchange, the exchange will be marked as durable.
842 Durable exchanges remain active when a server restarts. Non-durable exchanges
843 (transient exchanges) are purged if/when a server restarts.
844
845 The server MUST support both durable and transient exchanges.
846
847 TODO.")
848 (reserved-2
849 :initform (field-type-initform reserved-2 amqp-1-1-0-9-1:bit)
850 :type amqp-1-1-0-9-1:bit
851 :allocation :class)
852 (reserved-3
853 :initform (field-type-initform reserved-3 amqp-1-1-0-9-1:bit)
854 :type amqp-1-1-0-9-1:bit
855 :allocation :class)
856 (no-wait
857 :initform (field-type-initform no-wait amqp-1-1-0-9-1:no-wait)
858 :type amqp-1-1-0-9-1:no-wait)
859 (arguments
860 :initform (field-type-initform arguments amqp-1-1-0-9-1:table)
861 :type amqp-1-1-0-9-1:table
862 :documentation "arguments for declaration
863
864 A set of arguments for the declaration. The syntax and semantics of these
865 arguments depends on the server implementation."))
866 (:documentation "roles: server MUST."))
867
868 (def-amqp-method (amqp-1-1-0-9-1:exchange amqp:declare-ok) (amqp:declare-ok amqp-1-1-0-9-1:method)
869 ((id :initform 11))
870 ()
871 (:documentation "roles: client MUST."))
872
873 (def-amqp-method (amqp-1-1-0-9-1:exchange amqp:delete) (amqp:delete amqp-1-1-0-9-1:method)
874 ((id :initform 20))
875 ((reserved-1
876 :initform (field-type-initform reserved-1 amqp-1-1-0-9-1:short)
877 :type amqp-1-1-0-9-1:short
878 :allocation :class)
879 (exchange
880 :initform (field-type-initform exchange amqp-1-1-0-9-1:exchange-name)
881 :type amqp-1-1-0-9-1:exchange-name
882 :documentation "The client MUST NOT attempt to delete an exchange that does not exist.")
883 (if-unused
884 :initform (field-type-initform if-unused amqp-1-1-0-9-1:bit)
885 :type amqp-1-1-0-9-1:bit
886 :documentation "delete only if unused
887
888 If set, the server will only delete the exchange if it has no queue bindings. If
889 the exchange has queue bindings the server does not delete it but raises a
890 channel exception instead.
891
892 The server MUST NOT delete an exchange that has bindings on it, if the if-unused
893 field is true.
894
895 The client declares an exchange, binds a queue to it, then tries to delete it
896 setting if-unused to true.")
897 (no-wait
898 :initform (field-type-initform no-wait amqp-1-1-0-9-1:no-wait)
899 :type amqp-1-1-0-9-1:no-wait))
900 (:documentation "roles: server MUST."))
901
902 (def-amqp-method (amqp-1-1-0-9-1:exchange amqp:delete-ok) (amqp:delete-ok amqp-1-1-0-9-1:method)
903 ((id :initform 21))
904 ()
905 (:documentation "roles: client MUST."))
906
907 ;;; class: queue [id method-names]
908 ;;; queue.declare [reserved-1 queue passive durable exclusive auto-delete no-wait arguments]
909 ;;; queue.declare-ok [queue message-count consumer-count]
910 ;;; queue.bind [reserved-1 queue exchange routing-key no-wait arguments]
911 ;;; queue.bind-ok
912 ;;; queue.unbind [reserved-1 queue exchange routing-key arguments]
913 ;;; queue.unbind-ok
914 ;;; queue.purge [reserved-1 queue no-wait]
915 ;;; queue.purge-ok [message-count]
916 ;;; queue.delete [reserved-1 queue if-unused if-empty no-wait]
917 ;;; queue.delete-ok [message-count]
918
919 (def-amqp-class amqp-1-1-0-9-1:queue (amqp-1-1-0-9-1:object amqp:queue)
920 ((id :initform 50 :allocation :class)
921 (method-names :initform
922 '(amqp:declare amqp:declare-ok amqp:bind amqp:bind-ok amqp:unbind amqp:unbind-ok amqp:purge amqp:purge-ok
923 amqp:delete amqp:delete-ok)
924 :allocation :class))
925 ()
926 ((passive :initform (field-type-initform passive amqp-1-1-0-9-1:bit) :type amqp-1-1-0-9-1:bit :documentation
927 "do not create queue
928
929 If set, the server will reply with Declare-Ok if the queue already
930 exists with the same name, and raise an error if not. The client can
931 use this to check whether a queue exists without modifying the
932 server state. When set, all other method fields except name and no-wait
933 are ignored. A declare with both passive and no-wait has no effect.
934 Arguments are compared for semantic equivalence.
935
936 The client MAY ask the server to assert that a queue exists without
937 creating the queue if not. If the queue does not exist, the server
938 treats this as a failure.
939
940 Client declares an existing queue with the passive option and expects
941 the server to respond with a declare-ok. Client then attempts to declare
942 a non-existent queue with the passive option, and the server must close
943 the channel with the correct reply-code.
944
945 If not set and the queue exists, the server MUST check that the
946 existing queue has the same values for durable, exclusive, auto-delete,
947 and arguments fields. The server MUST respond with Declare-Ok if the
948 requested queue matches these fields, and MUST raise a channel exception
949 if not.
950
951 TODO.")
952 (durable :initform (field-type-initform durable amqp-1-1-0-9-1:bit) :type amqp-1-1-0-9-1:bit :documentation
953 "request a durable queue
954
955 If set when creating a new queue, the queue will be marked as durable. Durable
956 queues remain active when a server restarts. Non-durable queues (transient
957 queues) are purged if/when a server restarts. Note that durable queues do not
958 necessarily hold persistent messages, although it does not make sense to send
959 persistent messages to a transient queue.
960
961 The server MUST recreate the durable queue after a restart.
962
963 Client declares a durable queue. The server is then restarted. The client
964 then attempts to send a message to the queue. The message should be successfully
965 delivered.
966
967 The server MUST support both durable and transient queues.
968
969 A client declares two named queues, one durable and one transient.")
970 (exclusive :initform (field-type-initform exclusive amqp-1-1-0-9-1:bit) :type amqp-1-1-0-9-1:bit :documentation
971 "request an exclusive queue
972
973 Exclusive queues may only be accessed by the current connection, and are
974 deleted when that connection closes. Passive declaration of an exclusive
975 queue by other connections are not allowed.
976
977 The server MUST support both exclusive (private) and non-exclusive (shared)
978 queues.
979
980 A client declares two named queues, one exclusive and one non-exclusive.
981
982 The client MAY NOT attempt to use a queue that was declared as exclusive
983 by another still-open connection.
984
985 One client declares an exclusive queue. A second client on a different
986 connection attempts to declare, bind, consume, purge, delete, or declare
987 a queue of the same name.")
988 (auto-delete :initform (field-type-initform auto-delete amqp-1-1-0-9-1:bit) :type amqp-1-1-0-9-1:bit :documentation
989 "auto-delete queue when unused
990
991 If set, the queue is deleted when all consumers have finished using it. The last
992 consumer can be cancelled either explicitly or because its channel is closed. If
993 there was no consumer ever on the queue, it won't be deleted. Applications can
994 explicitly delete auto-delete queues using the Delete method as normal.
995
996 The server MUST ignore the auto-delete field if the queue already exists.
997
998 Client declares two named queues, one as auto-delete and one explicit-delete.
999 Client then attempts to declare the two queues using the same names again,
1000 but reversing the value of the auto-delete field in each case. Verify that the
1001 queues still exist with the original auto-delete flag values.")
1002 (consumer-count :initform (field-type-initform consumer-count amqp-1-1-0-9-1:long) :type amqp-1-1-0-9-1:long
1003 :documentation "number of consumers
1004
1005 Reports the number of active consumers for the queue. Note that consumers can
1006 suspend activity (Channel.Flow) in which case they do not appear in this count.")
1007 (exchange :initform (field-type-initform exchange amqp-1-1-0-9-1:exchange-name) :type amqp-1-1-0-9-1:exchange-name
1008 :documentation "The name of the exchange to unbind from.
1009
1010 The client MUST NOT attempt to unbind a queue from an exchange that
1011 does not exist.
1012
1013 The client attempts to unbind a queue from a non-existent exchange.
1014
1015 The server MUST accept a blank exchange name to mean the default exchange.
1016
1017 The client declares a queue and binds it to a blank exchange name.")
1018 (routing-key :initform (field-type-initform routing-key amqp-1-1-0-9-1:shortstr) :type amqp-1-1-0-9-1:shortstr
1019 :documentation "routing key of binding
1020
1021 Specifies the routing key of the binding to unbind.")
1022 (arguments :initform (field-type-initform arguments amqp-1-1-0-9-1:table) :type amqp-1-1-0-9-1:table :documentation
1023 "arguments of binding
1024
1025 Specifies the arguments of the binding to unbind.")
1026 (reserved-1 :initform (field-type-initform reserved-1 amqp-1-1-0-9-1:short) :type amqp-1-1-0-9-1:short :allocation
1027 :class)
1028 (queue :initform (field-type-initform queue amqp-1-1-0-9-1:queue-name) :type amqp-1-1-0-9-1:queue-name
1029 :documentation "Specifies the name of the queue to delete.
1030
1031 The client MUST either specify a queue name or have previously declared a
1032 queue on the same channel
1033
1034 The client opens a channel and attempts to delete an unnamed queue.
1035
1036 The client MUST NOT attempt to delete a queue that does not exist.
1037
1038 The client attempts to delete a non-existent queue.")
1039 (if-unused :initform (field-type-initform if-unused amqp-1-1-0-9-1:bit) :type amqp-1-1-0-9-1:bit :documentation
1040 "delete only if unused
1041
1042 If set, the server will only delete the queue if it has no consumers. If the
1043 queue has consumers the server does does not delete it but raises a channel
1044 exception instead.
1045
1046 The server MUST NOT delete a queue that has consumers on it, if the if-unused
1047 field is true.
1048
1049 The client declares a queue, and consumes from it, then tries to delete it
1050 setting if-unused to true.")
1051 (if-empty :initform (field-type-initform if-empty amqp-1-1-0-9-1:bit) :type amqp-1-1-0-9-1:bit :documentation
1052 "delete only if empty
1053
1054 If set, the server will only delete the queue if it has no messages.
1055
1056 The server MUST NOT delete a queue that has messages on it, if the
1057 if-empty field is true.
1058
1059 The client declares a queue, binds it and publishes some messages into it,
1060 then tries to delete it setting if-empty to true.")
1061 (no-wait :initform (field-type-initform no-wait amqp-1-1-0-9-1:no-wait) :type amqp-1-1-0-9-1:no-wait)
1062 (message-count :initform (field-type-initform message-count amqp-1-1-0-9-1:message-count) :type
1063 amqp-1-1-0-9-1:message-count :documentation "Reports the number of messages deleted."))
1064 (:documentation "roles: server MUST; client MUST.
1065
1066 Queues store and forward messages. Queues can be configured in the server or created at
1067 runtime. Queues must be attached to at least one exchange in order to receive messages
1068 from publishers.
1069
1070 queue = C:DECLARE S:DECLARE-OK
1071 / C:BIND S:BIND-OK
1072 / C:UNBIND S:UNBIND-OK
1073 / C:PURGE S:PURGE-OK
1074 / C:DELETE S:DELETE-OK
1075 "))
1076
1077
1078 (def-amqp-method (amqp-1-1-0-9-1:queue amqp:declare) (amqp:declare amqp-1-1-0-9-1:method)
1079 ((id :initform 10))
1080 ((reserved-1
1081 :initform (field-type-initform reserved-1 amqp-1-1-0-9-1:short)
1082 :type amqp-1-1-0-9-1:short
1083 :allocation :class)
1084 (queue
1085 :initform (field-type-initform queue amqp-1-1-0-9-1:queue-name)
1086 :type amqp-1-1-0-9-1:queue-name
1087 :documentation "The queue name MAY be empty, in which case the server MUST create a new
1088 queue with a unique generated name and return this to the client in the
1089 Declare-Ok method.
1090
1091 Client attempts to declare several queues with an empty name. The client then
1092 verifies that the server-assigned names are unique and different.
1093
1094 Queue names starting with 'amq.' are reserved for pre-declared and
1095 standardised queues. The client MAY declare a queue starting with
1096 'amq.' if the passive option is set, or the queue already exists.
1097
1098 The client attempts to declare a non-existing queue starting with
1099 'amq.' and with the passive option set to zero.
1100
1101 The queue name can be empty, or a sequence of these characters:
1102 letters, digits, hyphen, underscore, period, or colon.
1103
1104 The client attempts to declare a queue with an illegal name.")
1105 (passive
1106 :initform (field-type-initform passive amqp-1-1-0-9-1:bit)
1107 :type amqp-1-1-0-9-1:bit
1108 :documentation "do not create queue
1109
1110 If set, the server will reply with Declare-Ok if the queue already
1111 exists with the same name, and raise an error if not. The client can
1112 use this to check whether a queue exists without modifying the
1113 server state. When set, all other method fields except name and no-wait
1114 are ignored. A declare with both passive and no-wait has no effect.
1115 Arguments are compared for semantic equivalence.
1116
1117 The client MAY ask the server to assert that a queue exists without
1118 creating the queue if not. If the queue does not exist, the server
1119 treats this as a failure.
1120
1121 Client declares an existing queue with the passive option and expects
1122 the server to respond with a declare-ok. Client then attempts to declare
1123 a non-existent queue with the passive option, and the server must close
1124 the channel with the correct reply-code.
1125
1126 If not set and the queue exists, the server MUST check that the
1127 existing queue has the same values for durable, exclusive, auto-delete,
1128 and arguments fields. The server MUST respond with Declare-Ok if the
1129 requested queue matches these fields, and MUST raise a channel exception
1130 if not.
1131
1132 TODO.")
1133 (durable
1134 :initform (field-type-initform durable amqp-1-1-0-9-1:bit)
1135 :type amqp-1-1-0-9-1:bit
1136 :documentation "request a durable queue
1137
1138 If set when creating a new queue, the queue will be marked as durable. Durable
1139 queues remain active when a server restarts. Non-durable queues (transient
1140 queues) are purged if/when a server restarts. Note that durable queues do not
1141 necessarily hold persistent messages, although it does not make sense to send
1142 persistent messages to a transient queue.
1143
1144 The server MUST recreate the durable queue after a restart.
1145
1146 Client declares a durable queue. The server is then restarted. The client
1147 then attempts to send a message to the queue. The message should be successfully
1148 delivered.
1149
1150 The server MUST support both durable and transient queues.
1151
1152 A client declares two named queues, one durable and one transient.")
1153 (exclusive
1154 :initform (field-type-initform exclusive amqp-1-1-0-9-1:bit)
1155 :type amqp-1-1-0-9-1:bit
1156 :documentation "request an exclusive queue
1157
1158 Exclusive queues may only be accessed by the current connection, and are
1159 deleted when that connection closes. Passive declaration of an exclusive
1160 queue by other connections are not allowed.
1161
1162 The server MUST support both exclusive (private) and non-exclusive (shared)
1163 queues.
1164
1165 A client declares two named queues, one exclusive and one non-exclusive.
1166
1167 The client MAY NOT attempt to use a queue that was declared as exclusive
1168 by another still-open connection.
1169
1170 One client declares an exclusive queue. A second client on a different
1171 connection attempts to declare, bind, consume, purge, delete, or declare
1172 a queue of the same name.")
1173 (auto-delete
1174 :initform (field-type-initform auto-delete amqp-1-1-0-9-1:bit)
1175 :type amqp-1-1-0-9-1:bit
1176 :documentation "auto-delete queue when unused
1177
1178 If set, the queue is deleted when all consumers have finished using it. The last
1179 consumer can be cancelled either explicitly or because its channel is closed. If
1180 there was no consumer ever on the queue, it won't be deleted. Applications can
1181 explicitly delete auto-delete queues using the Delete method as normal.
1182
1183 The server MUST ignore the auto-delete field if the queue already exists.
1184
1185 Client declares two named queues, one as auto-delete and one explicit-delete.
1186 Client then attempts to declare the two queues using the same names again,
1187 but reversing the value of the auto-delete field in each case. Verify that the
1188 queues still exist with the original auto-delete flag values.")
1189 (no-wait
1190 :initform (field-type-initform no-wait amqp-1-1-0-9-1:no-wait)
1191 :type amqp-1-1-0-9-1:no-wait)
1192 (arguments
1193 :initform (field-type-initform arguments amqp-1-1-0-9-1:table)
1194 :type amqp-1-1-0-9-1:table
1195 :documentation "arguments for declaration
1196
1197 A set of arguments for the declaration. The syntax and semantics of these
1198 arguments depends on the server implementation."))
1199 (:documentation "roles: server MUST."))
1200
1201 (def-amqp-method (amqp-1-1-0-9-1:queue amqp:declare-ok) (amqp:declare-ok amqp-1-1-0-9-1:method)
1202 ((id :initform 11))
1203 ((queue
1204 :initform (field-type-initform queue amqp-1-1-0-9-1:queue-name)
1205 :type amqp-1-1-0-9-1:queue-name
1206 :documentation "Reports the name of the queue. If the server generated a queue name, this field
1207 contains that name.")
1208 (message-count
1209 :initform (field-type-initform message-count amqp-1-1-0-9-1:message-count)
1210 :type amqp-1-1-0-9-1:message-count)
1211 (consumer-count
1212 :initform (field-type-initform consumer-count amqp-1-1-0-9-1:long)
1213 :type amqp-1-1-0-9-1:long
1214 :documentation "number of consumers
1215
1216 Reports the number of active consumers for the queue. Note that consumers can
1217 suspend activity (Channel.Flow) in which case they do not appear in this count."))
1218 (:documentation "roles: client MUST."))
1219
1220 (def-amqp-method (amqp-1-1-0-9-1:queue amqp:bind) (amqp:bind amqp-1-1-0-9-1:method)
1221 ((id :initform 20))
1222 ((reserved-1
1223 :initform (field-type-initform reserved-1 amqp-1-1-0-9-1:short)
1224 :type amqp-1-1-0-9-1:short
1225 :allocation :class)
1226 (queue
1227 :initform (field-type-initform queue amqp-1-1-0-9-1:queue-name)
1228 :type amqp-1-1-0-9-1:queue-name
1229 :documentation "Specifies the name of the queue to bind.
1230
1231 The client MUST either specify a queue name or have previously declared a
1232 queue on the same channel
1233
1234 The client opens a channel and attempts to bind an unnamed queue.
1235
1236 The client MUST NOT attempt to bind a queue that does not exist.
1237
1238 The client attempts to bind a non-existent queue.")
1239 (exchange
1240 :initform (field-type-initform exchange amqp-1-1-0-9-1:exchange-name)
1241 :type amqp-1-1-0-9-1:exchange-name
1242 :documentation "name of the exchange to bind to
1243
1244 A client MUST NOT be allowed to bind a queue to a non-existent exchange.
1245
1246 A client attempts to bind an named queue to a undeclared exchange.
1247
1248 The server MUST accept a blank exchange name to mean the default exchange.
1249
1250 The client declares a queue and binds it to a blank exchange name.")
1251 (routing-key
1252 :initform (field-type-initform routing-key amqp-1-1-0-9-1:shortstr)
1253 :type amqp-1-1-0-9-1:shortstr
1254 :documentation "message routing key
1255
1256 Specifies the routing key for the binding. The routing key is used for routing
1257 messages depending on the exchange configuration. Not all exchanges use a
1258 routing key - refer to the specific exchange documentation. If the queue name
1259 is empty, the server uses the last queue declared on the channel. If the
1260 routing key is also empty, the server uses this queue name for the routing
1261 key as well. If the queue name is provided but the routing key is empty, the
1262 server does the binding with that empty routing key. The meaning of empty
1263 routing keys depends on the exchange implementation.
1264
1265 If a message queue binds to a direct exchange using routing key K and a
1266 publisher sends the exchange a message with routing key R, then the message
1267 MUST be passed to the message queue if K = R.")
1268 (no-wait
1269 :initform (field-type-initform no-wait amqp-1-1-0-9-1:no-wait)
1270 :type amqp-1-1-0-9-1:no-wait)
1271 (arguments
1272 :initform (field-type-initform arguments amqp-1-1-0-9-1:table)
1273 :type amqp-1-1-0-9-1:table
1274 :documentation "arguments for binding
1275
1276 A set of arguments for the binding. The syntax and semantics of these arguments
1277 depends on the exchange class."))
1278 (:documentation "roles: server MUST."))
1279
1280 (def-amqp-method (amqp-1-1-0-9-1:queue amqp:bind-ok) (amqp:bind-ok amqp-1-1-0-9-1:method)
1281 ((id :initform 21))
1282 ()
1283 (:documentation "roles: client MUST."))
1284
1285 (def-amqp-method (amqp-1-1-0-9-1:queue amqp:unbind) (amqp:unbind amqp-1-1-0-9-1:method)
1286 ((id :initform 50))
1287 ((reserved-1
1288 :initform (field-type-initform reserved-1 amqp-1-1-0-9-1:short)
1289 :type amqp-1-1-0-9-1:short
1290 :allocation :class)
1291 (queue
1292 :initform (field-type-initform queue amqp-1-1-0-9-1:queue-name)
1293 :type amqp-1-1-0-9-1:queue-name
1294 :documentation "Specifies the name of the queue to unbind.
1295
1296 The client MUST either specify a queue name or have previously declared a
1297 queue on the same channel
1298
1299 The client opens a channel and attempts to unbind an unnamed queue.
1300
1301 The client MUST NOT attempt to unbind a queue that does not exist.
1302
1303 The client attempts to unbind a non-existent queue.")
1304 (exchange
1305 :initform (field-type-initform exchange amqp-1-1-0-9-1:exchange-name)
1306 :type amqp-1-1-0-9-1:exchange-name
1307 :documentation "The name of the exchange to unbind from.
1308
1309 The client MUST NOT attempt to unbind a queue from an exchange that
1310 does not exist.
1311
1312 The client attempts to unbind a queue from a non-existent exchange.
1313
1314 The server MUST accept a blank exchange name to mean the default exchange.
1315
1316 The client declares a queue and binds it to a blank exchange name.")
1317 (routing-key
1318 :initform (field-type-initform routing-key amqp-1-1-0-9-1:shortstr)
1319 :type amqp-1-1-0-9-1:shortstr
1320 :documentation "routing key of binding
1321
1322 Specifies the routing key of the binding to unbind.")
1323 (arguments
1324 :initform (field-type-initform arguments amqp-1-1-0-9-1:table)
1325 :type amqp-1-1-0-9-1:table
1326 :documentation "arguments of binding
1327
1328 Specifies the arguments of the binding to unbind."))
1329 (:documentation "roles: server MUST."))
1330
1331 (def-amqp-method (amqp-1-1-0-9-1:queue amqp:unbind-ok) (amqp:unbind-ok amqp-1-1-0-9-1:method)
1332 ((id :initform 51))
1333 ()
1334 (:documentation "roles: client MUST."))
1335
1336 (def-amqp-method (amqp-1-1-0-9-1:queue amqp:purge) (amqp:purge amqp-1-1-0-9-1:method)
1337 ((id :initform 30))
1338 ((reserved-1
1339 :initform (field-type-initform reserved-1 amqp-1-1-0-9-1:short)
1340 :type amqp-1-1-0-9-1:short
1341 :allocation :class)
1342 (queue
1343 :initform (field-type-initform queue amqp-1-1-0-9-1:queue-name)
1344 :type amqp-1-1-0-9-1:queue-name
1345 :documentation "Specifies the name of the queue to purge.
1346
1347 The client MUST either specify a queue name or have previously declared a
1348 queue on the same channel
1349
1350 The client opens a channel and attempts to purge an unnamed queue.
1351
1352 The client MUST NOT attempt to purge a queue that does not exist.
1353
1354 The client attempts to purge a non-existent queue.")
1355 (no-wait
1356 :initform (field-type-initform no-wait amqp-1-1-0-9-1:no-wait)
1357 :type amqp-1-1-0-9-1:no-wait))
1358 (:documentation "roles: server MUST."))
1359
1360 (def-amqp-method (amqp-1-1-0-9-1:queue amqp:purge-ok) (amqp:purge-ok amqp-1-1-0-9-1:method)
1361 ((id :initform 31))
1362 ((message-count
1363 :initform (field-type-initform message-count amqp-1-1-0-9-1:message-count)
1364 :type amqp-1-1-0-9-1:message-count
1365 :documentation "Reports the number of messages purged."))
1366 (:documentation "roles: client MUST."))
1367
1368 (def-amqp-method (amqp-1-1-0-9-1:queue amqp:delete) (amqp:delete amqp-1-1-0-9-1:method)
1369 ((id :initform 40))
1370 ((reserved-1
1371 :initform (field-type-initform reserved-1 amqp-1-1-0-9-1:short)
1372 :type amqp-1-1-0-9-1:short
1373 :allocation :class)
1374 (queue
1375 :initform (field-type-initform queue amqp-1-1-0-9-1:queue-name)
1376 :type amqp-1-1-0-9-1:queue-name
1377 :documentation "Specifies the name of the queue to delete.
1378
1379 The client MUST either specify a queue name or have previously declared a
1380 queue on the same channel
1381
1382 The client opens a channel and attempts to delete an unnamed queue.
1383
1384 The client MUST NOT attempt to delete a queue that does not exist.
1385
1386 The client attempts to delete a non-existent queue.")
1387 (if-unused
1388 :initform (field-type-initform if-unused amqp-1-1-0-9-1:bit)
1389 :type amqp-1-1-0-9-1:bit
1390 :documentation "delete only if unused
1391
1392 If set, the server will only delete the queue if it has no consumers. If the
1393 queue has consumers the server does does not delete it but raises a channel
1394 exception instead.
1395
1396 The server MUST NOT delete a queue that has consumers on it, if the if-unused
1397 field is true.
1398
1399 The client declares a queue, and consumes from it, then tries to delete it
1400 setting if-unused to true.")
1401 (if-empty
1402 :initform (field-type-initform if-empty amqp-1-1-0-9-1:bit)
1403 :type amqp-1-1-0-9-1:bit
1404 :documentation "delete only if empty
1405
1406 If set, the server will only delete the queue if it has no messages.
1407
1408 The server MUST NOT delete a queue that has messages on it, if the
1409 if-empty field is true.
1410
1411 The client declares a queue, binds it and publishes some messages into it,
1412 then tries to delete it setting if-empty to true.")
1413 (no-wait
1414 :initform (field-type-initform no-wait amqp-1-1-0-9-1:no-wait)
1415 :type amqp-1-1-0-9-1:no-wait))
1416 (:documentation "roles: server MUST."))
1417
1418 (def-amqp-method (amqp-1-1-0-9-1:queue amqp:delete-ok) (amqp:delete-ok amqp-1-1-0-9-1:method)
1419 ((id :initform 41))
1420 ((message-count
1421 :initform (field-type-initform message-count amqp-1-1-0-9-1:message-count)
1422 :type amqp-1-1-0-9-1:message-count
1423 :documentation "Reports the number of messages deleted."))
1424 (:documentation "roles: client MUST."))
1425
1426 ;;; class: basic [id method-names content-type content-encoding headers delivery-mode priority correlation-id reply-to expiration message-id timestamp type user-id app-id reserved]
1427 ;;; basic.qos [prefetch-size prefetch-count global]
1428 ;;; basic.qos-ok
1429 ;;; basic.consume [reserved-1 queue consumer-tag no-local no-ack exclusive no-wait arguments]
1430 ;;; basic.consume-ok [consumer-tag]
1431 ;;; basic.cancel [consumer-tag no-wait]
1432 ;;; basic.cancel-ok [consumer-tag]
1433 ;;; basic.publish [reserved-1 exchange routing-key mandatory immediate]
1434 ;;; basic.return [reply-code reply-text exchange routing-key]
1435 ;;; basic.deliver [consumer-tag delivery-tag redelivered exchange routing-key]
1436 ;;; basic.get [reserved-1 queue no-ack]
1437 ;;; basic.get-ok [delivery-tag redelivered exchange routing-key message-count]
1438 ;;; basic.get-empty [reserved-1]
1439 ;;; basic.ack [delivery-tag multiple]
1440 ;;; basic.reject [delivery-tag requeue]
1441 ;;; basic.recover-async [requeue]
1442 ;;; basic.recover [requeue]
1443 ;;; basic.recover-ok
1444
1445 (def-amqp-class amqp-1-1-0-9-1:basic (amqp-1-1-0-9-1:object amqp:basic)
1446 ((id :initform 60 :allocation :class)
1447 (method-names :initform
1448 '(amqp:qos amqp:qos-ok amqp:consume amqp:consume-ok amqp:cancel amqp:cancel-ok amqp:publish amqp:return
1449 amqp:deliver amqp:get amqp:get-ok amqp:get-empty amqp:ack amqp:reject amqp:recover-async amqp:recover
1450 amqp:recover-ok)
1451 :allocation :class))
1452 ((content-type :initform (field-type-initform content-type amqp-1-1-0-9-1:shortstr) :type amqp-1-1-0-9-1:shortstr
1453 :documentation "MIME content type")
1454 (content-encoding
1455 :initform
1456 (field-type-initform content-encoding amqp-1-1-0-9-1:shortstr)
1457 :type
1458 amqp-1-1-0-9-1:shortstr
1459 :documentation
1460 "MIME content encoding")
1461 (headers :initform (field-type-initform headers amqp-1-1-0-9-1:table) :type amqp-1-1-0-9-1:table :documentation
1462 "message header field table")
1463 (delivery-mode :initform (field-type-initform delivery-mode amqp-1-1-0-9-1:octet) :type amqp-1-1-0-9-1:octet
1464 :documentation "non-persistent (1) or persistent (2)")
1465 (priority :initform (field-type-initform priority amqp-1-1-0-9-1:octet) :type amqp-1-1-0-9-1:octet :documentation
1466 "message priority, 0 to 9")
1467 (correlation-id :initform (field-type-initform correlation-id amqp-1-1-0-9-1:shortstr) :type amqp-1-1-0-9-1:shortstr
1468 :documentation "application correlation identifier")
1469 (reply-to :initform (field-type-initform reply-to amqp-1-1-0-9-1:shortstr) :type amqp-1-1-0-9-1:shortstr
1470 :documentation "address to reply to")
1471 (expiration :initform (field-type-initform expiration amqp-1-1-0-9-1:shortstr) :type amqp-1-1-0-9-1:shortstr
1472 :documentation "message expiration specification")
1473 (message-id :initform (field-type-initform message-id amqp-1-1-0-9-1:shortstr) :type amqp-1-1-0-9-1:shortstr
1474 :documentation "application message identifier")
1475 (timestamp :initform (field-type-initform timestamp amqp-1-1-0-9-1:timestamp) :type amqp-1-1-0-9-1:timestamp
1476 :documentation "message timestamp")
1477 (type :initform (field-type-initform type amqp-1-1-0-9-1:shortstr) :type amqp-1-1-0-9-1:shortstr :documentation
1478 "message type name")
1479 (user-id :initform (field-type-initform user-id amqp-1-1-0-9-1:shortstr) :type amqp-1-1-0-9-1:shortstr
1480 :documentation "creating user id")
1481 (app-id :initform (field-type-initform app-id amqp-1-1-0-9-1:shortstr) :type amqp-1-1-0-9-1:shortstr :documentation
1482 "creating application id")
1483 (reserved :initform (field-type-initform reserved amqp-1-1-0-9-1:shortstr) :type amqp-1-1-0-9-1:shortstr
1484 :documentation "reserved, must be empty" :allocation :class))
1485 ((prefetch-size :initform (field-type-initform prefetch-size amqp-1-1-0-9-1:long) :type amqp-1-1-0-9-1:long
1486 :documentation "prefetch window in octets
1487
1488 The client can request that messages be sent in advance so that when the client
1489 finishes processing a message, the following message is already held locally,
1490 rather than needing to be sent down the channel. Prefetching gives a performance
1491 improvement. This field specifies the prefetch window size in octets. The server
1492 will send a message in advance if it is equal to or smaller in size than the
1493 available prefetch size (and also falls into other prefetch limits). May be set
1494 to zero, meaning 'no specific limit', although other prefetch limits may still
1495 apply. The prefetch-size is ignored if the no-ack option is set.
1496
1497 The server MUST ignore this setting when the client is not processing any
1498 messages - i.e. the prefetch size does not limit the transfer of single
1499 messages to a client, only the sending in advance of more messages while
1500 the client still has one or more unacknowledged messages.
1501
1502 Define a QoS prefetch-size limit and send a single message that exceeds
1503 that limit. Verify that the message arrives correctly.")
1504 (prefetch-count :initform (field-type-initform prefetch-count amqp-1-1-0-9-1:short) :type amqp-1-1-0-9-1:short
1505 :documentation "prefetch window in messages
1506
1507 Specifies a prefetch window in terms of whole messages. This field may be used
1508 in combination with the prefetch-size field; a message will only be sent in
1509 advance if both prefetch windows (and those at the channel and connection level)
1510 allow it. The prefetch-count is ignored if the no-ack option is set.
1511
1512 The server may send less data in advance than allowed by the client's
1513 specified prefetch windows but it MUST NOT send more.
1514
1515 Define a QoS prefetch-size limit and a prefetch-count limit greater than
1516 one. Send multiple messages that exceed the prefetch size. Verify that
1517 no more than one message arrives at once.")
1518 (global :initform (field-type-initform global amqp-1-1-0-9-1:bit) :type amqp-1-1-0-9-1:bit :documentation
1519 "apply to entire connection
1520
1521 By default the QoS settings apply to the current channel only. If this field is
1522 set, they are applied to the entire connection.")
1523 (no-local :initform (field-type-initform no-local amqp-1-1-0-9-1:no-local) :type amqp-1-1-0-9-1:no-local)
1524 (exclusive :initform (field-type-initform exclusive amqp-1-1-0-9-1:bit) :type amqp-1-1-0-9-1:bit :documentation
1525 "request exclusive access
1526
1527 Request exclusive consumer access, meaning only this consumer can access the
1528 queue.
1529
1530 The client MAY NOT gain exclusive access to a queue that already has
1531 active consumers.
1532
1533 Open two connections to a server, and in one connection declare a shared
1534 (non-exclusive) queue and then consume from the queue. In the second
1535 connection attempt to consume from the same queue using the exclusive
1536 option.")
1537 (arguments :initform (field-type-initform arguments amqp-1-1-0-9-1:table) :type amqp-1-1-0-9-1:table :documentation
1538 "arguments for declaration
1539
1540 A set of arguments for the consume. The syntax and semantics of these
1541 arguments depends on the server implementation.")
1542 (no-wait :initform (field-type-initform no-wait amqp-1-1-0-9-1:no-wait) :type amqp-1-1-0-9-1:no-wait)
1543 (mandatory :initform (field-type-initform mandatory amqp-1-1-0-9-1:bit) :type amqp-1-1-0-9-1:bit :documentation
1544 "indicate mandatory routing
1545
1546 This flag tells the server how to react if the message cannot be routed to a
1547 queue. If this flag is set, the server will return an unroutable message with a
1548 Return method. If this flag is zero, the server silently drops the message.
1549
1550 The server SHOULD implement the mandatory flag.
1551
1552 TODO.")
1553 (immediate :initform (field-type-initform immediate amqp-1-1-0-9-1:bit) :type amqp-1-1-0-9-1:bit :documentation
1554 "request immediate delivery
1555
1556 This flag tells the server how to react if the message cannot be routed to a
1557 queue consumer immediately. If this flag is set, the server will return an
1558 undeliverable message with a Return method. If this flag is zero, the server
1559 will queue the message, but with no guarantee that it will ever be consumed.
1560
1561 The server SHOULD implement the immediate flag.
1562
1563 TODO.")
1564 (reply-code :initform (field-type-initform reply-code amqp-1-1-0-9-1:reply-code) :type amqp-1-1-0-9-1:reply-code)
1565 (reply-text :initform (field-type-initform reply-text amqp-1-1-0-9-1:reply-text) :type amqp-1-1-0-9-1:reply-text)
1566 (consumer-tag :initform (field-type-initform consumer-tag amqp-1-1-0-9-1:consumer-tag) :type
1567 amqp-1-1-0-9-1:consumer-tag)
1568 (queue :initform (field-type-initform queue amqp-1-1-0-9-1:queue-name) :type amqp-1-1-0-9-1:queue-name
1569 :documentation "Specifies the name of the queue to get a message from.")
1570 (no-ack :initform (field-type-initform no-ack amqp-1-1-0-9-1:no-ack) :type amqp-1-1-0-9-1:no-ack)
1571 (redelivered :initform (field-type-initform redelivered amqp-1-1-0-9-1:redelivered) :type
1572 amqp-1-1-0-9-1:redelivered)
1573 (exchange :initform (field-type-initform exchange amqp-1-1-0-9-1:exchange-name) :type amqp-1-1-0-9-1:exchange-name
1574 :documentation "Specifies the name of the exchange that the message was originally published to.
1575 If empty, the message was published to the default exchange.")
1576 (routing-key :initform (field-type-initform routing-key amqp-1-1-0-9-1:shortstr) :type amqp-1-1-0-9-1:shortstr
1577 :documentation "Message routing key
1578
1579 Specifies the routing key name specified when the message was published.")
1580 (message-count :initform (field-type-initform message-count amqp-1-1-0-9-1:message-count) :type
1581 amqp-1-1-0-9-1:message-count)
1582 (reserved-1 :initform (field-type-initform reserved-1 amqp-1-1-0-9-1:shortstr) :type amqp-1-1-0-9-1:shortstr
1583 :allocation :class)
1584 (multiple :initform (field-type-initform multiple amqp-1-1-0-9-1:bit) :type amqp-1-1-0-9-1:bit :documentation
1585 "acknowledge multiple messages
1586
1587 If set to 1, the delivery tag is treated as 'up to and including', so that the
1588 client can acknowledge multiple messages with a single method. If set to zero,
1589 the delivery tag refers to a single message. If the multiple field is 1, and the
1590 delivery tag is zero, tells the server to acknowledge all outstanding messages.
1591
1592 The server MUST validate that a non-zero delivery-tag refers to a delivered
1593 message, and raise a channel exception if this is not the case. On a transacted
1594 channel, this check MUST be done immediately and not delayed until a Tx.Commit.
1595 Specifically, a client MUST not acknowledge the same message more than once.
1596
1597 TODO.")
1598 (delivery-tag :initform (field-type-initform delivery-tag amqp-1-1-0-9-1:delivery-tag) :type
1599 amqp-1-1-0-9-1:delivery-tag)
1600 (requeue :initform (field-type-initform requeue amqp-1-1-0-9-1:bit) :type amqp-1-1-0-9-1:bit :documentation
1601 "requeue the message
1602
1603 If this field is zero, the message will be redelivered to the original
1604 recipient. If this bit is 1, the server will attempt to requeue the message,
1605 potentially then delivering it to an alternative subscriber."))
1606 (:documentation "roles: server MUST; client MAY.
1607
1608 The Basic class provides methods that support an industry-standard messaging model.
1609
1610 basic = C:QOS S:QOS-OK
1611 / C:CONSUME S:CONSUME-OK
1612 / C:CANCEL S:CANCEL-OK
1613 / C:PUBLISH content
1614 / S:RETURN content
1615 / S:DELIVER content
1616 / C:GET ( S:GET-OK content / S:GET-EMPTY )
1617 / C:ACK
1618 / C:REJECT
1619 / C:RECOVER-ASYNC
1620 / C:RECOVER S:RECOVER-OK
1621 "))
1622
1623
1624 (def-amqp-method (amqp-1-1-0-9-1:basic amqp:qos) (amqp:qos amqp-1-1-0-9-1:method)
1625 ((id :initform 10))
1626 ((prefetch-size
1627 :initform (field-type-initform prefetch-size amqp-1-1-0-9-1:long)
1628 :type amqp-1-1-0-9-1:long
1629 :documentation "prefetch window in octets
1630
1631 The client can request that messages be sent in advance so that when the client
1632 finishes processing a message, the following message is already held locally,
1633 rather than needing to be sent down the channel. Prefetching gives a performance
1634 improvement. This field specifies the prefetch window size in octets. The server
1635 will send a message in advance if it is equal to or smaller in size than the
1636 available prefetch size (and also falls into other prefetch limits). May be set
1637 to zero, meaning 'no specific limit', although other prefetch limits may still
1638 apply. The prefetch-size is ignored if the no-ack option is set.
1639
1640 The server MUST ignore this setting when the client is not processing any
1641 messages - i.e. the prefetch size does not limit the transfer of single
1642 messages to a client, only the sending in advance of more messages while
1643 the client still has one or more unacknowledged messages.
1644
1645 Define a QoS prefetch-size limit and send a single message that exceeds
1646 that limit. Verify that the message arrives correctly.")
1647 (prefetch-count
1648 :initform (field-type-initform prefetch-count amqp-1-1-0-9-1:short)
1649 :type amqp-1-1-0-9-1:short
1650 :documentation "prefetch window in messages
1651
1652 Specifies a prefetch window in terms of whole messages. This field may be used
1653 in combination with the prefetch-size field; a message will only be sent in
1654 advance if both prefetch windows (and those at the channel and connection level)
1655 allow it. The prefetch-count is ignored if the no-ack option is set.
1656
1657 The server may send less data in advance than allowed by the client's
1658 specified prefetch windows but it MUST NOT send more.
1659
1660 Define a QoS prefetch-size limit and a prefetch-count limit greater than
1661 one. Send multiple messages that exceed the prefetch size. Verify that
1662 no more than one message arrives at once.")
1663 (global
1664 :initform (field-type-initform global amqp-1-1-0-9-1:bit)
1665 :type amqp-1-1-0-9-1:bit
1666 :documentation "apply to entire connection
1667
1668 By default the QoS settings apply to the current channel only. If this field is
1669 set, they are applied to the entire connection."))
1670 (:documentation "roles: server MUST."))
1671
1672 (def-amqp-method (amqp-1-1-0-9-1:basic amqp:qos-ok) (amqp:qos-ok amqp-1-1-0-9-1:method)
1673 ((id :initform 11))
1674 ()
1675 (:documentation "roles: client MUST."))
1676
1677 (def-amqp-method (amqp-1-1-0-9-1:basic amqp:consume) (amqp:consume amqp-1-1-0-9-1:method)
1678 ((id :initform 20))
1679 ((reserved-1
1680 :initform (field-type-initform reserved-1 amqp-1-1-0-9-1:short)
1681 :type amqp-1-1-0-9-1:short
1682 :allocation :class)
1683 (queue
1684 :initform (field-type-initform queue amqp-1-1-0-9-1:queue-name)
1685 :type amqp-1-1-0-9-1:queue-name
1686 :documentation "Specifies the name of the queue to consume from.")
1687 (consumer-tag
1688 :initform (field-type-initform consumer-tag amqp-1-1-0-9-1:consumer-tag)
1689 :type amqp-1-1-0-9-1:consumer-tag
1690 :documentation "Specifies the identifier for the consumer. The consumer tag is local to a
1691 channel, so two clients can use the same consumer tags. If this field is
1692 empty the server will generate a unique tag.
1693
1694 The client MUST NOT specify a tag that refers to an existing consumer.
1695
1696 Attempt to create two consumers with the same non-empty tag, on the
1697 same channel.
1698
1699 The consumer tag is valid only within the channel from which the
1700 consumer was created. I.e. a client MUST NOT create a consumer in one
1701 channel and then use it in another.
1702
1703 Attempt to create a consumer in one channel, then use in another channel,
1704 in which consumers have also been created (to test that the server uses
1705 unique consumer tags).")
1706 (no-local
1707 :initform (field-type-initform no-local amqp-1-1-0-9-1:no-local)
1708 :type amqp-1-1-0-9-1:no-local)
1709 (no-ack
1710 :initform (field-type-initform no-ack amqp-1-1-0-9-1:no-ack)
1711 :type amqp-1-1-0-9-1:no-ack)
1712 (exclusive
1713 :initform (field-type-initform exclusive amqp-1-1-0-9-1:bit)
1714 :type amqp-1-1-0-9-1:bit
1715 :documentation "request exclusive access
1716
1717 Request exclusive consumer access, meaning only this consumer can access the
1718 queue.
1719
1720 The client MAY NOT gain exclusive access to a queue that already has
1721 active consumers.
1722
1723 Open two connections to a server, and in one connection declare a shared
1724 (non-exclusive) queue and then consume from the queue. In the second
1725 connection attempt to consume from the same queue using the exclusive
1726 option.")
1727 (no-wait
1728 :initform (field-type-initform no-wait amqp-1-1-0-9-1:no-wait)
1729 :type amqp-1-1-0-9-1:no-wait)
1730 (arguments
1731 :initform (field-type-initform arguments amqp-1-1-0-9-1:table)
1732 :type amqp-1-1-0-9-1:table
1733 :documentation "arguments for declaration
1734
1735 A set of arguments for the consume. The syntax and semantics of these
1736 arguments depends on the server implementation."))
1737 (:documentation "roles: server MUST."))
1738
1739 (def-amqp-method (amqp-1-1-0-9-1:basic amqp:consume-ok) (amqp:consume-ok amqp-1-1-0-9-1:method)
1740 ((id :initform 21))
1741 ((consumer-tag
1742 :initform (field-type-initform consumer-tag amqp-1-1-0-9-1:consumer-tag)
1743 :type amqp-1-1-0-9-1:consumer-tag
1744 :documentation "Holds the consumer tag specified by the client or provided by the server."))
1745 (:documentation "roles: client MUST."))
1746
1747 (def-amqp-method (amqp-1-1-0-9-1:basic amqp:cancel) (amqp:cancel amqp-1-1-0-9-1:method)
1748 ((id :initform 30))
1749 ((consumer-tag
1750 :initform (field-type-initform consumer-tag amqp-1-1-0-9-1:consumer-tag)
1751 :type amqp-1-1-0-9-1:consumer-tag)
1752 (no-wait
1753 :initform (field-type-initform no-wait amqp-1-1-0-9-1:no-wait)
1754 :type amqp-1-1-0-9-1:no-wait))
1755 (:documentation "roles: server MUST."))
1756
1757 (def-amqp-method (amqp-1-1-0-9-1:basic amqp:cancel-ok) (amqp:cancel-ok amqp-1-1-0-9-1:method)
1758 ((id :initform 31))
1759 ((consumer-tag
1760 :initform (field-type-initform consumer-tag amqp-1-1-0-9-1:consumer-tag)
1761 :type amqp-1-1-0-9-1:consumer-tag))
1762 (:documentation "roles: client MUST."))
1763
1764 (def-amqp-method (amqp-1-1-0-9-1:basic amqp:publish) (amqp:publish amqp-1-1-0-9-1:method)
1765 ((id :initform 40))
1766 ((reserved-1
1767 :initform (field-type-initform reserved-1 amqp-1-1-0-9-1:short)
1768 :type amqp-1-1-0-9-1:short
1769 :allocation :class)
1770 (exchange
1771 :initform (field-type-initform exchange amqp-1-1-0-9-1:exchange-name)
1772 :type amqp-1-1-0-9-1:exchange-name
1773 :documentation "Specifies the name of the exchange to publish to. The exchange name can be
1774 empty, meaning the default exchange. If the exchange name is specified, and that
1775 exchange does not exist, the server will raise a channel exception.
1776
1777 The client MUST NOT attempt to publish a content to an exchange that
1778 does not exist.
1779
1780 The client attempts to publish a content to a non-existent exchange.
1781
1782 The server MUST accept a blank exchange name to mean the default exchange.
1783
1784 The client declares a queue and binds it to a blank exchange name.
1785
1786 If the exchange was declared as an internal exchange, the server MUST raise
1787 a channel exception with a reply code 403 (access refused).
1788
1789 TODO.
1790
1791 The exchange MAY refuse basic content in which case it MUST raise a channel
1792 exception with reply code 540 (not implemented).
1793
1794 TODO.")
1795 (routing-key
1796 :initform (field-type-initform routing-key amqp-1-1-0-9-1:shortstr)
1797 :type amqp-1-1-0-9-1:shortstr
1798 :documentation "Message routing key
1799
1800 Specifies the routing key for the message. The routing key is used for routing
1801 messages depending on the exchange configuration.")
1802 (mandatory
1803 :initform (field-type-initform mandatory amqp-1-1-0-9-1:bit)
1804 :type amqp-1-1-0-9-1:bit
1805 :documentation "indicate mandatory routing
1806
1807 This flag tells the server how to react if the message cannot be routed to a
1808 queue. If this flag is set, the server will return an unroutable message with a
1809 Return method. If this flag is zero, the server silently drops the message.
1810
1811 The server SHOULD implement the mandatory flag.
1812
1813 TODO.")
1814 (immediate
1815 :initform (field-type-initform immediate amqp-1-1-0-9-1:bit)
1816 :type amqp-1-1-0-9-1:bit
1817 :documentation "request immediate delivery
1818
1819 This flag tells the server how to react if the message cannot be routed to a
1820 queue consumer immediately. If this flag is set, the server will return an
1821 undeliverable message with a Return method. If this flag is zero, the server
1822 will queue the message, but with no guarantee that it will ever be consumed.
1823
1824 The server SHOULD implement the immediate flag.
1825
1826 TODO."))
1827 (:documentation "roles: server MUST."))
1828
1829 (def-amqp-method (amqp-1-1-0-9-1:basic amqp:return) (amqp:return amqp-1-1-0-9-1:method)
1830 ((id :initform 50))
1831 ((reply-code
1832 :initform (field-type-initform reply-code amqp-1-1-0-9-1:reply-code)
1833 :type amqp-1-1-0-9-1:reply-code)
1834 (reply-text
1835 :initform (field-type-initform reply-text amqp-1-1-0-9-1:reply-text)
1836 :type amqp-1-1-0-9-1:reply-text)
1837 (exchange
1838 :initform (field-type-initform exchange amqp-1-1-0-9-1:exchange-name)
1839 :type amqp-1-1-0-9-1:exchange-name
1840 :documentation "Specifies the name of the exchange that the message was originally published
1841 to. May be empty, meaning the default exchange.")
1842 (routing-key
1843 :initform (field-type-initform routing-key amqp-1-1-0-9-1:shortstr)
1844 :type amqp-1-1-0-9-1:shortstr
1845 :documentation "Message routing key
1846
1847 Specifies the routing key name specified when the message was published."))
1848 (:documentation "roles: client MUST."))
1849
1850 (def-amqp-method (amqp-1-1-0-9-1:basic amqp:deliver) (amqp:deliver amqp-1-1-0-9-1:method)
1851 ((id :initform 60))
1852 ((consumer-tag
1853 :initform (field-type-initform consumer-tag amqp-1-1-0-9-1:consumer-tag)
1854 :type amqp-1-1-0-9-1:consumer-tag)
1855 (delivery-tag
1856 :initform (field-type-initform delivery-tag amqp-1-1-0-9-1:delivery-tag)
1857 :type amqp-1-1-0-9-1:delivery-tag)
1858 (redelivered
1859 :initform (field-type-initform redelivered amqp-1-1-0-9-1:redelivered)
1860 :type amqp-1-1-0-9-1:redelivered)
1861 (exchange
1862 :initform (field-type-initform exchange amqp-1-1-0-9-1:exchange-name)
1863 :type amqp-1-1-0-9-1:exchange-name
1864 :documentation "Specifies the name of the exchange that the message was originally published to.
1865 May be empty, indicating the default exchange.")
1866 (routing-key
1867 :initform (field-type-initform routing-key amqp-1-1-0-9-1:shortstr)
1868 :type amqp-1-1-0-9-1:shortstr
1869 :documentation "Message routing key
1870
1871 Specifies the routing key name specified when the message was published."))
1872 (:documentation "roles: client MUST."))
1873
1874 (def-amqp-method (amqp-1-1-0-9-1:basic amqp:get) (amqp:get amqp-1-1-0-9-1:method)
1875 ((id :initform 70))
1876 ((reserved-1
1877 :initform (field-type-initform reserved-1 amqp-1-1-0-9-1:short)
1878 :type amqp-1-1-0-9-1:short
1879 :allocation :class)
1880 (queue
1881 :initform (field-type-initform queue amqp-1-1-0-9-1:queue-name)
1882 :type amqp-1-1-0-9-1:queue-name
1883 :documentation "Specifies the name of the queue to get a message from.")
1884 (no-ack
1885 :initform (field-type-initform no-ack amqp-1-1-0-9-1:no-ack)
1886 :type amqp-1-1-0-9-1:no-ack))
1887 (:documentation "roles: server MUST."))
1888
1889 (def-amqp-method (amqp-1-1-0-9-1:basic amqp:get-ok) (amqp:get-ok amqp-1-1-0-9-1:method)
1890 ((id :initform 71))
1891 ((delivery-tag
1892 :initform (field-type-initform delivery-tag amqp-1-1-0-9-1:delivery-tag)
1893 :type amqp-1-1-0-9-1:delivery-tag)
1894 (redelivered
1895 :initform (field-type-initform redelivered amqp-1-1-0-9-1:redelivered)
1896 :type amqp-1-1-0-9-1:redelivered)
1897 (exchange
1898 :initform (field-type-initform exchange amqp-1-1-0-9-1:exchange-name)
1899 :type amqp-1-1-0-9-1:exchange-name
1900 :documentation "Specifies the name of the exchange that the message was originally published to.
1901 If empty, the message was published to the default exchange.")
1902 (routing-key
1903 :initform (field-type-initform routing-key amqp-1-1-0-9-1:shortstr)
1904 :type amqp-1-1-0-9-1:shortstr
1905 :documentation "Message routing key
1906
1907 Specifies the routing key name specified when the message was published.")
1908 (message-count
1909 :initform (field-type-initform message-count amqp-1-1-0-9-1:message-count)
1910 :type amqp-1-1-0-9-1:message-count))
1911 (:documentation "roles: client MAY."))
1912
1913 (def-amqp-method (amqp-1-1-0-9-1:basic amqp:get-empty) (amqp:get-empty amqp-1-1-0-9-1:method)
1914 ((id :initform 72))
1915 ((reserved-1
1916 :initform (field-type-initform reserved-1 amqp-1-1-0-9-1:shortstr)
1917 :type amqp-1-1-0-9-1:shortstr
1918 :allocation :class))
1919 (:documentation "roles: client MAY."))
1920
1921 (def-amqp-method (amqp-1-1-0-9-1:basic amqp:ack) (amqp:ack amqp-1-1-0-9-1:method)
1922 ((id :initform 80))
1923 ((delivery-tag
1924 :initform (field-type-initform delivery-tag amqp-1-1-0-9-1:delivery-tag)
1925 :type amqp-1-1-0-9-1:delivery-tag)
1926 (multiple
1927 :initform (field-type-initform multiple amqp-1-1-0-9-1:bit)
1928 :type amqp-1-1-0-9-1:bit
1929 :documentation "acknowledge multiple messages
1930
1931 If set to 1, the delivery tag is treated as 'up to and including', so that the
1932 client can acknowledge multiple messages with a single method. If set to zero,
1933 the delivery tag refers to a single message. If the multiple field is 1, and the
1934 delivery tag is zero, tells the server to acknowledge all outstanding messages.
1935
1936 The server MUST validate that a non-zero delivery-tag refers to a delivered
1937 message, and raise a channel exception if this is not the case. On a transacted
1938 channel, this check MUST be done immediately and not delayed until a Tx.Commit.
1939 Specifically, a client MUST not acknowledge the same message more than once.
1940
1941 TODO."))
1942 (:documentation "roles: server MUST."))
1943
1944 (def-amqp-method (amqp-1-1-0-9-1:basic amqp:reject) (amqp:reject amqp-1-1-0-9-1:method)
1945 ((id :initform 90))
1946 ((delivery-tag
1947 :initform (field-type-initform delivery-tag amqp-1-1-0-9-1:delivery-tag)
1948 :type amqp-1-1-0-9-1:delivery-tag)
1949 (requeue
1950 :initform (field-type-initform requeue amqp-1-1-0-9-1:bit)
1951 :type amqp-1-1-0-9-1:bit
1952 :documentation "requeue the message
1953
1954 If requeue is true, the server will attempt to requeue the message. If requeue
1955 is false or the requeue attempt fails the messages are discarded or dead-lettered.
1956
1957 The server MUST NOT deliver the message to the same client within the
1958 context of the current channel. The recommended strategy is to attempt to
1959 deliver the message to an alternative consumer, and if that is not possible,
1960 to move the message to a dead-letter queue. The server MAY use more
1961 sophisticated tracking to hold the message on the queue and redeliver it to
1962 the same client at a later stage.
1963
1964 TODO."))
1965 (:documentation "roles: server MUST."))
1966
1967 (def-amqp-method (amqp-1-1-0-9-1:basic amqp:recover-async) (amqp:recover-async amqp-1-1-0-9-1:method)
1968 ((id :initform 100))
1969 ((requeue
1970 :initform (field-type-initform requeue amqp-1-1-0-9-1:bit)
1971 :type amqp-1-1-0-9-1:bit
1972 :documentation "requeue the message
1973
1974 If this field is zero, the message will be redelivered to the original
1975 recipient. If this bit is 1, the server will attempt to requeue the message,
1976 potentially then delivering it to an alternative subscriber."))
1977 (:documentation "roles: server MAY."))
1978
1979 (def-amqp-method (amqp-1-1-0-9-1:basic amqp:recover) (amqp:recover amqp-1-1-0-9-1:method)
1980 ((id :initform 110))
1981 ((requeue
1982 :initform (field-type-initform requeue amqp-1-1-0-9-1:bit)
1983 :type amqp-1-1-0-9-1:bit
1984 :documentation "requeue the message
1985
1986 If this field is zero, the message will be redelivered to the original
1987 recipient. If this bit is 1, the server will attempt to requeue the message,
1988 potentially then delivering it to an alternative subscriber."))
1989 (:documentation "roles: server MUST."))
1990
1991 (def-amqp-method (amqp-1-1-0-9-1:basic amqp:recover-ok) (amqp:recover-ok amqp-1-1-0-9-1:method)
1992 ((id :initform 111))
1993 ()
1994 (:documentation "roles: client MUST."))
1995
1996 ;;; class: tx [id method-names]
1997 ;;; tx.select
1998 ;;; tx.select-ok
1999 ;;; tx.commit
2000 ;;; tx.commit-ok
2001 ;;; tx.rollback
2002 ;;; tx.rollback-ok
2003
2004 (def-amqp-class amqp-1-1-0-9-1:tx (amqp-1-1-0-9-1:object amqp:tx)
2005 ((id :initform 90 :allocation :class)
2006 (method-names :initform '(amqp:select amqp:select-ok amqp:commit amqp:commit-ok amqp:rollback amqp:rollback-ok)
2007 :allocation :class))
2008 ()
2009 ()
2010 (:documentation "roles: server SHOULD; client MAY.
2011
2012 The Tx class allows publish and ack operations to be batched into atomic
2013 units of work. The intention is that all publish and ack requests issued
2014 within a transaction will complete successfully or none of them will.
2015 Servers SHOULD implement atomic transactions at least where all publish
2016 or ack requests affect a single queue. Transactions that cover multiple
2017 queues may be non-atomic, given that queues can be created and destroyed
2018 asynchronously, and such events do not form part of any transaction.
2019 Further, the behaviour of transactions with respect to the immediate and
2020 mandatory flags on Basic.Publish methods is not defined.
2021
2022 tx = C:SELECT S:SELECT-OK
2023 / C:COMMIT S:COMMIT-OK
2024 / C:ROLLBACK S:ROLLBACK-OK
2025 "))
2026
2027
2028 (def-amqp-method (amqp-1-1-0-9-1:tx amqp:select) (amqp:select amqp-1-1-0-9-1:method)
2029 ((id :initform 10))
2030 ()
2031 (:documentation "roles: server MUST."))
2032
2033 (def-amqp-method (amqp-1-1-0-9-1:tx amqp:select-ok) (amqp:select-ok amqp-1-1-0-9-1:method)
2034 ((id :initform 11))
2035 ()
2036 (:documentation "roles: client MUST."))
2037
2038 (def-amqp-method (amqp-1-1-0-9-1:tx amqp:commit) (amqp:commit amqp-1-1-0-9-1:method)
2039 ((id :initform 20))
2040 ()
2041 (:documentation "roles: server MUST."))
2042
2043 (def-amqp-method (amqp-1-1-0-9-1:tx amqp:commit-ok) (amqp:commit-ok amqp-1-1-0-9-1:method)
2044 ((id :initform 21))
2045 ()
2046 (:documentation "roles: client MUST."))
2047
2048 (def-amqp-method (amqp-1-1-0-9-1:tx amqp:rollback) (amqp:rollback amqp-1-1-0-9-1:method)
2049 ((id :initform 30))
2050 ()
2051 (:documentation "roles: server MUST."))
2052
2053 (def-amqp-method (amqp-1-1-0-9-1:tx amqp:rollback-ok) (amqp:rollback-ok amqp-1-1-0-9-1:method)
2054 ((id :initform 31))
2055 ()
2056 (:documentation "roles: client MUST."))

  ViewVC Help
Powered by ViewVC 1.1.5