diff options
| author | Rafael H. Schloming <rhs@apache.org> | 2013-05-01 14:18:27 +0000 |
|---|---|---|
| committer | Rafael H. Schloming <rhs@apache.org> | 2013-05-01 14:18:27 +0000 |
| commit | 81c38ae55f6ebcd56035643a5816bce2bf7982dc (patch) | |
| tree | afdeca9d1e004757a7766165fabbc24594f7ba86 | |
| parent | d2d44cd97676ce4b28e4a2b98e923ca707a3ac1a (diff) | |
| download | qpid-python-81c38ae55f6ebcd56035643a5816bce2bf7982dc.tar.gz | |
added stripped versions of the 0-10 spec files
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1478012 13f79535-47bb-0310-9956-ffa450edef68
| -rw-r--r-- | qpid/specs/amqp.0-10-preview.stripped.xml | 1468 | ||||
| -rw-r--r-- | qpid/specs/amqp.0-10-qpid-errata.stripped.xml | 1203 | ||||
| -rw-r--r-- | qpid/specs/amqp.0-10.stripped.xml | 1200 |
3 files changed, 3871 insertions, 0 deletions
diff --git a/qpid/specs/amqp.0-10-preview.stripped.xml b/qpid/specs/amqp.0-10-preview.stripped.xml new file mode 100644 index 0000000000..11455c6184 --- /dev/null +++ b/qpid/specs/amqp.0-10-preview.stripped.xml @@ -0,0 +1,1468 @@ +<?xml version="1.0"?> + +<!-- +Copyright Bank of America, N.A., Barclays Bank PLC, Cisco Systems, Credit +Suisse, Deutsche Boerse, Envoy Technologies Inc., Goldman Sachs, HCL +Technologies Ltd, IIT Software GmbH, iMatix Corporation, INETCO Systems Limited, +Informatica Corporation, JPMorgan Chase & Co., Kaazing Corporation, N.A, +Microsoft Corporation, my-Channels, Novell, Progress Software, Red Hat Inc., +Software AG, Solace Systems Inc., StormMQ Ltd., Tervela Inc., TWIST Process +Innovations Ltd, VMware, Inc., and WS02 Inc. 2006-2011. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright +notice, this list of conditions and the following disclaimer in the +documentation and/or other materials provided with the distribution. +3. The name of the author may not be used to endorse or promote products +derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--> + +<amqp comment="AMQ Protocol (Working version)" major="99" xmlns="http://www.amqp.org/schema/amqp.xsd" port="5672" minor="0"> + <constant name="frame-method" value="1"/> + <constant name="frame-header" value="2"/> + <constant name="frame-body" value="3"/> + <constant name="frame-trace" value="7"/> + <constant name="frame-heartbeat" value="8"/> + <constant name="frame-min-size" value="4096"/> + <constant name="frame-end" value="206"/> + <constant name="reply-success" value="200"/> + <constant name="not-delivered" class="soft-error" value="310"/> + <constant name="content-too-large" class="soft-error" value="311"/> + <constant name="no-route" class="soft-error" value="312"/> + <constant name="no-consumers" class="soft-error" value="313"/> + <constant name="connection-forced" class="hard-error" value="320"/> + <constant name="invalid-path" class="hard-error" value="402"/> + <constant name="access-refused" class="soft-error" value="403"/> + <constant name="not-found" class="soft-error" value="404"/> + <constant name="resource-locked" class="soft-error" value="405"/> + <constant name="precondition-failed" class="soft-error" value="406"/> + <constant name="session-busy" class="soft-error" value="407"/> + <constant name="frame-error" class="hard-error" value="501"/> + <constant name="syntax-error" class="hard-error" value="502"/> + <constant name="command-invalid" class="hard-error" value="503"/> + <constant name="channel-error" class="hard-error" value="504"/> + <constant name="resource-error" class="hard-error" value="506"/> + <constant name="not-allowed" class="hard-error" value="530"/> + <constant name="not-implemented" class="hard-error" value="540"/> + <constant name="internal-error" class="hard-error" value="541"/> + <constant name="invalid-argument" class="hard-error" value="542"/> + <constant name="channel-busy" class="hard-error" value="543"/> + <constant name="xa-ok" value="0"/> + <constant name="xa-rbrollback" value="1"/> + <constant name="xa-rbtimeout" value="2"/> + <constant name="xa-heurhaz" value="3"/> + <constant name="xa-heurcom" value="4"/> + <constant name="xa-heurrb" value="5"/> + <constant name="xa-heurmix" value="6"/> + <constant name="xa-rdonly" value="7"/> + <constant name="field-table-octet" class="field-table-type" datatype="binary" width="1" value="0x00"/> + <constant name="field-table-signed-byte" class="field-table-type" datatype="signed-integer" width="1" value="0x01"/> + <constant name="field-table-unsigned-byte" class="field-table-type" datatype="unsigned-integer" width="1" value="0x02"/> + <constant name="field-table-char" class="field-table-type" datatype="char" width="1" value="0x04"/> + <constant name="field-table-boolean" class="field-table-type" datatype="boolean" width="1" value="0x08"/> + <constant name="field-table-two-octets" class="field-table-type" datatype="binary" width="2" value="0x10"/> + <constant name="field-table-signed-short" class="field-table-type" datatype="signed-integer" width="2" value="0x11"/> + <constant name="field-table-unsigned-short" class="field-table-type" datatype="unsigned-integer" width="2" value="0x12"/> + <constant name="field-table-four-octets" class="field-table-type" datatype="binary" width="4" value="0x20"/> + <constant name="field-table-signed-int" class="field-table-type" datatype="signed-integer" width="4" value="0x21"/> + <constant name="field-table-unsigned-int" class="field-table-type" datatype="unsigned-integer" width="4" value="0x22"/> + <constant name="field-table-float" class="field-table-type" datatype="ieee-float" width="4" value="0x23"/> + <constant name="field-table-utf32-char" class="field-table-type" datatype="char" width="4" value="0x27"/> + <constant name="field-table-eight-octets" class="field-table-type" datatype="binary" width="8" value="0x30"/> + <constant name="field-table-signed-long" class="field-table-type" datatype="signed-integer" width="8" value="0x31"/> + <constant name="field-table-unsigned-long" class="field-table-type" datatype="unsigned-integer" width="8" value="0x32"/> + <constant name="field-table-double" class="field-table-type" datatype="ieee-float" width="8" value="0x33"/> + <constant name="field-table-datetime" class="field-table-type" datatype="special" width="8" value="0x38"/> + <constant name="field-table-sixteen-octets" class="field-table-type" datatype="binary" width="16" value="0x40"/> + <constant name="field-table-uuid" class="field-table-type" datatype="special" width="16" value="0x48"/> + <constant name="field-table-thirty-two-octets" class="field-table-type" datatype="binary" width="32" value="0x50"/> + <constant name="field-table-sixty-four-octets" class="field-table-type" datatype="binary" width="64" value="0x60"/> + <constant name="field-table-128-octets" class="field-table-type" datatype="binary" width="128" value="0x70"/> + <constant name="field-table-short-binary" class="field-table-type" datatype="binary" lfwidth="1" value="0x80"/> + <constant name="field-table-short-string" class="field-table-type" datatype="string" lfwidth="1" value="0x84"/> + <constant name="field-table-short-utf8-string" class="field-table-type" datatype="string" lfwidth="1" value="0x85"/> + <constant name="field-table-short-utf16-string" class="field-table-type" datatype="string" lfwidth="1" value="0x86"/> + <constant name="field-table-short-utf32-string" class="field-table-type" datatype="string" lfwidth="1" value="0x87"/> + <constant name="field-table-binary" class="field-table-type" datatype="binary" lfwidth="2" value="0x90"/> + <constant name="field-table-string" class="field-table-type" datatype="string" lfwidth="2" value="0x94"/> + <constant name="field-table-utf8-string" class="field-table-type" datatype="string" lfwidth="2" value="0x95"/> + <constant name="field-table-utf16-string" class="field-table-type" datatype="string" lfwidth="2" value="0x96"/> + <constant name="field-table-utf32-string" class="field-table-type" datatype="string" lfwidth="2" value="0x97"/> + <constant name="field-table-long-binary" class="field-table-type" datatype="binary" lfwidth="4" value="0xa0"/> + <constant name="field-table-long-string" class="field-table-type" datatype="string" lfwidth="4" value="0xa4"/> + <constant name="field-table-long-utf8-string" class="field-table-type" datatype="string" lfwidth="4" value="0xa5"/> + <constant name="field-table-long-utf16-string" class="field-table-type" datatype="string" lfwidth="4" value="0xa6"/> + <constant name="field-table-long-utf32-string" class="field-table-type" datatype="string" lfwidth="4" value="0xa7"/> + <constant name="field-table-table" class="field-table-type" datatype="field-table" lfwidth="4" value="0xa8"/> + <constant name="field-table-sequence" class="field-table-type" datatype="sequence" lfwidth="4" value="0xa9"/> + <constant name="field-table-array" class="field-table-type" datatype="array" lfwidth="4" value="0xaa"/> + <constant name="field-table-five-octets" class="field-table-type" datatype="binary" width="5" value="0xc0"/> + <constant name="field-table-decimal" class="field-table-type" datatype="decimal" width="5" value="0xc8"/> + <constant name="field-table-nine-octets" class="field-table-type" datatype="binary" width="9" value="0xd0"/> + <constant name="field-table-long-decimal" class="field-table-type" datatype="decimal" width="9" value="0xd8"/> + <constant name="field-table-void" class="field-table-type" datatype="void" width="0" value="0xf0"/> + <domain name="access-ticket" type="short"> + <assert check="ne" value="0"/> + </domain> + <domain name="class-id" type="short"/> + <domain name="method-id" type="short"/> + <domain name="consumer-tag" type="shortstr"/> + <domain name="delivery-tag" type="longlong"> + <rule name="session-local"/> + <rule name="non-zero"/> + <assert check="ne" value="0"/> + </domain> + <domain name="exchange-name" type="shortstr"> + <assert check="regexp" value="[a-zA-Z0-9_]{1,127}"/> + </domain> + <domain name="known-hosts" type="shortstr"/> + <domain name="message-id" type="uuid"> + <rule name="unique"/> + <rule name="immutable"/> + </domain> + <domain name="no-ack" type="bit"/> + <domain name="no-local" type="bit"/> + <domain name="path" type="shortstr"> + <assert check="notnull"/> + <assert check="syntax" rule="path"/> + <assert check="length" value="127"/> + </domain> + <domain name="peer-properties" type="table"/> + <domain name="queue-name" type="shortstr"> + <assert check="regexp" value="[a-zA-Z0-9_].{0,254}"/> + </domain> + <domain name="redelivered" type="bit"> + <rule name="implementation"/> + <rule name="hinting"/> + </domain> + <domain name="rfc1982-long" type="long"/> + <domain name="reply-code" type="short"> + <assert check="notnull"/> + </domain> + <domain name="reply-text" type="shortstr"> + <assert check="notnull"/> + </domain> + <domain name="duration" type="longlong"/> + <domain name="offset" type="longlong"/> + <domain name="reference" type="longstr"/> + <domain name="destination" type="shortstr"/> + <domain name="reject-code" type="short"> + <rule name="allowed-values"/> + </domain> + <domain name="reject-text" type="shortstr"/> + <domain name="security-token" type="longstr"/> + <domain name="reply-to"> + <struct size="short" pack="short"> + <field name="exchange-name" domain="exchange-name"/> + <field name="routing-key" domain="shortstr"/> + </struct> + </domain> + <domain name="confirm-mode" type="octet"/> + <domain name="acquire-mode" type="octet"/> + <domain name="delivery-properties"> + <struct type="0" size="long" pack="short"> + <field name="discard-unroutable" domain="bit"/> + <field name="redelivered" domain="redelivered"/> + <field name="priority" domain="octet"/> + <field name="delivery-mode" domain="octet"/> + <field name="ttl" domain="duration"> + <rule name="ttl-decrement"/> + </field> + <field name="timestamp" domain="timestamp"/> + <field name="expiration" domain="timestamp"/> + <field name="exchange" domain="exchange-name"/> + <field name="routing-key" domain="shortstr"/> + </struct> + </domain> + <domain name="message-properties"> + <struct type="1" size="long" pack="short"> + <field name="content-length" domain="longlong"/> + <field name="message-id" domain="shortstr"/> + <field name="correlation-id" domain="shortstr"/> + <field name="reply-to" domain="reply-to"/> + <field name="content-type" domain="shortstr"/> + <field name="content-encoding" domain="shortstr"/> + <field name="type" domain="shortstr"/> + <field name="user-id" domain="shortstr"/> + <field name="app-id" domain="shortstr"/> + <field name="transaction-id" domain="shortstr"/> + <field name="security-token" domain="security-token"/> + <field name="application-headers" domain="table"/> + </struct> + </domain> + <domain name="xid" type="longstr"> + <rule name="implementation"/> + </domain> + <domain name="detached-lifetime" type="long"/> + <domain name="session-id" type="uuid"/> + <domain name="correlation" type="rfc1982-long-set"/> + <domain name="command-id" type="long"/> + <domain name="long-struct" type="long-struct"/> + <domain name="execution-header"> + <struct size="octet" pack="octet"> + <field name="sync" domain="bit"/> + </struct> + </domain> + <domain name="bit" type="bit"/> + <domain name="octet" type="octet"/> + <domain name="short" type="short"/> + <domain name="long" type="long"/> + <domain name="longlong" type="longlong"/> + <domain name="shortstr" type="shortstr"/> + <domain name="longstr" type="longstr"/> + <domain name="timestamp" type="timestamp"/> + <domain name="table" type="table"/> + <domain name="uuid" type="uuid"/> + <domain name="array" type="array"/> + <domain name="content" type="content"/> + <domain name="rfc1982-long-set" type="rfc1982-long-set"/> + <class name="connection" index="10"> + <chassis name="server" implement="MUST"/> + <chassis name="client" implement="MUST"/> + <method name="start" index="10" synchronous="1"> + <rule name="protocol-name"/> + <rule name="server-support"/> + <rule name="client-support"/> + <chassis name="client" implement="MUST"/> + <response name="start-ok"/> + <field name="version-major" domain="octet"/> + <field name="version-minor" domain="octet"/> + <field name="server-properties" domain="peer-properties"> + <rule name="required-fields"/> + </field> + <field name="mechanisms" domain="longstr"> + <assert check="notnull"/> + </field> + <field name="locales" domain="longstr"> + <rule name="required-support"/> + <assert check="notnull"/> + </field> + </method> + <method name="start-ok" index="11" synchronous="1"> + <chassis name="server" implement="MUST"/> + <field name="client-properties" domain="peer-properties"> + <rule name="required-fields"/> + </field> + <field name="mechanism" domain="shortstr"> + <rule name="security"/> + <rule name="validity"/> + <assert check="notnull"/> + </field> + <field name="response" domain="longstr"> + <assert check="notnull"/> + </field> + <field name="locale" domain="shortstr"> + <assert check="notnull"/> + </field> + </method> + <method name="secure" index="20" synchronous="1"> + <chassis name="client" implement="MUST"/> + <response name="secure-ok"/> + <field name="challenge" domain="longstr"/> + </method> + <method name="secure-ok" index="21" synchronous="1"> + <chassis name="server" implement="MUST"/> + <field name="response" domain="longstr"> + <assert check="notnull"/> + </field> + </method> + <method name="tune" index="30" synchronous="1"> + <chassis name="client" implement="MUST"/> + <response name="tune-ok"/> + <field name="channel-max" domain="short"/> + <field name="frame-max" domain="long"> + <rule name="minimum"/> + </field> + <field name="heartbeat" domain="short"/> + </method> + <method name="tune-ok" index="31" synchronous="1"> + <chassis name="server" implement="MUST"/> + <field name="channel-max" domain="short"> + <rule name="upper-limit"/> + <assert check="notnull"/> + <assert check="le" value="channel-max"/> + </field> + <field name="frame-max" domain="long"> + <rule name="minimum"/> + <rule name="upper-limit"/> + </field> + <field name="heartbeat" domain="short"/> + </method> + <method name="open" index="40" synchronous="1"> + <chassis name="server" implement="MUST"/> + <response name="open-ok"/> + <response name="redirect"/> + <field name="virtual-host" domain="path"> + <rule name="separation"/> + <rule name="security"/> + <assert check="regexp" value="^[a-zA-Z0-9/-_]+$"/> + </field> + <field name="capabilities" domain="shortstr"/> + <field name="insist" domain="bit"> + <rule name="behaviour"/> + </field> + </method> + <method name="open-ok" index="41" synchronous="1"> + <chassis name="client" implement="MUST"/> + <field name="known-hosts" domain="known-hosts"/> + </method> + <method name="redirect" index="42" synchronous="1"> + <rule name="usage"/> + <chassis name="client" implement="MUST"/> + <field name="host" domain="shortstr"> + <assert check="notnull"/> + </field> + <field name="known-hosts" domain="known-hosts"/> + </method> + <method name="close" index="50" synchronous="1"> + <rule name="stability"/> + <chassis name="client" implement="MUST"/> + <chassis name="server" implement="MUST"/> + <response name="close-ok"/> + <field name="reply-code" domain="reply-code"/> + <field name="reply-text" domain="reply-text"/> + <field name="class-id" domain="class-id"/> + <field name="method-id" domain="method-id"/> + </method> + <method name="close-ok" index="51" synchronous="1"> + <rule name="reporting"/> + <chassis name="client" implement="MUST"/> + <chassis name="server" implement="MUST"/> + </method> + </class> + <class name="session" index="20"> + <chassis name="server" implement="MUST"/> + <chassis name="client" implement="MUST"/> + <method name="open" index="10" synchronous="1"> + <rule name="expiration"/> + <rule name="channel-busy"/> + <chassis name="server" implement="MUST"/> + <response name="attached"/> + <field name="detached-lifetime" domain="detached-lifetime"/> + </method> + <method name="attached" index="11" synchronous="1"> + <chassis name="client" implement="MUST"/> + <field name="session-id" domain="session-id"/> + <field name="detached-lifetime" domain="detached-lifetime"/> + </method> + <method name="flow" index="20" synchronous="1"> + <rule name="initial-state"/> + <rule name="bidirectional"/> + <rule name="throttling"/> + <rule name="expected-behaviour"/> + <chassis name="server" implement="MUST"/> + <chassis name="client" implement="MUST"/> + <response name="flow-ok"/> + <field name="active" domain="bit"/> + </method> + <method name="flow-ok" index="21"> + <chassis name="server" implement="MUST"/> + <chassis name="client" implement="MUST"/> + <field name="active" domain="bit"/> + </method> + <method name="close" index="40"> + <chassis name="client" implement="MUST"/> + <chassis name="server" implement="MUST"/> + </method> + <method name="closed" index="41"> + <chassis name="client" implement="MUST"/> + <chassis name="server" implement="MUST"/> + <field name="reply-code" domain="reply-code"/> + <field name="reply-text" domain="reply-text"/> + </method> + <method name="resume" index="50"> + <rule name="session-busy"/> + <chassis name="server" implement="MAY"/> + <response name="attached"/> + <field name="session-id" domain="session-id"/> + </method> + <method name="suspend" index="90"> + <chassis name="server" implement="MAY"/> + <response name="detached"/> + </method> + <method name="detached" index="100"> + <chassis name="client" implement="MAY"/> + </method> + <method name="ack" index="110"> + <rule name="unique-encoding"/> + <chassis name="server" implement="MUST"/> + <chassis name="client" implement="MUST"/> + <field name="cumulative-seen-mark" domain="rfc1982-long"/> + <field name="seen-frame-set" domain="rfc1982-long-set"/> + </method> + <method name="high-water-mark" index="120"> + <chassis name="server" implement="MUST"/> + <chassis name="client" implement="MUST"/> + <field name="last-sent-mark" domain="rfc1982-long"/> + </method> + <method name="solicit-ack" index="130"> + <chassis name="server" implement="MUST"/> + <chassis name="client" implement="MUST"/> + </method> + </class> + <class name="access" index="30"> + <chassis name="server" implement="MUST"/> + <chassis name="client" implement="MUST"/> + <method name="request" index="10" synchronous="1"> + <chassis name="server" implement="MUST"/> + <response name="request-ok"/> + <field name="realm" domain="shortstr"> + <rule name="validity" on-failure="access-refused"/> + </field> + <field name="exclusive" domain="bit"> + <rule name="in-use" on-failure="access-refused"/> + </field> + <field name="passive" domain="bit"/> + <field name="active" domain="bit"/> + <field name="write" domain="bit"/> + <field name="read" domain="bit"/> + </method> + <method name="request-ok" index="11" synchronous="1"> + <rule name="per-session" on-failure="not-allowed"/> + <chassis name="client" implement="MUST"/> + <field name="ticket" domain="access-ticket"/> + </method> + </class> + <class name="exchange" index="40"> + <rule name="required-types"/> + <rule name="recommended-types"/> + <rule name="required-instances"/> + <rule name="default-exchange"/> + <rule name="default-access"/> + <rule name="extensions"/> + <chassis name="server" implement="MUST"/> + <chassis name="client" implement="MUST"/> + <method name="declare" index="10" synchronous="1"> + <rule name="minimum"/> + <chassis name="server" implement="MUST"/> + <field name="ticket" domain="access-ticket"> + <rule name="validity" on-failure="access-refused"/> + <assert check="notnull"/> + </field> + <field name="exchange" domain="exchange-name"> + <rule name="reserved-names" on-failure="access-refused"/> + <rule name="exchange-name-required" on-failure="not-allowed"/> + </field> + <field name="type" domain="shortstr"> + <rule name="typed" on-failure="not-allowed"/> + <rule name="support" on-failure="command-invalid"/> + <assert check="regexp" value="^[a-zA-Z0-9-_.:]+$"/> + </field> + <field name="alternate-exchange" domain="exchange-name"> + <rule name="empty-name"/> + <rule name="pre-existing-exchange" on-failure="channel-error"/> + <rule name="double-failure"/> + </field> + <field name="passive" domain="bit"> + <rule name="not-found" on-failure="not-found"/> + </field> + <field name="durable" domain="bit"> + <rule name="support"/> + <rule name="sticky"/> + </field> + <field name="auto-delete" domain="bit"> + <rule name="sticky"/> + </field> + <field name="arguments" domain="table"/> + </method> + <method name="delete" index="20" synchronous="1"> + <chassis name="server" implement="MUST"/> + <field name="ticket" domain="access-ticket"> + <rule name="validity" on-failure="access-refused"/> + </field> + <field name="exchange" domain="exchange-name"> + <rule name="exists" on-failure="not-found"/> + <rule name="exchange-name-required" on-failure="not-allowed"/> + <assert check="notnull"/> + </field> + <field name="if-unused" domain="bit"/> + </method> + <method name="query" index="30" synchronous="1"> + <chassis name="server" implement="MUST"/> + <field name="ticket" domain="access-ticket"> + <rule name="validity" on-failure="access-refused"/> + </field> + <field name="name" domain="shortstr"/> + <result> + <struct type="31" size="long"> + <field name="type" domain="shortstr"/> + <field name="durable" domain="bit"/> + <field name="not-found" domain="bit"/> + <field name="arguments" domain="table"/> + </struct> + </result> + </method> + </class> + <class name="queue" index="50"> + <rule name="any-content"/> + <chassis name="server" implement="MUST"/> + <chassis name="client" implement="MUST"/> + <method name="declare" index="10" synchronous="1"> + <rule name="default-binding"/> + <rule name="minimum-queues"/> + <chassis name="server" implement="MUST"/> + <field name="ticket" domain="access-ticket"> + <rule name="validity" on-failure="access-refused"/> + </field> + <field name="queue" domain="queue-name"> + <rule name="reserved-prefix" on-failure="not-allowed"/> + </field> + <field name="alternate-exchange" domain="exchange-name"> + <rule name="empty"/> + <rule name="pre-existing-exchange" on-failure="channel-error"/> + <rule name="delete-exchange" on-failure="channel-error"/> + </field> + <field name="passive" domain="bit"> + <rule name="passive" on-failure="not-found"/> + </field> + <field name="durable" domain="bit"> + <rule name="persistence"/> + <rule name="types"/> + <rule name="pre-existence"/> + </field> + <field name="exclusive" domain="bit"> + <rule name="types"/> + <rule name="in-use" on-failure="resource-locked"/> + </field> + <field name="auto-delete" domain="bit"> + <rule name="pre-existence"/> + </field> + <field name="arguments" domain="table"/> + </method> + <method name="bind" index="20" synchronous="1"> + <rule name="duplicates"/> + <rule name="failure"/> + <rule name="transient-exchange" on-failure="not-allowed"/> + <rule name="durable-exchange"/> + <rule name="internal-exchange" on-failure="not-allowed"/> + <rule name="binding-count"/> + <rule name="multiple-bindings"/> + <chassis name="server" implement="MUST"/> + <field name="ticket" domain="access-ticket"> + <rule name="validity" on-failure="access-refused"/> + </field> + <field name="queue" domain="queue-name"> + <rule name="empty-queue" on-failure="not-allowed"/> + <rule name="queue-existence" on-failure="not-found"/> + </field> + <field name="exchange" domain="exchange-name"> + <rule name="exchange-existence" on-failure="not-found"/> + <rule name="exchange-name-required" on-failure="not-allowed"/> + </field> + <field name="routing-key" domain="shortstr"> + <rule name="direct-exchange-key-matching"/> + </field> + <field name="arguments" domain="table"/> + </method> + <method name="unbind" index="50" synchronous="1"> + <rule name="failure"/> + <chassis name="server" implement="MUST"/> + <field name="ticket" domain="access-ticket"> + <rule name="validity" on-failure="access-refused"/> + </field> + <field name="queue" domain="queue-name"> + <rule name="non-existent-queue" on-failure="not-found"/> + </field> + <field name="exchange" domain="exchange-name"> + <rule name="non-existent-exchange" on-failure="not-found"/> + <rule name="exchange-name-required" on-failure="not-allowed"/> + </field> + <field name="routing-key" domain="shortstr"/> + <field name="arguments" domain="table"/> + </method> + <method name="purge" index="30" synchronous="1"> + <rule name="empty"/> + <rule name="tx-exception"/> + <rule name="purge-recovery"/> + <chassis name="server" implement="MUST"/> + <field name="ticket" domain="access-ticket"> + <rule name="validity" on-failure="access-refused"/> + </field> + <field name="queue" domain="queue-name"> + <rule name="empty-name" on-failure="not-allowed"/> + <rule name="queue-exists" on-failure="not-found"/> + </field> + </method> + <method name="delete" index="40" synchronous="1"> + <rule name="dead-letter-queue"/> + <chassis name="server" implement="MUST"/> + <field name="ticket" domain="access-ticket"> + <rule name="validity" on-failure="access-refused"/> + </field> + <field name="queue" domain="queue-name"> + <rule name="empty-name" on-failure="not-allowed"/> + <rule name="queue-exists" on-failure="not-found"/> + </field> + <field name="if-unused" domain="bit"> + <rule name="if-unused-flag"/> + </field> + <field name="if-empty" domain="bit"> + <rule name="not-empty" on-failure="precondition-failed"/> + </field> + </method> + <method name="query" index="60" synchronous="1"> + <chassis name="server" implement="MUST"/> + <field name="queue" domain="queue-name"> + <assert check="notnull"/> + </field> + <result> + <struct type="61" size="long"> + <field name="queue" domain="queue-name"> + <assert check="notnull"/> + </field> + <field name="alternate-exchange" domain="exchange-name"/> + <field name="durable" domain="bit"/> + <field name="exclusive" domain="bit"/> + <field name="auto-delete" domain="bit"/> + <field name="arguments" domain="table"/> + <field name="message-count" domain="long"/> + <field name="consumer-count" domain="long"/> + </struct> + </result> + </method> + </class> + <class name="basic" index="60"> + <rule name="persistence"/> + <rule name="persistent-overflow"/> + <rule name="throttling"/> + <rule name="non-persistent-overflow"/> + <rule name="dead-letter-overflow"/> + <rule name="min-priority-levels"/> + <rule name="max-priority-levels"/> + <rule name="priority"/> + <rule name="automatic-acknowledgement"/> + <rule name="explicit-acknowledgement"/> + <chassis name="server" implement="MUST"/> + <chassis name="client" implement="MAY"/> + <field name="content-type" domain="shortstr"/> + <field name="content-encoding" domain="shortstr"/> + <field name="headers" domain="table"/> + <field name="delivery-mode" domain="octet"/> + <field name="priority" domain="octet"/> + <field name="correlation-id" domain="shortstr"/> + <field name="reply-to" domain="shortstr"/> + <field name="expiration" domain="shortstr"/> + <field name="message-id" domain="shortstr"/> + <field name="timestamp" domain="timestamp"/> + <field name="type" domain="shortstr"/> + <field name="user-id" domain="shortstr"/> + <field name="app-id" domain="shortstr"/> + <method name="qos" index="10" synchronous="1"> + <chassis name="server" implement="MUST"/> + <field name="prefetch-size" domain="long"> + <rule name="ignore"/> + </field> + <field name="prefetch-count" domain="short"> + <rule name="prefetch"/> + </field> + <field name="global" domain="bit"/> + </method> + <method name="consume" index="20" synchronous="1"> + <rule name="min-consumers"/> + <chassis name="server" implement="MUST"/> + <response name="consume-ok"/> + <field name="ticket" domain="access-ticket"> + <rule name="validity" on-failure="access-refused"/> + </field> + <field name="queue" domain="queue-name"> + <rule name="queue-exists-if-empty" on-failure="not-allowed"/> + </field> + <field name="consumer-tag" domain="consumer-tag"> + <rule name="not-existing-consumer" on-failure="not-allowed"/> + <rule name="session-bound" on-failure="not-allowed"/> + </field> + <field name="no-local" domain="no-local"/> + <field name="no-ack" domain="no-ack"/> + <field name="exclusive" domain="bit"> + <rule name="in-use" on-failure="access-refused"/> + </field> + <field name="nowait" domain="bit"/> + <field name="arguments" domain="table"/> + </method> + <method name="consume-ok" index="21" synchronous="1"> + <chassis name="client" implement="MUST"/> + <field name="consumer-tag" domain="consumer-tag"/> + </method> + <method name="cancel" index="30" synchronous="1"> + <rule name="non-existent"/> + <chassis name="server" implement="MUST"/> + <field name="consumer-tag" domain="consumer-tag"/> + </method> + <method name="publish" content="1" index="40"> + <chassis name="server" implement="MUST"/> + <field name="ticket" domain="access-ticket"> + <rule name="validity" on-failure="access-refused"/> + </field> + <field name="exchange" domain="exchange-name"> + <rule name="default"/> + <rule name="internal" on-failure="access-refused"/> + <rule name="refusal" on-failure="not-implemented"/> + </field> + <field name="routing-key" domain="shortstr"/> + <field name="reject-unroutable" domain="bit"/> + <field name="immediate" domain="bit"> + <rule name="implementation"/> + </field> + </method> + <method name="deliver" content="1" index="60"> + <rule name="redelivery-tracking"/> + <chassis name="client" implement="MUST"/> + <field name="consumer-tag" domain="consumer-tag"/> + <field name="delivery-tag" domain="delivery-tag"/> + <field name="redelivered" domain="redelivered"/> + <field name="exchange" domain="exchange-name"/> + <field name="routing-key" domain="shortstr"/> + </method> + <method name="get" index="70" synchronous="1"> + <chassis name="server" implement="MUST"/> + <response name="get-ok"/> + <response name="get-empty"/> + <field name="ticket" domain="access-ticket"> + <rule name="validity" on-failure="access-refused"/> + </field> + <field name="queue" domain="queue-name"> + <rule name="queue-exists-if-empty"/> + </field> + <field name="no-ack" domain="no-ack"/> + </method> + <method name="get-ok" content="1" index="71" synchronous="1"> + <chassis name="client" implement="MAY"/> + <field name="delivery-tag" domain="delivery-tag"/> + <field name="redelivered" domain="redelivered"/> + <field name="exchange" domain="exchange-name"/> + <field name="routing-key" domain="shortstr"/> + <field name="message-count" domain="long"/> + </method> + <method name="get-empty" index="72" synchronous="1"> + <chassis name="client" implement="MAY"/> + <field name="cluster-id" domain="shortstr"/> + </method> + <method name="ack" index="80"> + <chassis name="server" implement="MUST"/> + <field name="delivery-tag" domain="delivery-tag"/> + <field name="multiple" domain="bit"> + <rule name="validation"/> + </field> + </method> + <method name="reject" index="90"> + <rule name="concurrent-processing"/> + <rule name="server-interpretation"/> + <rule name="not-selection"/> + <chassis name="server" implement="MUST"/> + <field name="delivery-tag" domain="delivery-tag"/> + <field name="requeue" domain="bit"> + <rule name="requeue-strategy"/> + </field> + </method> + <method name="recover" index="100"> + <rule name="redelivered-flag"/> + <rule name="non-transacted-session"/> + <chassis name="server" implement="MUST"/> + <field name="requeue" domain="bit"/> + </method> + </class> + <class name="file" index="70"> + <rule name="reliable-storage"/> + <rule name="no-discard"/> + <rule name="priority-levels"/> + <rule name="acknowledgement-support"/> + <chassis name="server" implement="MAY"/> + <chassis name="client" implement="MAY"/> + <field name="content-type" domain="shortstr"/> + <field name="content-encoding" domain="shortstr"/> + <field name="headers" domain="table"/> + <field name="priority" domain="octet"/> + <field name="reply-to" domain="shortstr"/> + <field name="message-id" domain="shortstr"/> + <field name="filename" domain="shortstr"/> + <field name="timestamp" domain="timestamp"/> + <field name="cluster-id" domain="shortstr"/> + <method name="qos" index="10" synchronous="1"> + <chassis name="server" implement="MUST"/> + <response name="qos-ok"/> + <field name="prefetch-size" domain="long"/> + <field name="prefetch-count" domain="short"> + <rule name="prefetch-discretion"/> + </field> + <field name="global" domain="bit"/> + </method> + <method name="qos-ok" index="11" synchronous="1"> + <chassis name="client" implement="MUST"/> + </method> + <method name="consume" index="20" synchronous="1"> + <rule name="min-consumers"/> + <chassis name="server" implement="MUST"/> + <response name="consume-ok"/> + <field name="ticket" domain="access-ticket"> + <rule name="validity" on-failure="access-refused"/> + </field> + <field name="queue" domain="queue-name"> + <rule name="queue-exists-if-empty" on-failure="not-allowed"/> + </field> + <field name="consumer-tag" domain="consumer-tag"> + <rule name="not-existing-consumer" on-failure="not-allowed"/> + </field> + <field name="no-local" domain="no-local"/> + <field name="no-ack" domain="no-ack"/> + <field name="exclusive" domain="bit"> + <rule name="in-use" on-failure="resource-locked"/> + </field> + <field name="nowait" domain="bit"/> + <field name="filter" domain="table"/> + </method> + <method name="consume-ok" index="21" synchronous="1"> + <chassis name="client" implement="MUST"/> + <field name="consumer-tag" domain="consumer-tag"/> + </method> + <method name="cancel" index="30" synchronous="1"> + <chassis name="server" implement="MUST"/> + <field name="consumer-tag" domain="consumer-tag"/> + </method> + <method name="open" index="40" synchronous="1"> + <chassis name="server" implement="MUST"/> + <chassis name="client" implement="MUST"/> + <response name="open-ok"/> + <field name="identifier" domain="shortstr"/> + <field name="content-size" domain="longlong"> + <rule name="content-size"/> + </field> + </method> + <method name="open-ok" index="41" synchronous="1"> + <chassis name="server" implement="MUST"/> + <chassis name="client" implement="MUST"/> + <response name="stage"/> + <field name="staged-size" domain="longlong"> + <rule name="behaviour"/> + <rule name="staging"/> + </field> + </method> + <method name="stage" content="1" index="50"> + <chassis name="server" implement="MUST"/> + <chassis name="client" implement="MUST"/> + </method> + <method name="publish" index="60"> + <chassis name="server" implement="MUST"/> + <field name="ticket" domain="access-ticket"> + <rule name="validity" on-failure="access-refused"/> + </field> + <field name="exchange" domain="exchange-name"> + <rule name="default"/> + <rule name="internal" on-failure="access-refused"/> + <rule name="refusal" on-failure="not-implemented"/> + </field> + <field name="routing-key" domain="shortstr"/> + <field name="mandatory" domain="bit"> + <rule name="implementation"/> + </field> + <field name="immediate" domain="bit"> + <rule name="implementation"/> + </field> + <field name="identifier" domain="shortstr"/> + </method> + <method name="return" content="1" index="70"> + <chassis name="client" implement="MUST"/> + <field name="reply-code" domain="reply-code"/> + <field name="reply-text" domain="reply-text"/> + <field name="exchange" domain="exchange-name"/> + <field name="routing-key" domain="shortstr"/> + </method> + <method name="deliver" index="80"> + <rule name="redelivery-tracking"/> + <chassis name="client" implement="MUST"/> + <field name="consumer-tag" domain="consumer-tag"/> + <field name="delivery-tag" domain="delivery-tag"/> + <field name="redelivered" domain="redelivered"/> + <field name="exchange" domain="exchange-name"/> + <field name="routing-key" domain="shortstr"/> + <field name="identifier" domain="shortstr"/> + </method> + <method name="ack" index="90"> + <chassis name="server" implement="MUST"/> + <field name="delivery-tag" domain="delivery-tag"/> + <field name="multiple" domain="bit"> + <rule name="validation"/> + </field> + </method> + <method name="reject" index="100"> + <rule name="server-interpretation"/> + <rule name="not-selection"/> + <chassis name="server" implement="MUST"/> + <field name="delivery-tag" domain="delivery-tag"/> + <field name="requeue" domain="bit"> + <rule name="requeue-strategy"/> + </field> + </method> + </class> + <class name="stream" index="80"> + <rule name="overflow-discard"/> + <rule name="priority-levels"/> + <rule name="acknowledgement-support"/> + <chassis name="server" implement="MAY"/> + <chassis name="client" implement="MAY"/> + <field name="content-type" domain="shortstr"/> + <field name="content-encoding" domain="shortstr"/> + <field name="headers" domain="table"/> + <field name="priority" domain="octet"/> + <field name="timestamp" domain="timestamp"/> + <method name="qos" index="10" synchronous="1"> + <chassis name="server" implement="MUST"/> + <response name="qos-ok"/> + <field name="prefetch-size" domain="long"/> + <field name="prefetch-count" domain="short"/> + <field name="consume-rate" domain="long"> + <rule name="ignore-prefetch"/> + <rule name="drop-by-priority"/> + </field> + <field name="global" domain="bit"/> + </method> + <method name="qos-ok" index="11" synchronous="1"> + <chassis name="client" implement="MUST"/> + </method> + <method name="consume" index="20" synchronous="1"> + <rule name="min-consumers"/> + <rule name="priority-based-delivery"/> + <chassis name="server" implement="MUST"/> + <response name="consume-ok"/> + <field name="ticket" domain="access-ticket"> + <rule name="validity" on-failure="access-refused"/> + </field> + <field name="queue" domain="queue-name"> + <rule name="queue-exists-if-empty" on-failure="not-allowed"/> + </field> + <field name="consumer-tag" domain="consumer-tag"> + <rule name="not-existing-consumer" on-failure="not-allowed"/> + </field> + <field name="no-local" domain="no-local"/> + <field name="exclusive" domain="bit"> + <rule name="in-use" on-failure="resource-locked"/> + </field> + <field name="nowait" domain="bit"/> + <field name="filter" domain="table"/> + </method> + <method name="consume-ok" index="21" synchronous="1"> + <chassis name="client" implement="MUST"/> + <field name="consumer-tag" domain="consumer-tag"/> + </method> + <method name="cancel" index="30" synchronous="1"> + <chassis name="server" implement="MUST"/> + <field name="consumer-tag" domain="consumer-tag"/> + </method> + <method name="publish" content="1" index="40"> + <chassis name="server" implement="MUST"/> + <field name="ticket" domain="access-ticket"> + <rule name="validity" on-failure="access-refused"/> + </field> + <field name="exchange" domain="exchange-name"> + <rule name="default"/> + <rule name="internal" on-failure="access-refused"/> + <rule name="refusal" on-failure="not-implemented"/> + </field> + <field name="routing-key" domain="shortstr"/> + <field name="mandatory" domain="bit"> + <rule name="implementation"/> + </field> + <field name="immediate" domain="bit"> + <rule name="implementation"/> + </field> + </method> + <method name="return" content="1" index="50"> + <chassis name="client" implement="MUST"/> + <field name="reply-code" domain="reply-code"/> + <field name="reply-text" domain="reply-text"/> + <field name="exchange" domain="exchange-name"/> + <field name="routing-key" domain="shortstr"/> + </method> + <method name="deliver" content="1" index="60"> + <chassis name="client" implement="MUST"/> + <field name="consumer-tag" domain="consumer-tag"/> + <field name="delivery-tag" domain="delivery-tag"/> + <field name="exchange" domain="exchange-name"/> + <field name="queue" domain="queue-name"> + <assert check="notnull"/> + </field> + </method> + </class> + <class name="tx" index="90"> + <rule name="duplicate-tracking"/> + <chassis name="server" implement="SHOULD"/> + <chassis name="client" implement="MAY"/> + <method name="select" index="10" synchronous="1"> + <chassis name="server" implement="MUST"/> + </method> + <method name="commit" index="20" synchronous="1"> + <chassis name="server" implement="MUST"/> + </method> + <method name="rollback" index="30" synchronous="1"> + <chassis name="server" implement="MUST"/> + </method> + </class> + <class name="dtx-demarcation" index="100"> + <rule name="access-control"/> + <rule name="transactionality"/> + <chassis name="server" implement="MAY"/> + <chassis name="client" implement="MAY"/> + <method name="select" index="10" synchronous="1"> + <chassis name="server" implement="MAY"/> + </method> + <method name="start" index="20" synchronous="1"> + <rule name="command-invalid" on-failure="command-invalid"/> + <rule name="already-known" on-failure="not-allowed"/> + <rule name="join-and-resume" on-failure="command-invalid"/> + <chassis name="server" implement="MAY"/> + <field name="ticket" domain="access-ticket"> + <rule name="validity" on-failure="access-refused"/> + <assert check="notnull"/> + </field> + <field name="xid" domain="xid"> + <rule name="unknown-xid" on-failure="not-allowed"/> + <assert check="notnull"/> + </field> + <field name="join" domain="bit"> + <rule name="unsupported" on-failure="not-implemented"/> + <assert check="notnull"/> + </field> + <field name="resume" domain="bit"> + <assert check="notnull"/> + </field> + <result> + <struct type="21" size="long"> + <field name="status" domain="short"> + <assert check="notnull"/> + </field> + </struct> + </result> + </method> + <method name="end" index="30" synchronous="1"> + <rule name="command-invalid" on-failure="command-invalid"/> + <rule name="suspend-and-fail" on-failure="command-invalid"/> + <rule name="internal-error" on-failure="internal-error"/> + <rule name="success"/> + <rule name="session-closed"/> + <chassis name="server" implement="MAY"/> + <field name="ticket" domain="access-ticket"> + <rule name="validity" on-failure="access-refused"/> + <assert check="notnull"/> + </field> + <field name="xid" domain="xid"> + <rule name="not-associated" on-failure="command-invalid"/> + <assert check="notnull"/> + </field> + <field name="fail" domain="bit"> + <rule name="failure"/> + <assert check="notnull"/> + </field> + <field name="suspend" domain="bit"> + <rule name="resume"/> + <assert check="notnull"/> + </field> + <result> + <struct type="31" size="long"> + <field name="status" domain="short"> + <assert check="notnull"/> + </field> + </struct> + </result> + </method> + </class> + <class name="dtx-coordination" index="105"> + <rule name="security"/> + <chassis name="server" implement="MAY"/> + <chassis name="client" implement="MAY"/> + <method name="commit" index="10" synchronous="1"> + <rule name="internal-error" on-failure="internal-error"/> + <rule name="command-invalid" on-failure="command-invalid"/> + <chassis name="server" implement="MAY"/> + <field name="ticket" domain="access-ticket"> + <rule name="validity" on-failure="access-refused"/> + <assert check="notnull"/> + </field> + <field name="xid" domain="xid"> + <rule name="unknown-xid" on-failure="not-found"/> + <rule name="not-disassociated" on-failure="command-invalid"/> + <assert check="notnull"/> + </field> + <field name="one-phase" domain="bit"> + <rule name="prerequisite" on-failure="command-invalid"/> + <rule name="validity" on-failure="command-invalid"/> + <assert check="notnull"/> + </field> + <result> + <struct type="11" size="long"> + <field name="status" domain="short"> + <assert check="notnull"/> + </field> + </struct> + </result> + </method> + <method name="forget" index="20" synchronous="1"> + <rule name="internal-error" on-failure="internal-error"/> + <rule name="command-invalid" on-failure="command-invalid"/> + <chassis name="server" implement="MAY"/> + <field name="ticket" domain="access-ticket"> + <rule name="validity" on-failure="access-refused"/> + <assert check="notnull"/> + </field> + <field name="xid" domain="xid"> + <rule name="unknown-xid" on-failure="not-found"/> + <rule name="not-disassociated" on-failure="command-invalid"/> + <assert check="notnull"/> + </field> + </method> + <method name="get-timeout" index="30" synchronous="1"> + <rule name="internal-error" on-failure="internal-error"/> + <chassis name="server" implement="MAY"/> + <field name="xid" domain="xid"> + <rule name="unknown-xid" on-failure="not-found"/> + <assert check="notnull"/> + </field> + <result> + <struct type="31" size="long"> + <field name="timeout" domain="long"> + <assert check="notnull"/> + </field> + </struct> + </result> + </method> + <method name="prepare" index="40" synchronous="1"> + <rule name="internal-error" on-failure="internal-error"/> + <rule name="command-invalid" on-failure="command-invalid"/> + <rule name="obligation-1"/> + <rule name="obligation-2"/> + <chassis name="server" implement="MAY"/> + <field name="ticket" domain="access-ticket"> + <rule name="validity" on-failure="access-refused"/> + <assert check="notnull"/> + </field> + <field name="xid" domain="xid"> + <rule name="unknown-xid" on-failure="not-found"/> + <rule name="not-disassociated" on-failure="command-invalid"/> + <assert check="notnull"/> + </field> + <result> + <struct type="41" size="long"> + <field name="status" domain="short"> + <assert check="notnull"/> + </field> + </struct> + </result> + </method> + <method name="recover" index="50" synchronous="1"> + <rule name="internal-error" on-failure="internal-error"/> + <rule name="start-end"/> + <rule name="must-be-started" on-failure="command-invalid"/> + <chassis name="server" implement="MAY"/> + <field name="ticket" domain="access-ticket"> + <rule name="validity" on-failure="access-refused"/> + <assert check="notnull"/> + </field> + <field name="startscan" domain="bit"> + <rule name="recovery-already-open"/> + <assert check="notnull"/> + </field> + <field name="endscan" domain="bit"> + <assert check="notnull"/> + </field> + <result> + <struct type="51" size="long"> + <field name="in-doubt" domain="array"> + <assert check="notnull"/> + </field> + </struct> + </result> + </method> + <method name="rollback" index="60" synchronous="1"> + <rule name="internal-error" on-failure="internal-error"/> + <rule name="command-invalid" on-failure="command-invalid"/> + <chassis name="server" implement="MAY"/> + <field name="ticket" domain="access-ticket"> + <rule name="validity" on-failure="access-refused"/> + <assert check="notnull"/> + </field> + <field name="xid" domain="xid"> + <rule name="unknown-xid" on-failure="not-found"/> + <rule name="not-disassociated" on-failure="command-invalid"/> + <assert check="notnull"/> + </field> + <result> + <struct type="61" size="long"> + <field name="status" domain="short"> + <assert check="notnull"/> + </field> + </struct> + </result> + </method> + <method name="set-timeout" index="70" synchronous="1"> + <rule name="internal-error" on-failure="internal-error"/> + <rule name="effective"/> + <rule name="reset"/> + <chassis name="server" implement="MAY"/> + <field name="ticket" domain="access-ticket"> + <rule name="validity" on-failure="access-refused"/> + <assert check="notnull"/> + </field> + <field name="xid" domain="xid"> + <rule name="unknown-xid" on-failure="not-found"/> + <assert check="notnull"/> + </field> + <field name="timeout" domain="long"> + <assert check="notnull"/> + </field> + </method> + </class> + <class name="tunnel" index="110"> + <chassis name="server" implement="MAY"/> + <chassis name="client" implement="MAY"/> + <field name="headers" domain="table"/> + <field name="proxy-name" domain="shortstr"/> + <field name="data-name" domain="shortstr"/> + <field name="durable" domain="octet"/> + <field name="broadcast" domain="octet"/> + <method name="request" content="1" index="10"> + <chassis name="server" implement="MUST"/> + <field name="meta-data" domain="table"/> + </method> + </class> + <class name="message" index="120"> + <rule name="persistent-message"/> + <rule name="no-persistent-message-discard"/> + <rule name="throttling"/> + <rule name="non-persistent-message-overflow"/> + <rule name="non-persistent-message-discard"/> + <rule name="min-priority-levels"/> + <rule name="max-priority-levels"/> + <rule name="priority-delivery"/> + <rule name="automatic-acknowledgements"/> + <rule name="explicit-acknowledgements"/> + <chassis name="server" implement="MUST"/> + <chassis name="client" implement="MUST"/> + <method name="transfer" content="1" index="10"> + <chassis name="server" implement="MUST"/> + <chassis name="client" implement="MUST"/> + <field name="ticket" domain="access-ticket"> + <rule name="validity" on-failure="access-refused"/> + </field> + <field name="destination" domain="destination"> + <rule name="blank-destination"/> + <rule name="internal-exchange"/> + <rule name="message-refusal"/> + </field> + <field name="confirm-mode" domain="confirm-mode"/> + <field name="acquire-mode" domain="acquire-mode"/> + </method> + <method name="reject" index="160"> + <rule name="alternate-exchange"/> + <rule name="acquisition"/> + <chassis name="server" implement="MUST"/> + <chassis name="client" implement="MAY"/> + <field name="transfers" domain="correlation"/> + <field name="code" domain="reject-code"/> + <field name="text" domain="reject-text"/> + </method> + <method name="acquire" index="170"> + <chassis name="server" implement="MUST"/> + <field name="transfers" domain="correlation"/> + <field name="mode" domain="octet"/> + </method> + <method name="acquired" index="180"> + <chassis name="client" implement="MAY"/> + <field name="transfers" domain="correlation"/> + </method> + <method name="release" index="190"> + <chassis name="server" implement="MUST"/> + <chassis name="client" implement="MAY"/> + <field name="transfers" domain="correlation"/> + </method> + <method name="subscribe" index="20"> + <rule name="simultaneous-subscriptions"/> + <chassis name="server" implement="MUST"/> + <field name="ticket" domain="access-ticket"> + <rule name="validity" on-failure="access-refused"/> + </field> + <field name="queue" domain="queue-name"/> + <field name="destination" domain="destination"> + <rule name="destination-non-existing-subscription" on-failure="not-allowed"/> + <rule name="destination-session-bound" on-failure="not-allowed"/> + </field> + <field name="no-local" domain="no-local"/> + <field name="confirm-mode" domain="confirm-mode"/> + <field name="acquire-mode" domain="acquire-mode"/> + <field name="exclusive" domain="bit"> + <rule name="in-use" on-failure="access-refused"/> + </field> + <field name="filter" domain="table"/> + </method> + <method name="cancel" index="30"> + <rule name="ignore"/> + <chassis name="server" implement="MUST"/> + <field name="destination" domain="destination"/> + </method> + <method name="get" index="40"> + <chassis name="server" implement="MUST"/> + <response name="empty"/> + <field name="ticket" domain="access-ticket"> + <rule name="ticket-required" on-failure="access-refused"/> + </field> + <field name="queue" domain="queue-name"> + <rule name="empty-name"/> + </field> + <field name="destination" domain="destination"/> + <field name="no-ack" domain="no-ack"/> + </method> + <method name="recover" index="50"> + <rule name="redelivered-flag"/> + <rule name="transacted-session"/> + <chassis name="server" implement="MUST"/> + <field name="requeue" domain="bit"/> + </method> + <method name="open" index="60"> + <chassis name="server" implement="MUST"/> + <chassis name="client" implement="MUST"/> + <field name="reference" domain="reference"> + <rule name="duplicate-reference"/> + </field> + </method> + <method name="close" index="70"> + <rule name="message-acknowledge-after-close"/> + <chassis name="server" implement="MUST"/> + <chassis name="client" implement="MUST"/> + <field name="reference" domain="reference"> + <rule name="non-existent-reference"/> + </field> + </method> + <method name="append" index="80"> + <chassis name="server" implement="MUST"/> + <chassis name="client" implement="MUST"/> + <field name="reference" domain="reference"> + <rule name="non-existent-reference"/> + </field> + <field name="bytes" domain="longstr"/> + </method> + <method name="checkpoint" index="90"> + <chassis name="server" implement="MUST"/> + <chassis name="client" implement="MUST"/> + <field name="reference" domain="reference"> + <rule name="non-existent-reference"/> + </field> + <field name="identifier" domain="shortstr"/> + </method> + <method name="resume" index="100"> + <chassis name="server" implement="MUST"/> + <chassis name="client" implement="MUST"/> + <response name="offset"/> + <field name="reference" domain="reference"> + <rule name="non-existent-reference"/> + </field> + <field name="identifier" domain="shortstr"/> + </method> + <method name="qos" index="110"> + <chassis name="server" implement="MUST"/> + <field name="prefetch-size" domain="long"> + <rule name="non-responsive-client"/> + </field> + <field name="prefetch-count" domain="short"> + <rule name="prefetch-maximum"/> + </field> + <field name="global" domain="bit"/> + </method> + <method name="flow-mode" index="120"> + <rule name="byte-accounting"/> + <rule name="mode-switching"/> + <chassis name="server" implement="MUST"/> + <chassis name="client" implement="MUST"/> + <field name="destination" domain="destination"/> + <field name="mode" domain="octet"/> + </method> + <method name="flow" index="130"> + <chassis name="server" implement="MUST"/> + <chassis name="client" implement="MUST"/> + <field name="destination" domain="destination"/> + <field name="unit" domain="octet"/> + <field name="value" domain="long"/> + </method> + <method name="flush" index="140"> + <chassis name="server" implement="MUST"/> + <field name="destination" domain="destination"/> + </method> + <method name="stop" index="150"> + <chassis name="server" implement="MUST"/> + <chassis name="client" implement="MUST"/> + <field name="destination" domain="destination"/> + </method> + <method name="empty" index="200"> + <chassis name="server" implement="MUST"/> + <chassis name="client" implement="MUST"/> + </method> + <method name="offset" index="210"> + <chassis name="server" implement="MUST"/> + <chassis name="client" implement="MUST"/> + <field name="value" domain="offset"/> + </method> + </class> + <class name="binding" index="130"> + <chassis name="server" implement="MUST"/> + <chassis name="client" implement="MAY"/> + <method name="query" index="10" synchronous="1"> + <chassis name="server" implement="MUST"/> + <field name="ticket" domain="access-ticket"> + <rule name="validity" on-failure="access-refused"/> + </field> + <field name="exchange" domain="shortstr"/> + <field name="queue" domain="shortstr"/> + <field name="routing-key" domain="shortstr"/> + <field name="arguments" domain="table"/> + <result> + <struct type="11" size="long"> + <field name="exchange-not-found" domain="bit"/> + <field name="queue-not-found" domain="bit"/> + <field name="queue-not-matched" domain="bit"/> + <field name="key-not-matched" domain="bit"/> + <field name="args-not-matched" domain="bit"/> + </struct> + </result> + </method> + </class> + <class name="execution" index="140"> + <chassis name="server" implement="MUST"/> + <chassis name="client" implement="MUST"/> + <method name="flush" index="10"> + <chassis name="server" implement="MUST"/> + <chassis name="client" implement="MUST"/> + </method> + <method name="complete" index="20"> + <rule name="unique-encoding"/> + <chassis name="server" implement="MUST"/> + <chassis name="client" implement="MUST"/> + <field name="cumulative-execution-mark" domain="rfc1982-long"/> + <field name="ranged-execution-set" domain="rfc1982-long-set"/> + </method> + <method name="noop" index="30"> + <chassis name="server" implement="MUST"/> + <chassis name="client" implement="MUST"/> + </method> + <method name="result" index="40"> + <chassis name="server" implement="MUST"/> + <chassis name="client" implement="MUST"/> + <field name="command-id" domain="command-id"/> + <field name="data" domain="long-struct"/> + </method> + <method name="sync" index="50"> + <chassis name="server" implement="MUST"/> + <chassis name="client" implement="MUST"/> + </method> + </class> +</amqp> diff --git a/qpid/specs/amqp.0-10-qpid-errata.stripped.xml b/qpid/specs/amqp.0-10-qpid-errata.stripped.xml new file mode 100644 index 0000000000..038b5ab77b --- /dev/null +++ b/qpid/specs/amqp.0-10-qpid-errata.stripped.xml @@ -0,0 +1,1203 @@ +<?xml version="1.0"?> + +<!-- +Copyright Bank of America, N.A., Barclays Bank PLC, Cisco Systems, Credit +Suisse, Deutsche Boerse, Envoy Technologies Inc., Goldman Sachs, HCL +Technologies Ltd, IIT Software GmbH, iMatix Corporation, INETCO Systems Limited, +Informatica Corporation, JPMorgan Chase & Co., Kaazing Corporation, N.A, +Microsoft Corporation, my-Channels, Novell, Progress Software, Red Hat Inc., +Software AG, Solace Systems Inc., StormMQ Ltd., Tervela Inc., TWIST Process +Innovations Ltd, VMware, Inc., and WS02 Inc. 2006-2011. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright +notice, this list of conditions and the following disclaimer in the +documentation and/or other materials provided with the distribution. +3. The name of the author may not be used to endorse or promote products +derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--> + +<amqp major="0" xmlns="http://www.amqp.org/schema/amqp.xsd" port="5672" minor="10"> + <type name="bin8" code="0x00" fixed-width="1"/> + <type name="int8" code="0x01" fixed-width="1"/> + <type name="uint8" code="0x02" fixed-width="1"/> + <type name="char" code="0x04" fixed-width="1"/> + <type name="boolean" code="0x08" fixed-width="1"/> + <type name="bin16" code="0x10" fixed-width="2"/> + <type name="int16" code="0x11" fixed-width="2"/> + <type name="uint16" code="0x12" fixed-width="2"/> + <type name="bin32" code="0x20" fixed-width="4"/> + <type name="int32" code="0x21" fixed-width="4"/> + <type name="uint32" code="0x22" fixed-width="4"/> + <type name="float" code="0x23" fixed-width="4"/> + <type name="char-utf32" code="0x27" fixed-width="4"/> + <type name="sequence-no" fixed-width="4"/> + <type name="bin64" code="0x30" fixed-width="8"/> + <type name="int64" code="0x31" fixed-width="8"/> + <type name="uint64" code="0x32" fixed-width="8"/> + <type name="double" code="0x33" fixed-width="8"/> + <type name="datetime" code="0x38" fixed-width="8"/> + <type name="bin128" code="0x40" fixed-width="16"/> + <type name="uuid" code="0x48" fixed-width="16"/> + <type name="bin256" code="0x50" fixed-width="32"/> + <type name="bin512" code="0x60" fixed-width="64"/> + <type name="bin1024" code="0x70" fixed-width="128"/> + <type name="vbin8" code="0x80" variable-width="1"/> + <type name="str8-latin" code="0x84" variable-width="1"/> + <type name="str8" code="0x85" variable-width="1"/> + <type name="str8-utf16" code="0x86" variable-width="1"/> + <type name="vbin16" code="0x90" variable-width="2"/> + <type name="str16-latin" code="0x94" variable-width="2"/> + <type name="str16" code="0x95" variable-width="2"/> + <type name="str16-utf16" code="0x96" variable-width="2"/> + <type name="byte-ranges" variable-width="2"/> + <type name="sequence-set" variable-width="2"/> + <type name="vbin32" code="0xa0" variable-width="4"/> + <type name="map" code="0xa8" variable-width="4"/> + <type name="list" code="0xa9" variable-width="4"/> + <type name="array" code="0xaa" variable-width="4"/> + <type name="struct32" code="0xab" variable-width="4"/> + <type name="bin40" code="0xc0" fixed-width="5"/> + <type name="dec32" code="0xc8" fixed-width="5"/> + <type name="bin72" code="0xd0" fixed-width="9"/> + <type name="dec64" code="0xd8" fixed-width="9"/> + <type name="void" code="0xf0" fixed-width="0"/> + <type name="bit" code="0xf1" fixed-width="0"/> + <constant name="MIN-MAX-FRAME-SIZE" value="4096"/> + <domain name="segment-type" type="uint8"> + <enum> + <choice name="control" value="0"/> + <choice name="command" value="1"/> + <choice name="header" value="2"/> + <choice name="body" value="3"/> + </enum> + </domain> + <domain name="track" type="uint8"> + <enum> + <choice name="control" value="0"/> + <choice name="command" value="1"/> + </enum> + </domain> + <domain name="str16-array" type="array"/> + <class name="connection" code="0x1"> + <role name="server" implement="MUST"/> + <role name="client" implement="MUST"/> + <domain name="close-code" type="uint16"> + <enum> + <choice name="normal" value="200"/> + <choice name="connection-forced" value="320"/> + <choice name="invalid-path" value="402"/> + <choice name="framing-error" value="501"/> + </enum> + </domain> + <domain name="amqp-host-url" type="str16"/> + <domain name="amqp-host-array" type="array"/> + <control name="start" code="0x1"> + <rule name="protocol-name"/> + <rule name="client-support"/> + <implement role="client" handle="MUST"/> + <response name="start-ok"/> + <field name="server-properties" type="map"> + <rule name="required-fields"/> + </field> + <field name="mechanisms" type="str16-array" required="true"/> + <field name="locales" type="str16-array" required="true"> + <rule name="required-support"/> + </field> + </control> + <control name="start-ok" code="0x2"> + <implement role="server" handle="MUST"/> + <field name="client-properties" type="map"> + <rule name="required-fields"/> + </field> + <field name="mechanism" type="str8" required="true"> + <rule name="security"/> + <rule name="validity"/> + </field> + <field name="response" type="vbin32" required="true"/> + <field name="locale" type="str8" required="true"/> + </control> + <control name="secure" code="0x3"> + <implement role="client" handle="MUST"/> + <response name="secure-ok"/> + <field name="challenge" type="vbin32" required="true"/> + </control> + <control name="secure-ok" code="0x4"> + <implement role="server" handle="MUST"/> + <field name="response" type="vbin32" required="true"/> + </control> + <control name="tune" code="0x5"> + <implement role="client" handle="MUST"/> + <response name="tune-ok"/> + <field name="channel-max" type="uint16"/> + <field name="max-frame-size" type="uint16"> + <rule name="minimum"/> + </field> + <field name="heartbeat-min" type="uint16"/> + <field name="heartbeat-max" type="uint16"> + <rule name="permitted-range"/> + <rule name="no-heartbeat-min"/> + </field> + </control> + <control name="tune-ok" code="0x6"> + <implement role="server" handle="MUST"/> + <field name="channel-max" type="uint16" required="true"> + <rule name="upper-limit"/> + <rule name="available-channels"/> + </field> + <field name="max-frame-size" type="uint16"> + <rule name="minimum"/> + <rule name="upper-limit"/> + <rule name="max-frame-size"/> + </field> + <field name="heartbeat" type="uint16"> + <rule name="permitted-range"/> + <rule name="no-heartbeat-min"/> + </field> + </control> + <control name="open" code="0x7"> + <implement role="server" handle="MUST"/> + <response name="open-ok"/> + <response name="redirect"/> + <field name="virtual-host" type="str8" required="true"> + <rule name="separation"/> + <rule name="security"/> + </field> + <field name="capabilities" type="str16-array"/> + <field name="insist" type="bit"> + <rule name="behavior"/> + </field> + </control> + <control name="open-ok" code="0x8"> + <implement role="client" handle="MUST"/> + <field name="known-hosts" type="amqp-host-array"/> + </control> + <control name="redirect" code="0x9"> + <rule name="usage"/> + <implement role="client" handle="MUST"/> + <field name="host" type="amqp-host-url" required="true"/> + <field name="known-hosts" type="amqp-host-array"/> + </control> + <control name="heartbeat" code="0xa"> + <implement role="client" handle="MAY"/> + <implement role="server" handle="MAY"/> + </control> + <control name="close" code="0xb"> + <implement role="client" handle="MUST"/> + <implement role="server" handle="MUST"/> + <response name="close-ok"/> + <field name="reply-code" type="close-code" required="true"/> + <field name="reply-text" type="str8"/> + </control> + <control name="close-ok" code="0xc"> + <rule name="reporting"/> + <implement role="client" handle="MUST"/> + <implement role="server" handle="MUST"/> + </control> + </class> + <class name="session" code="0x2"> + <rule name="attachment"/> + <role name="server" implement="MUST"/> + <role name="client" implement="MUST"/> + <role name="sender" implement="MUST"/> + <role name="receiver" implement="MUST"/> + <domain name="name" type="vbin16"/> + <domain name="detach-code" type="uint8"> + <enum> + <choice name="normal" value="0"/> + <choice name="session-busy" value="1"/> + <choice name="transport-busy" value="2"/> + <choice name="not-attached" value="3"/> + <choice name="unknown-ids" value="4"/> + </enum> + </domain> + <domain name="commands" type="sequence-set"/> + <struct name="header" size="1" pack="1"> + <field name="sync" type="bit"/> + </struct> + <struct name="command-fragment" size="0" pack="0"> + <field name="command-id" type="sequence-no" required="true"/> + <field name="byte-ranges" type="byte-ranges" required="true"/> + </struct> + <domain name="command-fragments" type="array"/> + <control name="attach" code="0x1"> + <rule name="one-transport-per-session"/> + <rule name="one-session-per-transport"/> + <rule name="idempotence"/> + <rule name="scoping"/> + <implement role="server" handle="MUST"/> + <implement role="client" handle="MAY"/> + <response name="attached"/> + <response name="detached"/> + <field name="name" type="name" required="true"/> + <field name="force" type="bit"/> + </control> + <control name="attached" code="0x2"> + <implement role="server" handle="MUST"/> + <implement role="client" handle="MUST"/> + <field name="name" type="name" required="true"/> + </control> + <control name="detach" code="0x3"> + <implement role="server" handle="MUST"/> + <implement role="client" handle="MUST"/> + <response name="detached"/> + <field name="name" type="name" required="true"/> + </control> + <control name="detached" code="0x4"> + <implement role="server" handle="MUST"/> + <implement role="client" handle="MUST"/> + <field name="name" type="name" required="true"/> + <field name="code" type="detach-code" required="true"/> + </control> + <control name="request-timeout" code="0x5"> + <rule name="maximum-granted-timeout"/> + <implement role="sender" handle="MUST"/> + <implement role="receiver" handle="MUST"/> + <response name="timeout"/> + <field name="timeout" type="uint32"/> + </control> + <control name="timeout" code="0x6"> + <implement role="sender" handle="MUST"/> + <implement role="receiver" handle="MUST"/> + <field name="timeout" type="uint32"/> + </control> + <control name="command-point" code="0x7"> + <rule name="newly-attached-transports"/> + <rule name="zero-offset"/> + <rule name="nonzero-offset"/> + <implement role="receiver" handle="MUST"/> + <field name="command-id" type="sequence-no" required="true"/> + <field name="command-offset" type="uint64" required="true"/> + </control> + <control name="expected" code="0x8"> + <rule name="include-next-command"/> + <rule name="commands-empty-means-new-session"/> + <rule name="no-overlaps"/> + <rule name="minimal-fragments"/> + <implement role="sender" handle="MUST"/> + <field name="commands" type="commands" required="true"/> + <field name="fragments" type="command-fragments"/> + </control> + <control name="confirmed" code="0x9"> + <rule name="durability"/> + <rule name="no-overlaps"/> + <rule name="minimal-fragments"/> + <implement role="sender" handle="MUST"/> + <field name="commands" type="commands"> + <rule name="exclude-known-complete"/> + </field> + <field name="fragments" type="command-fragments"/> + </control> + <control name="completed" code="0xa"> + <rule name="known-completed-reply"/> + <rule name="delayed-reply"/> + <rule name="merged-reply"/> + <implement role="sender" handle="MUST"/> + <field name="commands" type="commands"> + <rule name="completed-implies-confirmed"/> + <rule name="exclude-known-complete"/> + </field> + <field name="timely-reply" type="bit"/> + </control> + <control name="known-completed" code="0xb"> + <rule name="stateless"/> + <implement role="receiver" handle="MUST"/> + <field name="commands" type="commands"> + <rule name="known-completed-implies-known-confirmed"/> + </field> + </control> + <control name="flush" code="0xc"> + <implement role="receiver" handle="MUST"/> + <field name="expected" type="bit"/> + <field name="confirmed" type="bit"/> + <field name="completed" type="bit"/> + </control> + <control name="gap" code="0xd"> + <rule name="gap-confirmation-and-completion"/> + <rule name="aborted-commands"/> + <rule name="completed-or-confirmed-commands"/> + <implement role="receiver" handle="MUST"/> + <field name="commands" type="commands"/> + </control> + </class> + <class name="execution" code="0x3"> + <role name="server" implement="MUST"/> + <role name="client" implement="MUST"/> + <domain name="error-code" type="uint16"> + <enum> + <choice name="unauthorized-access" value="403"/> + <choice name="not-found" value="404"/> + <choice name="resource-locked" value="405"/> + <choice name="precondition-failed" value="406"/> + <choice name="resource-deleted" value="408"/> + <choice name="illegal-state" value="409"/> + <choice name="command-invalid" value="503"/> + <choice name="resource-limit-exceeded" value="506"/> + <choice name="not-allowed" value="530"/> + <choice name="illegal-argument" value="531"/> + <choice name="not-implemented" value="540"/> + <choice name="internal-error" value="541"/> + <choice name="invalid-argument" value="542"/> + </enum> + </domain> + <command name="sync" code="0x1"> + <implement role="server" handle="MUST"/> + <implement role="client" handle="MUST"/> + </command> + <command name="result" code="0x2"> + <implement role="server" handle="MUST"/> + <implement role="client" handle="MUST"/> + <field name="command-id" type="sequence-no" required="true"/> + <field name="value" type="struct32"/> + </command> + <command name="exception" code="0x3"> + <implement role="client" handle="MUST"/> + <implement role="server" handle="MUST"/> + <field name="error-code" type="error-code" required="true"/> + <field name="command-id" type="sequence-no"/> + <field name="class-code" type="uint8"/> + <field name="command-code" type="uint8"/> + <field name="field-index" type="uint8"/> + <field name="description" type="str16"/> + <field name="error-info" type="map"/> + </command> + </class> + <class name="message" code="0x4"> + <rule name="persistent-message"/> + <rule name="no-persistent-message-discard"/> + <rule name="throttling"/> + <rule name="non-persistent-message-overflow"/> + <rule name="non-persistent-message-discard"/> + <rule name="min-priority-levels"/> + <rule name="priority-level-implementation"/> + <rule name="priority-delivery"/> + <role name="server" implement="MUST"/> + <role name="client" implement="MUST"/> + <domain name="destination" type="str8"/> + <domain name="accept-mode" type="uint8"> + <enum> + <choice name="explicit" value="0"/> + <choice name="none" value="1"/> + </enum> + </domain> + <domain name="acquire-mode" type="uint8"> + <enum> + <choice name="pre-acquired" value="0"/> + <choice name="not-acquired" value="1"/> + </enum> + </domain> + <domain name="reject-code" type="uint16"> + <enum> + <choice name="unspecified" value="0"/> + <choice name="unroutable" value="1"/> + <choice name="immediate" value="2"/> + </enum> + </domain> + <domain name="resume-id" type="str16"/> + <domain name="delivery-mode" type="uint8"> + <enum> + <choice name="non-persistent" value="1"/> + <choice name="persistent" value="2"/> + </enum> + </domain> + <domain name="delivery-priority" type="uint8"> + <enum> + <choice name="lowest" value="0"/> + <choice name="lower" value="1"/> + <choice name="low" value="2"/> + <choice name="below-average" value="3"/> + <choice name="medium" value="4"/> + <choice name="above-average" value="5"/> + <choice name="high" value="6"/> + <choice name="higher" value="7"/> + <choice name="very-high" value="8"/> + <choice name="highest" value="9"/> + </enum> + </domain> + <struct name="delivery-properties" code="0x1" size="4" pack="2"> + <field name="discard-unroutable" type="bit"/> + <field name="immediate" type="bit"/> + <field name="redelivered" type="bit"> + <rule name="implementation"/> + <rule name="hinting"/> + </field> + <field name="priority" type="delivery-priority" required="true"/> + <field name="delivery-mode" type="delivery-mode" required="true"/> + <field name="ttl" type="uint64"> + <rule name="ttl-decrement"/> + </field> + <field name="timestamp" type="datetime"/> + <field name="expiration" type="datetime"/> + <field name="exchange" type="exchange.name"/> + <field name="routing-key" type="str8"/> + <field name="resume-id" type="resume-id"/> + <field name="resume-ttl" type="uint64"/> + </struct> + <struct name="fragment-properties" code="0x2" size="4" pack="2"> + <field name="first" type="bit" default="1"/> + <field name="last" type="bit" default="1"/> + <field name="fragment-size" type="uint64"/> + </struct> + <struct name="reply-to" size="2" pack="2"> + <field name="exchange" type="exchange.name"/> + <field name="routing-key" type="str8"/> + </struct> + <struct name="message-properties" code="0x3" size="4" pack="2"> + <field name="content-length" type="uint64"/> + <field name="message-id" type="uuid"> + <rule name="unique"/> + <rule name="immutable"/> + </field> + <field name="correlation-id" type="vbin16"/> + <field name="reply-to" type="reply-to"/> + <field name="content-type" type="str8"/> + <field name="content-encoding" type="str8"/> + <field name="user-id" type="vbin16"> + <rule name="authentication"/> + </field> + <field name="app-id" type="vbin16"/> + <field name="application-headers" type="map"/> + </struct> + <domain name="flow-mode" type="uint8"> + <enum> + <choice name="credit" value="0"/> + <choice name="window" value="1"/> + </enum> + </domain> + <domain name="credit-unit" type="uint8"> + <enum> + <choice name="message" value="0"/> + <choice name="byte" value="1"/> + </enum> + </domain> + <command name="transfer" code="0x1"> + <rule name="transactional-publish"/> + <implement role="server" handle="MUST"/> + <implement role="client" handle="MUST"/> + <field name="destination" type="destination"> + <rule name="blank-destination"/> + <exception name="nonexistent-exchange" error-code="not-found"/> + </field> + <field name="accept-mode" type="accept-mode" required="true"/> + <field name="acquire-mode" type="acquire-mode" required="true"/> + <segments> + <header> + <entry type="delivery-properties"/> + <entry type="fragment-properties"/> + <entry type="message-properties"/> + </header> + <body/> + </segments> + </command> + <command name="accept" code="0x2"> + <rule name="acquisition"/> + <implement role="server" handle="MUST"/> + <implement role="client" handle="MUST"/> + <field name="transfers" type="session.commands" required="true"/> + </command> + <command name="reject" code="0x3"> + <rule name="alternate-exchange"/> + <rule name="acquisition"/> + <implement role="server" handle="MUST"/> + <implement role="client" handle="MUST"/> + <field name="transfers" type="session.commands" required="true"/> + <field name="code" type="reject-code" required="true"/> + <field name="text" type="str8"/> + </command> + <command name="release" code="0x4"> + <rule name="ordering"/> + <implement role="server" handle="MUST"/> + <implement role="client" handle="MAY"/> + <field name="transfers" type="session.commands" required="true"/> + <field name="set-redelivered" type="bit"/> + </command> + <command name="acquire" code="0x5"> + <rule name="one-to-one"/> + <implement role="server" handle="MUST"/> + <field name="transfers" type="session.commands" required="true"/> + <result> + <struct name="acquired" code="0x4" size="4" pack="2"> + <field name="transfers" type="session.commands" required="true"/> + </struct> + </result> + </command> + <command name="resume" code="0x6"> + <implement role="server" handle="MUST"/> + <implement role="client" handle="MUST"/> + <field name="destination" type="destination"> + <exception name="destination-not-found" error-code="not-found"/> + </field> + <field name="resume-id" type="resume-id" required="true"> + <rule name="unknown-resume-id"/> + </field> + <result> + <struct name="message-resume-result" code="0x5" size="4" pack="2"> + <field name="offset" type="uint64"/> + </struct> + </result> + </command> + <command name="subscribe" code="0x7"> + <rule name="simultaneous-subscriptions"/> + <rule name="default-flow-mode"/> + <exception name="queue-deletion" error-code="resource-deleted"/> + <exception name="queue-not-found" error-code="not-found"/> + <rule name="initial-credit"/> + <implement role="server" handle="MUST"/> + <field name="queue" type="queue.name" required="true"/> + <field name="destination" type="destination"> + <exception name="unique-subscriber-destination" error-code="not-allowed"/> + </field> + <field name="accept-mode" type="accept-mode" required="true"/> + <field name="acquire-mode" type="acquire-mode" required="true"/> + <field name="exclusive" type="bit"> + <exception name="in-use" error-code="resource-locked"/> + </field> + <field name="resume-id" type="resume-id"/> + <field name="resume-ttl" type="uint64"/> + <field name="arguments" type="map"/> + </command> + <command name="cancel" code="0x8"> + <rule name="post-cancel-transfer-resolution"/> + <implement role="server" handle="MUST"/> + <field name="destination" type="destination" required="true"> + <exception name="subscription-not-found" error-code="not-found"/> + </field> + </command> + <command name="set-flow-mode" code="0x9"> + <rule name="byte-accounting"/> + <rule name="mode-switching"/> + <rule name="default-flow-mode"/> + <implement role="server" handle="MUST"/> + <implement role="client" handle="MUST"/> + <field name="destination" type="destination"/> + <field name="flow-mode" type="flow-mode" required="true"/> + </command> + <command name="flow" code="0xa"> + <implement role="server" handle="MUST"/> + <implement role="client" handle="MUST"/> + <field name="destination" type="destination"/> + <field name="unit" type="credit-unit" required="true"/> + <field name="value" type="uint32"/> + </command> + <command name="flush" code="0xb"> + <implement role="server" handle="MUST"/> + <field name="destination" type="destination"/> + </command> + <command name="stop" code="0xc"> + <implement role="server" handle="MUST"/> + <implement role="client" handle="MUST"/> + <field name="destination" type="destination"/> + </command> + </class> + <class name="tx" code="0x5"> + <rule name="duplicate-tracking"/> + <role name="server" implement="SHOULD"/> + <command name="select" code="0x1"> + <exception name="exactly-once" error-code="illegal-state"/> + <exception name="no-dtx" error-code="illegal-state"/> + <exception name="explicit-accepts" error-code="not-allowed"/> + <implement role="server" handle="MUST"/> + </command> + <command name="commit" code="0x2"> + <exception name="select-required" error-code="illegal-state"/> + <implement role="server" handle="MUST"/> + </command> + <command name="rollback" code="0x3"> + <exception name="select-required" error-code="illegal-state"/> + <implement role="server" handle="MUST"/> + </command> + </class> + <class name="dtx" code="0x6"> + <rule name="transactionality"/> + <role name="server" implement="MAY"/> + <role name="client" implement="MAY"/> + <domain name="xa-status" type="uint16"> + <enum> + <choice name="xa-ok" value="0"/> + <choice name="xa-rbrollback" value="1"/> + <choice name="xa-rbtimeout" value="2"/> + <choice name="xa-heurhaz" value="3"/> + <choice name="xa-heurcom" value="4"/> + <choice name="xa-heurrb" value="5"/> + <choice name="xa-heurmix" value="6"/> + <choice name="xa-rdonly" value="7"/> + </enum> + </domain> + <struct name="xa-result" code="0x1" size="4" pack="2"> + <field name="status" type="xa-status" required="true"/> + </struct> + <struct name="xid" code="0x4" size="4" pack="2"> + <field name="format" type="uint32" required="true"/> + <field name="global-id" type="vbin8" required="true"/> + <field name="branch-id" type="vbin8" required="true"/> + </struct> + <command name="select" code="0x1"> + <implement role="server" handle="MAY"/> + </command> + <command name="start" code="0x2"> + <exception name="illegal-state" error-code="illegal-state"/> + <exception name="already-known" error-code="not-allowed"/> + <exception name="join-and-resume" error-code="not-allowed"/> + <implement role="server" handle="MAY"/> + <field name="xid" type="xid" required="true"> + <exception name="unknown-xid" error-code="not-allowed"/> + </field> + <field name="join" type="bit"> + <exception name="unsupported" error-code="not-implemented"/> + </field> + <field name="resume" type="bit"/> + <result type="xa-result"/> + </command> + <command name="end" code="0x3"> + <exception name="illegal-state" error-code="illegal-state"/> + <exception name="suspend-and-fail" error-code="not-allowed"/> + <rule name="success"/> + <rule name="session-closed"/> + <implement role="server" handle="MAY"/> + <field name="xid" type="xid" required="true"> + <exception name="not-associated" error-code="illegal-state"/> + </field> + <field name="fail" type="bit"> + <rule name="failure"/> + </field> + <field name="suspend" type="bit"> + <rule name="resume"/> + </field> + <result type="xa-result"/> + </command> + <command name="commit" code="0x4"> + <exception name="illegal-state" error-code="illegal-state"/> + <implement role="server" handle="MAY"/> + <field name="xid" type="xid" required="true"> + <exception name="unknown-xid" error-code="not-found"/> + <exception name="not-disassociated" error-code="illegal-state"/> + </field> + <field name="one-phase" type="bit"> + <exception name="one-phase" error-code="illegal-state"/> + <exception name="two-phase" error-code="illegal-state"/> + </field> + <result type="xa-result"/> + </command> + <command name="forget" code="0x5"> + <exception name="illegal-state" error-code="illegal-state"/> + <implement role="server" handle="MAY"/> + <field name="xid" type="xid" required="true"> + <exception name="unknown-xid" error-code="not-found"/> + <exception name="not-disassociated" error-code="illegal-state"/> + </field> + </command> + <command name="get-timeout" code="0x6"> + <implement role="server" handle="MAY"/> + <field name="xid" type="xid" required="true"> + <exception name="unknown-xid" error-code="not-found"/> + </field> + <result> + <struct name="get-timeout-result" code="0x2" size="4" pack="2"> + <field name="timeout" type="uint32" required="true"/> + </struct> + </result> + </command> + <command name="prepare" code="0x7"> + <exception name="illegal-state" error-code="illegal-state"/> + <rule name="obligation-1"/> + <rule name="obligation-2"/> + <implement role="server" handle="MAY"/> + <field name="xid" type="xid" required="true"> + <exception name="unknown-xid" error-code="not-found"/> + <exception name="not-disassociated" error-code="illegal-state"/> + </field> + <result type="xa-result"/> + </command> + <command name="recover" code="0x8"> + <implement role="server" handle="MAY"/> + <result> + <struct name="recover-result" code="0x3" size="4" pack="2"> + <field name="in-doubt" type="array" required="true"/> + </struct> + </result> + </command> + <command name="rollback" code="0x9"> + <exception name="illegal-state" error-code="illegal-state"/> + <implement role="server" handle="MAY"/> + <field name="xid" type="xid" required="true"> + <exception name="unknown-xid" error-code="not-found"/> + <exception name="not-disassociated" error-code="illegal-state"/> + </field> + <result type="xa-result"/> + </command> + <command name="set-timeout" code="0xa"> + <rule name="effective"/> + <rule name="reset"/> + <implement role="server" handle="MAY"/> + <field name="xid" type="xid" required="true"> + <exception name="unknown-xid" error-code="not-found"/> + </field> + <field name="timeout" type="uint32" required="true"/> + </command> + </class> + <class name="exchange" code="0x7"> + <rule name="required-types"/> + <rule name="recommended-types"/> + <rule name="required-instances"/> + <rule name="default-exchange"/> + <rule name="default-access"/> + <rule name="extensions"/> + <role name="server" implement="MUST"/> + <role name="client" implement="MUST"/> + <domain name="name" type="str8"/> + <command name="declare" code="0x1"> + <rule name="minimum"/> + <implement role="server" handle="MUST"/> + <field name="exchange" type="name" required="true"> + <exception name="reserved-names" error-code="not-allowed"/> + <exception name="exchange-name-required" error-code="invalid-argument"/> + </field> + <field name="type" type="str8" required="true"> + <exception name="typed" error-code="not-allowed"/> + <exception name="exchange-type-not-found" error-code="not-found"/> + </field> + <field name="alternate-exchange" type="name"> + <rule name="empty-name"/> + <exception name="pre-existing-exchange" error-code="not-allowed"/> + <rule name="double-failure"/> + </field> + <field name="passive" type="bit"> + <exception name="not-found" error-code="not-found"/> + </field> + <field name="durable" type="bit"> + <rule name="support"/> + <rule name="sticky"/> + </field> + <field name="auto-delete" type="bit"> + <rule name="sticky"/> + </field> + <field name="arguments" type="map"> + <exception name="unknown-argument" error-code="not-implemented"/> + </field> + </command> + <command name="delete" code="0x2"> + <implement role="server" handle="MUST"/> + <field name="exchange" type="name" required="true"> + <exception name="exists" error-code="not-found"/> + <exception name="exchange-name-required" error-code="invalid-argument"/> + <exception name="used-as-alternate" error-code="not-allowed"/> + </field> + <field name="if-unused" type="bit"> + <exception name="exchange-in-use" error-code="precondition-failed"/> + </field> + </command> + <command name="query" code="0x3"> + <implement role="server" handle="MUST"/> + <field name="name" type="str8"/> + <result> + <struct name="exchange-query-result" code="0x1" size="4" pack="2"> + <field name="type" type="str8"/> + <field name="durable" type="bit"/> + <field name="not-found" type="bit"/> + <field name="arguments" type="map"/> + </struct> + </result> + </command> + <command name="bind" code="0x4"> + <rule name="duplicates"/> + <rule name="durable-exchange"/> + <rule name="binding-count"/> + <rule name="multiple-bindings"/> + <implement role="server" handle="MUST"/> + <field name="queue" type="queue.name" required="true"> + <exception name="empty-queue" error-code="invalid-argument"/> + <exception name="queue-existence" error-code="not-found"/> + </field> + <field name="exchange" type="name" required="true"> + <exception name="exchange-existence" error-code="not-found"/> + <exception name="exchange-name-required" error-code="invalid-argument"/> + </field> + <field name="binding-key" type="str8" required="true"/> + <field name="arguments" type="map"> + <exception name="unknown-argument" error-code="not-implemented"/> + </field> + </command> + <command name="unbind" code="0x5"> + <implement role="server" handle="MUST"/> + <field name="queue" type="queue.name" required="true"> + <exception name="non-existent-queue" error-code="not-found"/> + </field> + <field name="exchange" type="name" required="true"> + <exception name="non-existent-exchange" error-code="not-found"/> + <exception name="exchange-name-required" error-code="invalid-argument"/> + </field> + <field name="binding-key" type="str8" required="true"> + <exception name="non-existent-binding-key" error-code="not-found"/> + </field> + </command> + <command name="bound" code="0x6"> + <implement role="server" handle="MUST"/> + <field name="exchange" type="str8"/> + <field name="queue" type="str8" required="true"/> + <field name="binding-key" type="str8"/> + <field name="arguments" type="map"/> + <result> + <struct name="exchange-bound-result" code="0x2" size="4" pack="2"> + <field name="exchange-not-found" type="bit"/> + <field name="queue-not-found" type="bit"/> + <field name="queue-not-matched" type="bit"/> + <field name="key-not-matched" type="bit"/> + <field name="args-not-matched" type="bit"/> + </struct> + </result> + </command> + </class> + <class name="queue" code="0x8"> + <rule name="any-content"/> + <role name="server" implement="MUST"/> + <role name="client" implement="MUST"/> + <domain name="name" type="str8"/> + <command name="declare" code="0x1"> + <rule name="default-binding"/> + <rule name="minimum-queues"/> + <implement role="server" handle="MUST"/> + <field name="queue" type="name" required="true"> + <exception name="reserved-prefix" error-code="not-allowed"/> + </field> + <field name="alternate-exchange" type="exchange.name"> + <exception name="pre-existing-exchange" error-code="not-allowed"/> + <exception name="unknown-exchange" error-code="not-found"/> + </field> + <field name="passive" type="bit"> + <exception name="passive" error-code="not-found"/> + </field> + <field name="durable" type="bit"> + <rule name="persistence"/> + <rule name="types"/> + <rule name="pre-existence"/> + </field> + <field name="exclusive" type="bit"> + <rule name="types"/> + <exception name="in-use" error-code="resource-locked"/> + </field> + <field name="auto-delete" type="bit"> + <rule name="pre-existence"/> + </field> + <field name="arguments" type="map"> + <exception name="unknown-argument" error-code="not-implemented"/> + </field> + </command> + <command name="delete" code="0x2"> + <implement role="server" handle="MUST"/> + <field name="queue" type="name" required="true"> + <exception name="empty-name" error-code="invalid-argument"/> + <exception name="queue-exists" error-code="not-found"/> + </field> + <field name="if-unused" type="bit"> + <exception name="if-unused-flag" error-code="precondition-failed"/> + </field> + <field name="if-empty" type="bit"> + <exception name="not-empty" error-code="precondition-failed"/> + </field> + </command> + <command name="purge" code="0x3"> + <rule name="empty"/> + <rule name="pending-messages"/> + <rule name="purge-recovery"/> + <implement role="server" handle="MUST"/> + <field name="queue" type="name" required="true"> + <exception name="empty-name" error-code="invalid-argument"/> + <exception name="queue-exists" error-code="not-found"/> + </field> + </command> + <command name="query" code="0x4"> + <implement role="server" handle="MUST"/> + <field name="queue" type="name" required="true"/> + <result> + <struct name="queue-query-result" code="0x1" size="4" pack="2"> + <field name="queue" type="name" required="true"/> + <field name="alternate-exchange" type="exchange.name"/> + <field name="durable" type="bit"/> + <field name="exclusive" type="bit"/> + <field name="auto-delete" type="bit"/> + <field name="arguments" type="map"/> + <field name="message-count" type="uint32" required="true"/> + <field name="subscriber-count" type="uint32" required="true"/> + </struct> + </result> + </command> + </class> + <class name="file" code="0x9"> + <rule name="reliable-storage"/> + <rule name="no-discard"/> + <rule name="priority-levels"/> + <rule name="acknowledgement-support"/> + <role name="server" implement="MAY"/> + <role name="client" implement="MAY"/> + <struct name="file-properties" code="0x1" size="4" pack="2"> + <field name="content-type" type="str8"/> + <field name="content-encoding" type="str8"/> + <field name="headers" type="map"/> + <field name="priority" type="uint8"/> + <field name="reply-to" type="str8"/> + <field name="message-id" type="str8"/> + <field name="filename" type="str8"/> + <field name="timestamp" type="datetime"/> + <field name="cluster-id" type="str8"/> + </struct> + <domain name="return-code" type="uint16"> + <enum> + <choice name="content-too-large" value="311"/> + <choice name="no-route" value="312"/> + <choice name="no-consumers" value="313"/> + </enum> + </domain> + <command name="qos" code="0x1"> + <implement role="server" handle="MUST"/> + <response name="qos-ok"/> + <field name="prefetch-size" type="uint32"/> + <field name="prefetch-count" type="uint16"> + <rule name="prefetch-discretion"/> + </field> + <field name="global" type="bit"/> + </command> + <command name="qos-ok" code="0x2"> + <implement role="client" handle="MUST"/> + </command> + <command name="consume" code="0x3"> + <rule name="min-consumers"/> + <implement role="server" handle="MUST"/> + <response name="consume-ok"/> + <field name="queue" type="queue.name"> + <exception name="queue-exists-if-empty" error-code="not-allowed"/> + </field> + <field name="consumer-tag" type="str8"> + <exception name="not-existing-consumer" error-code="not-allowed"/> + <exception name="not-empty-consumer-tag" error-code="not-allowed"/> + </field> + <field name="no-local" type="bit"/> + <field name="no-ack" type="bit"/> + <field name="exclusive" type="bit"> + <exception name="in-use" error-code="resource-locked"/> + </field> + <field name="nowait" type="bit"/> + <field name="arguments" type="map"/> + </command> + <command name="consume-ok" code="0x4"> + <implement role="client" handle="MUST"/> + <field name="consumer-tag" type="str8"/> + </command> + <command name="cancel" code="0x5"> + <implement role="server" handle="MUST"/> + <field name="consumer-tag" type="str8"/> + </command> + <command name="open" code="0x6"> + <implement role="server" handle="MUST"/> + <implement role="client" handle="MUST"/> + <response name="open-ok"/> + <field name="identifier" type="str8"/> + <field name="content-size" type="uint64"> + <rule name="content-size"/> + </field> + </command> + <command name="open-ok" code="0x7"> + <implement role="server" handle="MUST"/> + <implement role="client" handle="MUST"/> + <response name="stage"/> + <field name="staged-size" type="uint64"> + <rule name="behavior"/> + <rule name="staging"/> + </field> + </command> + <command name="stage" code="0x8"> + <implement role="server" handle="MUST"/> + <implement role="client" handle="MUST"/> + <segments> + <header required="true"> + <entry type="file-properties"/> + </header> + <body/> + </segments> + </command> + <command name="publish" code="0x9"> + <implement role="server" handle="MUST"/> + <field name="exchange" type="exchange.name"> + <rule name="default"/> + <exception name="refusal" error-code="not-implemented"/> + </field> + <field name="routing-key" type="str8"/> + <field name="mandatory" type="bit"> + <rule name="implementation"/> + </field> + <field name="immediate" type="bit"> + <rule name="implementation"/> + </field> + <field name="identifier" type="str8"/> + </command> + <command name="return" code="0xa"> + <implement role="client" handle="MUST"/> + <field name="reply-code" type="return-code"/> + <field name="reply-text" type="str8"/> + <field name="exchange" type="exchange.name"/> + <field name="routing-key" type="str8"/> + <segments> + <header required="true"> + <entry type="file-properties"/> + </header> + <body/> + </segments> + </command> + <command name="deliver" code="0xb"> + <rule name="redelivery-tracking"/> + <implement role="client" handle="MUST"/> + <field name="consumer-tag" type="str8"/> + <field name="delivery-tag" type="uint64"> + <rule name="non-zero"/> + </field> + <field name="redelivered" type="bit"/> + <field name="exchange" type="exchange.name"/> + <field name="routing-key" type="str8"/> + <field name="identifier" type="str8"/> + </command> + <command name="ack" code="0xc"> + <implement role="server" handle="MUST"/> + <field name="delivery-tag" type="uint64"> + <rule name="session-local"/> + </field> + <field name="multiple" type="bit"> + <rule name="validation"/> + </field> + </command> + <command name="reject" code="0xd"> + <rule name="server-interpretation"/> + <rule name="not-selection"/> + <implement role="server" handle="MUST"/> + <field name="delivery-tag" type="uint64"> + <rule name="session-local"/> + </field> + <field name="requeue" type="bit"> + <rule name="requeue-strategy"/> + </field> + </command> + </class> + <class name="stream" code="0xa"> + <rule name="overflow-discard"/> + <rule name="priority-levels"/> + <rule name="acknowledgement-support"/> + <role name="server" implement="MAY"/> + <role name="client" implement="MAY"/> + <struct name="stream-properties" code="0x1" size="4" pack="2"> + <field name="content-type" type="str8"/> + <field name="content-encoding" type="str8"/> + <field name="headers" type="map"/> + <field name="priority" type="uint8"/> + <field name="timestamp" type="datetime"/> + </struct> + <domain name="return-code" type="uint16"> + <enum> + <choice name="content-too-large" value="311"/> + <choice name="no-route" value="312"/> + <choice name="no-consumers" value="313"/> + </enum> + </domain> + <command name="qos" code="0x1"> + <implement role="server" handle="MUST"/> + <response name="qos-ok"/> + <field name="prefetch-size" type="uint32"/> + <field name="prefetch-count" type="uint16"/> + <field name="consume-rate" type="uint32"> + <rule name="ignore-prefetch"/> + <rule name="drop-by-priority"/> + </field> + <field name="global" type="bit"/> + </command> + <command name="qos-ok" code="0x2"> + <implement role="client" handle="MUST"/> + </command> + <command name="consume" code="0x3"> + <rule name="min-consumers"/> + <rule name="priority-based-delivery"/> + <implement role="server" handle="MUST"/> + <response name="consume-ok"/> + <field name="queue" type="queue.name"> + <exception name="queue-exists-if-empty" error-code="not-allowed"/> + </field> + <field name="consumer-tag" type="str8"> + <exception name="not-existing-consumer" error-code="not-allowed"/> + <exception name="not-empty-consumer-tag" error-code="not-allowed"/> + </field> + <field name="no-local" type="bit"/> + <field name="exclusive" type="bit"> + <exception name="in-use" error-code="resource-locked"/> + </field> + <field name="nowait" type="bit"/> + <field name="arguments" type="map"/> + </command> + <command name="consume-ok" code="0x4"> + <implement role="client" handle="MUST"/> + <field name="consumer-tag" type="str8"/> + </command> + <command name="cancel" code="0x5"> + <implement role="server" handle="MUST"/> + <field name="consumer-tag" type="str8"/> + </command> + <command name="publish" code="0x6"> + <implement role="server" handle="MUST"/> + <field name="exchange" type="exchange.name"> + <rule name="default"/> + <exception name="refusal" error-code="not-implemented"/> + </field> + <field name="routing-key" type="str8"/> + <field name="mandatory" type="bit"> + <rule name="implementation"/> + </field> + <field name="immediate" type="bit"> + <rule name="implementation"/> + </field> + <segments> + <header required="true"> + <entry type="stream-properties"/> + </header> + <body/> + </segments> + </command> + <command name="return" code="0x7"> + <implement role="client" handle="MUST"/> + <field name="reply-code" type="return-code"/> + <field name="reply-text" type="str8"/> + <field name="exchange" type="exchange.name"/> + <field name="routing-key" type="str8"/> + <segments> + <header required="true"> + <entry type="stream-properties"/> + </header> + <body/> + </segments> + </command> + <command name="deliver" code="0x8"> + <implement role="client" handle="MUST"/> + <field name="consumer-tag" type="str8"/> + <field name="delivery-tag" type="uint64"> + <rule name="session-local"/> + </field> + <field name="exchange" type="exchange.name"/> + <field name="queue" type="queue.name" required="true"/> + <segments> + <header required="true"> + <entry type="stream-properties"/> + </header> + <body/> + </segments> + </command> + </class> +</amqp> diff --git a/qpid/specs/amqp.0-10.stripped.xml b/qpid/specs/amqp.0-10.stripped.xml new file mode 100644 index 0000000000..16c89d82db --- /dev/null +++ b/qpid/specs/amqp.0-10.stripped.xml @@ -0,0 +1,1200 @@ +<?xml version="1.0"?> + +<!-- +Copyright Bank of America, N.A., Barclays Bank PLC, Cisco Systems, Credit +Suisse, Deutsche Boerse, Envoy Technologies Inc., Goldman Sachs, HCL +Technologies Ltd, IIT Software GmbH, iMatix Corporation, INETCO Systems Limited, +Informatica Corporation, JPMorgan Chase & Co., Kaazing Corporation, N.A, +Microsoft Corporation, my-Channels, Novell, Progress Software, Red Hat Inc., +Software AG, Solace Systems Inc., StormMQ Ltd., Tervela Inc., TWIST Process +Innovations Ltd, VMware, Inc., and WS02 Inc. 2006-2011. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright +notice, this list of conditions and the following disclaimer in the +documentation and/or other materials provided with the distribution. +3. The name of the author may not be used to endorse or promote products +derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--> + +<amqp major="0" xmlns="http://www.amqp.org/schema/amqp.xsd" port="5672" minor="10"> + <type name="bin8" code="0x00" fixed-width="1"/> + <type name="int8" code="0x01" fixed-width="1"/> + <type name="uint8" code="0x02" fixed-width="1"/> + <type name="char" code="0x04" fixed-width="1"/> + <type name="boolean" code="0x08" fixed-width="1"/> + <type name="bin16" code="0x10" fixed-width="2"/> + <type name="int16" code="0x11" fixed-width="2"/> + <type name="uint16" code="0x12" fixed-width="2"/> + <type name="bin32" code="0x20" fixed-width="4"/> + <type name="int32" code="0x21" fixed-width="4"/> + <type name="uint32" code="0x22" fixed-width="4"/> + <type name="float" code="0x23" fixed-width="4"/> + <type name="char-utf32" code="0x27" fixed-width="4"/> + <type name="sequence-no" fixed-width="4"/> + <type name="bin64" code="0x30" fixed-width="8"/> + <type name="int64" code="0x31" fixed-width="8"/> + <type name="uint64" code="0x32" fixed-width="8"/> + <type name="double" code="0x33" fixed-width="8"/> + <type name="datetime" code="0x38" fixed-width="8"/> + <type name="bin128" code="0x40" fixed-width="16"/> + <type name="uuid" code="0x48" fixed-width="16"/> + <type name="bin256" code="0x50" fixed-width="32"/> + <type name="bin512" code="0x60" fixed-width="64"/> + <type name="bin1024" code="0x70" fixed-width="128"/> + <type name="vbin8" code="0x80" variable-width="1"/> + <type name="str8-latin" code="0x84" variable-width="1"/> + <type name="str8" code="0x85" variable-width="1"/> + <type name="str8-utf16" code="0x86" variable-width="1"/> + <type name="vbin16" code="0x90" variable-width="2"/> + <type name="str16-latin" code="0x94" variable-width="2"/> + <type name="str16" code="0x95" variable-width="2"/> + <type name="str16-utf16" code="0x96" variable-width="2"/> + <type name="byte-ranges" variable-width="2"/> + <type name="sequence-set" variable-width="2"/> + <type name="vbin32" code="0xa0" variable-width="4"/> + <type name="map" code="0xa8" variable-width="4"/> + <type name="list" code="0xa9" variable-width="4"/> + <type name="array" code="0xaa" variable-width="4"/> + <type name="struct32" code="0xab" variable-width="4"/> + <type name="bin40" code="0xc0" fixed-width="5"/> + <type name="dec32" code="0xc8" fixed-width="5"/> + <type name="bin72" code="0xd0" fixed-width="9"/> + <type name="dec64" code="0xd8" fixed-width="9"/> + <type name="void" code="0xf0" fixed-width="0"/> + <type name="bit" code="0xf1" fixed-width="0"/> + <constant name="MIN-MAX-FRAME-SIZE" value="4096"/> + <domain name="segment-type" type="uint8"> + <enum> + <choice name="control" value="0"/> + <choice name="command" value="1"/> + <choice name="header" value="2"/> + <choice name="body" value="3"/> + </enum> + </domain> + <domain name="track" type="uint8"> + <enum> + <choice name="control" value="0"/> + <choice name="command" value="1"/> + </enum> + </domain> + <domain name="str16-array" type="array"/> + <class name="connection" code="0x1"> + <role name="server" implement="MUST"/> + <role name="client" implement="MUST"/> + <domain name="close-code" type="uint16"> + <enum> + <choice name="normal" value="200"/> + <choice name="connection-forced" value="320"/> + <choice name="invalid-path" value="402"/> + <choice name="framing-error" value="501"/> + </enum> + </domain> + <domain name="amqp-host-url" type="str16"/> + <domain name="amqp-host-array" type="array"/> + <control name="start" code="0x1"> + <rule name="protocol-name"/> + <rule name="client-support"/> + <implement role="client" handle="MUST"/> + <response name="start-ok"/> + <field name="server-properties" type="map"> + <rule name="required-fields"/> + </field> + <field name="mechanisms" type="str16-array" required="true"/> + <field name="locales" type="str16-array" required="true"> + <rule name="required-support"/> + </field> + </control> + <control name="start-ok" code="0x2"> + <implement role="server" handle="MUST"/> + <field name="client-properties" type="map"> + <rule name="required-fields"/> + </field> + <field name="mechanism" type="str8" required="true"> + <rule name="security"/> + <rule name="validity"/> + </field> + <field name="response" type="vbin32" required="true"/> + <field name="locale" type="str8" required="true"/> + </control> + <control name="secure" code="0x3"> + <implement role="client" handle="MUST"/> + <response name="secure-ok"/> + <field name="challenge" type="vbin32" required="true"/> + </control> + <control name="secure-ok" code="0x4"> + <implement role="server" handle="MUST"/> + <field name="response" type="vbin32" required="true"/> + </control> + <control name="tune" code="0x5"> + <implement role="client" handle="MUST"/> + <response name="tune-ok"/> + <field name="channel-max" type="uint16"/> + <field name="max-frame-size" type="uint16"> + <rule name="minimum"/> + </field> + <field name="heartbeat-min" type="uint16"/> + <field name="heartbeat-max" type="uint16"> + <rule name="permitted-range"/> + <rule name="no-heartbeat-min"/> + </field> + </control> + <control name="tune-ok" code="0x6"> + <implement role="server" handle="MUST"/> + <field name="channel-max" type="uint16" required="true"> + <rule name="upper-limit"/> + <rule name="available-channels"/> + </field> + <field name="max-frame-size" type="uint16"> + <rule name="minimum"/> + <rule name="upper-limit"/> + <rule name="max-frame-size"/> + </field> + <field name="heartbeat" type="uint16"> + <rule name="permitted-range"/> + <rule name="no-heartbeat-min"/> + </field> + </control> + <control name="open" code="0x7"> + <implement role="server" handle="MUST"/> + <response name="open-ok"/> + <response name="redirect"/> + <field name="virtual-host" type="str8" required="true"> + <rule name="separation"/> + <rule name="security"/> + </field> + <field name="capabilities" type="str16-array"/> + <field name="insist" type="bit"> + <rule name="behavior"/> + </field> + </control> + <control name="open-ok" code="0x8"> + <implement role="client" handle="MUST"/> + <field name="known-hosts" type="amqp-host-array"/> + </control> + <control name="redirect" code="0x9"> + <rule name="usage"/> + <implement role="client" handle="MUST"/> + <field name="host" type="amqp-host-url" required="true"/> + <field name="known-hosts" type="amqp-host-array"/> + </control> + <control name="heartbeat" code="0xa"/> + <control name="close" code="0xb"> + <implement role="client" handle="MUST"/> + <implement role="server" handle="MUST"/> + <response name="close-ok"/> + <field name="reply-code" type="close-code" required="true"/> + <field name="reply-text" type="str8"/> + </control> + <control name="close-ok" code="0xc"> + <rule name="reporting"/> + <implement role="client" handle="MUST"/> + <implement role="server" handle="MUST"/> + </control> + </class> + <class name="session" code="0x2"> + <rule name="attachment"/> + <role name="server" implement="MUST"/> + <role name="client" implement="MUST"/> + <role name="sender" implement="MUST"/> + <role name="receiver" implement="MUST"/> + <domain name="name" type="vbin16"/> + <domain name="detach-code" type="uint8"> + <enum> + <choice name="normal" value="0"/> + <choice name="session-busy" value="1"/> + <choice name="transport-busy" value="2"/> + <choice name="not-attached" value="3"/> + <choice name="unknown-ids" value="4"/> + </enum> + </domain> + <domain name="commands" type="sequence-set"/> + <struct name="header" size="1" pack="1"> + <field name="sync" type="bit"/> + </struct> + <struct name="command-fragment" size="0" pack="0"> + <field name="command-id" type="sequence-no" required="true"/> + <field name="byte-ranges" type="byte-ranges" required="true"/> + </struct> + <domain name="command-fragments" type="array"/> + <control name="attach" code="0x1"> + <rule name="one-transport-per-session"/> + <rule name="one-session-per-transport"/> + <rule name="idempotence"/> + <rule name="scoping"/> + <implement role="server" handle="MUST"/> + <implement role="client" handle="MAY"/> + <response name="attached"/> + <response name="detached"/> + <field name="name" type="name" required="true"/> + <field name="force" type="bit"/> + </control> + <control name="attached" code="0x2"> + <implement role="server" handle="MUST"/> + <implement role="client" handle="MUST"/> + <field name="name" type="name" required="true"/> + </control> + <control name="detach" code="0x3"> + <implement role="server" handle="MUST"/> + <implement role="client" handle="MUST"/> + <response name="detached"/> + <field name="name" type="name" required="true"/> + </control> + <control name="detached" code="0x4"> + <implement role="server" handle="MUST"/> + <implement role="client" handle="MUST"/> + <field name="name" type="name" required="true"/> + <field name="code" type="detach-code" required="true"/> + </control> + <control name="request-timeout" code="0x5"> + <rule name="maximum-granted-timeout"/> + <implement role="sender" handle="MUST"/> + <implement role="receiver" handle="MUST"/> + <response name="timeout"/> + <field name="timeout" type="uint32"/> + </control> + <control name="timeout" code="0x6"> + <implement role="sender" handle="MUST"/> + <implement role="receiver" handle="MUST"/> + <field name="timeout" type="uint32"/> + </control> + <control name="command-point" code="0x7"> + <rule name="newly-attached-transports"/> + <rule name="zero-offset"/> + <rule name="nonzero-offset"/> + <implement role="receiver" handle="MUST"/> + <field name="command-id" type="sequence-no" required="true"/> + <field name="command-offset" type="uint64" required="true"/> + </control> + <control name="expected" code="0x8"> + <rule name="include-next-command"/> + <rule name="commands-empty-means-new-session"/> + <rule name="no-overlaps"/> + <rule name="minimal-fragments"/> + <implement role="sender" handle="MUST"/> + <field name="commands" type="commands" required="true"/> + <field name="fragments" type="command-fragments"/> + </control> + <control name="confirmed" code="0x9"> + <rule name="durability"/> + <rule name="no-overlaps"/> + <rule name="minimal-fragments"/> + <implement role="sender" handle="MUST"/> + <field name="commands" type="commands"> + <rule name="exclude-known-complete"/> + </field> + <field name="fragments" type="command-fragments"/> + </control> + <control name="completed" code="0xa"> + <rule name="known-completed-reply"/> + <rule name="delayed-reply"/> + <rule name="merged-reply"/> + <implement role="sender" handle="MUST"/> + <field name="commands" type="commands"> + <rule name="completed-implies-confirmed"/> + <rule name="exclude-known-complete"/> + </field> + <field name="timely-reply" type="bit"/> + </control> + <control name="known-completed" code="0xb"> + <rule name="stateless"/> + <implement role="receiver" handle="MUST"/> + <field name="commands" type="commands"> + <rule name="known-completed-implies-known-confirmed"/> + </field> + </control> + <control name="flush" code="0xc"> + <implement role="receiver" handle="MUST"/> + <field name="expected" type="bit"/> + <field name="confirmed" type="bit"/> + <field name="completed" type="bit"/> + </control> + <control name="gap" code="0xd"> + <rule name="gap-confirmation-and-completion"/> + <rule name="aborted-commands"/> + <rule name="completed-or-confirmed-commands"/> + <implement role="receiver" handle="MUST"/> + <field name="commands" type="commands"/> + </control> + </class> + <class name="execution" code="0x3"> + <role name="server" implement="MUST"/> + <role name="client" implement="MUST"/> + <domain name="error-code" type="uint16"> + <enum> + <choice name="unauthorized-access" value="403"/> + <choice name="not-found" value="404"/> + <choice name="resource-locked" value="405"/> + <choice name="precondition-failed" value="406"/> + <choice name="resource-deleted" value="408"/> + <choice name="illegal-state" value="409"/> + <choice name="command-invalid" value="503"/> + <choice name="resource-limit-exceeded" value="506"/> + <choice name="not-allowed" value="530"/> + <choice name="illegal-argument" value="531"/> + <choice name="not-implemented" value="540"/> + <choice name="internal-error" value="541"/> + <choice name="invalid-argument" value="542"/> + </enum> + </domain> + <command name="sync" code="0x1"> + <implement role="server" handle="MUST"/> + <implement role="client" handle="MUST"/> + </command> + <command name="result" code="0x2"> + <implement role="server" handle="MUST"/> + <implement role="client" handle="MUST"/> + <field name="command-id" type="sequence-no" required="true"/> + <field name="value" type="struct32"/> + </command> + <command name="exception" code="0x3"> + <implement role="client" handle="MUST"/> + <implement role="server" handle="MUST"/> + <field name="error-code" type="error-code" required="true"/> + <field name="command-id" type="sequence-no"/> + <field name="class-code" type="uint8"/> + <field name="command-code" type="uint8"/> + <field name="field-index" type="uint8"/> + <field name="description" type="str16"/> + <field name="error-info" type="map"/> + </command> + </class> + <class name="message" code="0x4"> + <rule name="persistent-message"/> + <rule name="no-persistent-message-discard"/> + <rule name="throttling"/> + <rule name="non-persistent-message-overflow"/> + <rule name="non-persistent-message-discard"/> + <rule name="min-priority-levels"/> + <rule name="priority-level-implementation"/> + <rule name="priority-delivery"/> + <role name="server" implement="MUST"/> + <role name="client" implement="MUST"/> + <domain name="destination" type="str8"/> + <domain name="accept-mode" type="uint8"> + <enum> + <choice name="explicit" value="0"/> + <choice name="none" value="1"/> + </enum> + </domain> + <domain name="acquire-mode" type="uint8"> + <enum> + <choice name="pre-acquired" value="0"/> + <choice name="not-acquired" value="1"/> + </enum> + </domain> + <domain name="reject-code" type="uint16"> + <enum> + <choice name="unspecified" value="0"/> + <choice name="unroutable" value="1"/> + <choice name="immediate" value="2"/> + </enum> + </domain> + <domain name="resume-id" type="str16"/> + <domain name="delivery-mode" type="uint8"> + <enum> + <choice name="non-persistent" value="1"/> + <choice name="persistent" value="2"/> + </enum> + </domain> + <domain name="delivery-priority" type="uint8"> + <enum> + <choice name="lowest" value="0"/> + <choice name="lower" value="1"/> + <choice name="low" value="2"/> + <choice name="below-average" value="3"/> + <choice name="medium" value="4"/> + <choice name="above-average" value="5"/> + <choice name="high" value="6"/> + <choice name="higher" value="7"/> + <choice name="very-high" value="8"/> + <choice name="highest" value="9"/> + </enum> + </domain> + <struct name="delivery-properties" code="0x1" size="4" pack="2"> + <field name="discard-unroutable" type="bit"/> + <field name="immediate" type="bit"/> + <field name="redelivered" type="bit"> + <rule name="implementation"/> + <rule name="hinting"/> + </field> + <field name="priority" type="delivery-priority" required="true"/> + <field name="delivery-mode" type="delivery-mode" required="true"/> + <field name="ttl" type="uint64"> + <rule name="ttl-decrement"/> + </field> + <field name="timestamp" type="datetime"/> + <field name="expiration" type="datetime"/> + <field name="exchange" type="exchange.name"/> + <field name="routing-key" type="str8"/> + <field name="resume-id" type="resume-id"/> + <field name="resume-ttl" type="uint64"/> + </struct> + <struct name="fragment-properties" code="0x2" size="4" pack="2"> + <field name="first" type="bit" default="1"/> + <field name="last" type="bit" default="1"/> + <field name="fragment-size" type="uint64"/> + </struct> + <struct name="reply-to" size="2" pack="2"> + <field name="exchange" type="exchange.name"/> + <field name="routing-key" type="str8"/> + </struct> + <struct name="message-properties" code="0x3" size="4" pack="2"> + <field name="content-length" type="uint64"/> + <field name="message-id" type="uuid"> + <rule name="unique"/> + <rule name="immutable"/> + </field> + <field name="correlation-id" type="vbin16"/> + <field name="reply-to" type="reply-to"/> + <field name="content-type" type="str8"/> + <field name="content-encoding" type="str8"/> + <field name="user-id" type="vbin16"> + <rule name="authentication"/> + </field> + <field name="app-id" type="vbin16"/> + <field name="application-headers" type="map"/> + </struct> + <domain name="flow-mode" type="uint8"> + <enum> + <choice name="credit" value="0"/> + <choice name="window" value="1"/> + </enum> + </domain> + <domain name="credit-unit" type="uint8"> + <enum> + <choice name="message" value="0"/> + <choice name="byte" value="1"/> + </enum> + </domain> + <command name="transfer" code="0x1"> + <rule name="transactional-publish"/> + <implement role="server" handle="MUST"/> + <implement role="client" handle="MUST"/> + <field name="destination" type="destination"> + <rule name="blank-destination"/> + <exception name="nonexistent-exchange" error-code="not-found"/> + </field> + <field name="accept-mode" type="accept-mode" required="true"/> + <field name="acquire-mode" type="acquire-mode" required="true"/> + <segments> + <header> + <entry type="delivery-properties"/> + <entry type="fragment-properties"/> + <entry type="message-properties"/> + </header> + <body/> + </segments> + </command> + <command name="accept" code="0x2"> + <rule name="acquisition"/> + <implement role="server" handle="MUST"/> + <implement role="client" handle="MUST"/> + <field name="transfers" type="session.commands" required="true"/> + </command> + <command name="reject" code="0x3"> + <rule name="alternate-exchange"/> + <rule name="acquisition"/> + <implement role="server" handle="MUST"/> + <implement role="client" handle="MUST"/> + <field name="transfers" type="session.commands" required="true"/> + <field name="code" type="reject-code" required="true"/> + <field name="text" type="str8"/> + </command> + <command name="release" code="0x4"> + <rule name="ordering"/> + <implement role="server" handle="MUST"/> + <implement role="client" handle="MAY"/> + <field name="transfers" type="session.commands" required="true"/> + <field name="set-redelivered" type="bit"/> + </command> + <command name="acquire" code="0x5"> + <rule name="one-to-one"/> + <implement role="server" handle="MUST"/> + <field name="transfers" type="session.commands" required="true"/> + <result> + <struct name="acquired" code="0x4" size="4" pack="2"> + <field name="transfers" type="session.commands" required="true"/> + </struct> + </result> + </command> + <command name="resume" code="0x6"> + <implement role="server" handle="MUST"/> + <implement role="client" handle="MUST"/> + <field name="destination" type="destination"> + <exception name="destination-not-found" error-code="not-found"/> + </field> + <field name="resume-id" type="resume-id" required="true"> + <rule name="unknown-resume-id"/> + </field> + <result> + <struct name="message-resume-result" code="0x5" size="4" pack="2"> + <field name="offset" type="uint64"/> + </struct> + </result> + </command> + <command name="subscribe" code="0x7"> + <rule name="simultaneous-subscriptions"/> + <rule name="default-flow-mode"/> + <exception name="queue-deletion" error-code="resource-deleted"/> + <exception name="queue-not-found" error-code="not-found"/> + <rule name="initial-credit"/> + <implement role="server" handle="MUST"/> + <field name="queue" type="queue.name" required="true"/> + <field name="destination" type="destination"> + <exception name="unique-subscriber-destination" error-code="not-allowed"/> + </field> + <field name="accept-mode" type="accept-mode" required="true"/> + <field name="acquire-mode" type="acquire-mode" required="true"/> + <field name="exclusive" type="bit"> + <exception name="in-use" error-code="resource-locked"/> + </field> + <field name="resume-id" type="resume-id"/> + <field name="resume-ttl" type="uint64"/> + <field name="arguments" type="map"/> + </command> + <command name="cancel" code="0x8"> + <rule name="post-cancel-transfer-resolution"/> + <implement role="server" handle="MUST"/> + <field name="destination" type="destination" required="true"> + <exception name="subscription-not-found" error-code="not-found"/> + </field> + </command> + <command name="set-flow-mode" code="0x9"> + <rule name="byte-accounting"/> + <rule name="mode-switching"/> + <rule name="default-flow-mode"/> + <implement role="server" handle="MUST"/> + <implement role="client" handle="MUST"/> + <field name="destination" type="destination"/> + <field name="flow-mode" type="flow-mode" required="true"/> + </command> + <command name="flow" code="0xa"> + <implement role="server" handle="MUST"/> + <implement role="client" handle="MUST"/> + <field name="destination" type="destination"/> + <field name="unit" type="credit-unit" required="true"/> + <field name="value" type="uint32"/> + </command> + <command name="flush" code="0xb"> + <implement role="server" handle="MUST"/> + <field name="destination" type="destination"/> + </command> + <command name="stop" code="0xc"> + <implement role="server" handle="MUST"/> + <implement role="client" handle="MUST"/> + <field name="destination" type="destination"/> + </command> + </class> + <class name="tx" code="0x5"> + <rule name="duplicate-tracking"/> + <role name="server" implement="SHOULD"/> + <command name="select" code="0x1"> + <exception name="exactly-once" error-code="illegal-state"/> + <exception name="no-dtx" error-code="illegal-state"/> + <exception name="explicit-accepts" error-code="not-allowed"/> + <implement role="server" handle="MUST"/> + </command> + <command name="commit" code="0x2"> + <exception name="select-required" error-code="illegal-state"/> + <implement role="server" handle="MUST"/> + </command> + <command name="rollback" code="0x3"> + <exception name="select-required" error-code="illegal-state"/> + <implement role="server" handle="MUST"/> + </command> + </class> + <class name="dtx" code="0x6"> + <rule name="transactionality"/> + <role name="server" implement="MAY"/> + <role name="client" implement="MAY"/> + <domain name="xa-status" type="uint16"> + <enum> + <choice name="xa-ok" value="0"/> + <choice name="xa-rbrollback" value="1"/> + <choice name="xa-rbtimeout" value="2"/> + <choice name="xa-heurhaz" value="3"/> + <choice name="xa-heurcom" value="4"/> + <choice name="xa-heurrb" value="5"/> + <choice name="xa-heurmix" value="6"/> + <choice name="xa-rdonly" value="7"/> + </enum> + </domain> + <struct name="xa-result" code="0x1" size="4" pack="2"> + <field name="status" type="xa-status" required="true"/> + </struct> + <struct name="xid" size="2" pack="2"> + <field name="format" type="uint32" required="true"/> + <field name="global-id" type="vbin8" required="true"/> + <field name="branch-id" type="vbin8" required="true"/> + </struct> + <command name="select" code="0x1"> + <implement role="server" handle="MAY"/> + </command> + <command name="start" code="0x2"> + <exception name="illegal-state" error-code="illegal-state"/> + <exception name="already-known" error-code="not-allowed"/> + <exception name="join-and-resume" error-code="not-allowed"/> + <implement role="server" handle="MAY"/> + <field name="xid" type="xid" required="true"> + <exception name="unknown-xid" error-code="not-allowed"/> + </field> + <field name="join" type="bit"> + <exception name="unsupported" error-code="not-implemented"/> + </field> + <field name="resume" type="bit"/> + <result type="xa-result"/> + </command> + <command name="end" code="0x3"> + <exception name="illegal-state" error-code="illegal-state"/> + <exception name="suspend-and-fail" error-code="not-allowed"/> + <rule name="success"/> + <rule name="session-closed"/> + <implement role="server" handle="MAY"/> + <field name="xid" type="xid" required="true"> + <exception name="not-associated" error-code="illegal-state"/> + </field> + <field name="fail" type="bit"> + <rule name="failure"/> + </field> + <field name="suspend" type="bit"> + <rule name="resume"/> + </field> + <result type="xa-result"/> + </command> + <command name="commit" code="0x4"> + <exception name="illegal-state" error-code="illegal-state"/> + <implement role="server" handle="MAY"/> + <field name="xid" type="xid" required="true"> + <exception name="unknown-xid" error-code="not-found"/> + <exception name="not-disassociated" error-code="illegal-state"/> + </field> + <field name="one-phase" type="bit"> + <exception name="one-phase" error-code="illegal-state"/> + <exception name="two-phase" error-code="illegal-state"/> + </field> + <result type="xa-result"/> + </command> + <command name="forget" code="0x5"> + <exception name="illegal-state" error-code="illegal-state"/> + <implement role="server" handle="MAY"/> + <field name="xid" type="xid" required="true"> + <exception name="unknown-xid" error-code="not-found"/> + <exception name="not-disassociated" error-code="illegal-state"/> + </field> + </command> + <command name="get-timeout" code="0x6"> + <implement role="server" handle="MAY"/> + <field name="xid" type="xid" required="true"> + <exception name="unknown-xid" error-code="not-found"/> + </field> + <result> + <struct name="get-timeout-result" code="0x2" size="4" pack="2"> + <field name="timeout" type="uint32" required="true"/> + </struct> + </result> + </command> + <command name="prepare" code="0x7"> + <exception name="illegal-state" error-code="illegal-state"/> + <rule name="obligation-1"/> + <rule name="obligation-2"/> + <implement role="server" handle="MAY"/> + <field name="xid" type="xid" required="true"> + <exception name="unknown-xid" error-code="not-found"/> + <exception name="not-disassociated" error-code="illegal-state"/> + </field> + <result type="xa-result"/> + </command> + <command name="recover" code="0x8"> + <implement role="server" handle="MAY"/> + <result> + <struct name="recover-result" code="0x3" size="4" pack="2"> + <field name="in-doubt" type="array" required="true"/> + </struct> + </result> + </command> + <command name="rollback" code="0x9"> + <exception name="illegal-state" error-code="illegal-state"/> + <implement role="server" handle="MAY"/> + <field name="xid" type="xid" required="true"> + <exception name="unknown-xid" error-code="not-found"/> + <exception name="not-disassociated" error-code="illegal-state"/> + </field> + <result type="xa-result"/> + </command> + <command name="set-timeout" code="0xa"> + <rule name="effective"/> + <rule name="reset"/> + <implement role="server" handle="MAY"/> + <field name="xid" type="xid" required="true"> + <exception name="unknown-xid" error-code="not-found"/> + </field> + <field name="timeout" type="uint32" required="true"/> + </command> + </class> + <class name="exchange" code="0x7"> + <rule name="required-types"/> + <rule name="recommended-types"/> + <rule name="required-instances"/> + <rule name="default-exchange"/> + <rule name="default-access"/> + <rule name="extensions"/> + <role name="server" implement="MUST"/> + <role name="client" implement="MUST"/> + <domain name="name" type="str8"/> + <command name="declare" code="0x1"> + <rule name="minimum"/> + <implement role="server" handle="MUST"/> + <field name="exchange" type="name" required="true"> + <exception name="reserved-names" error-code="not-allowed"/> + <exception name="exchange-name-required" error-code="invalid-argument"/> + </field> + <field name="type" type="str8" required="true"> + <exception name="typed" error-code="not-allowed"/> + <exception name="exchange-type-not-found" error-code="not-found"/> + </field> + <field name="alternate-exchange" type="name"> + <rule name="empty-name"/> + <exception name="pre-existing-exchange" error-code="not-allowed"/> + <rule name="double-failure"/> + </field> + <field name="passive" type="bit"> + <exception name="not-found" error-code="not-found"/> + </field> + <field name="durable" type="bit"> + <rule name="support"/> + <rule name="sticky"/> + </field> + <field name="auto-delete" type="bit"> + <rule name="sticky"/> + </field> + <field name="arguments" type="map"> + <exception name="unknown-argument" error-code="not-implemented"/> + </field> + </command> + <command name="delete" code="0x2"> + <implement role="server" handle="MUST"/> + <field name="exchange" type="name" required="true"> + <exception name="exists" error-code="not-found"/> + <exception name="exchange-name-required" error-code="invalid-argument"/> + <exception name="used-as-alternate" error-code="not-allowed"/> + </field> + <field name="if-unused" type="bit"> + <exception name="exchange-in-use" error-code="precondition-failed"/> + </field> + </command> + <command name="query" code="0x3"> + <implement role="server" handle="MUST"/> + <field name="name" type="str8"/> + <result> + <struct name="exchange-query-result" code="0x1" size="4" pack="2"> + <field name="type" type="str8"/> + <field name="durable" type="bit"/> + <field name="not-found" type="bit"/> + <field name="arguments" type="map"/> + </struct> + </result> + </command> + <command name="bind" code="0x4"> + <rule name="duplicates"/> + <rule name="durable-exchange"/> + <rule name="binding-count"/> + <rule name="multiple-bindings"/> + <implement role="server" handle="MUST"/> + <field name="queue" type="queue.name" required="true"> + <exception name="empty-queue" error-code="invalid-argument"/> + <exception name="queue-existence" error-code="not-found"/> + </field> + <field name="exchange" type="name" required="true"> + <exception name="exchange-existence" error-code="not-found"/> + <exception name="exchange-name-required" error-code="invalid-argument"/> + </field> + <field name="binding-key" type="str8" required="true"/> + <field name="arguments" type="map"> + <exception name="unknown-argument" error-code="not-implemented"/> + </field> + </command> + <command name="unbind" code="0x5"> + <implement role="server" handle="MUST"/> + <field name="queue" type="queue.name" required="true"> + <exception name="non-existent-queue" error-code="not-found"/> + </field> + <field name="exchange" type="name" required="true"> + <exception name="non-existent-exchange" error-code="not-found"/> + <exception name="exchange-name-required" error-code="invalid-argument"/> + </field> + <field name="binding-key" type="str8" required="true"> + <exception name="non-existent-binding-key" error-code="not-found"/> + </field> + </command> + <command name="bound" code="0x6"> + <implement role="server" handle="MUST"/> + <field name="exchange" type="str8"/> + <field name="queue" type="str8" required="true"/> + <field name="binding-key" type="str8"/> + <field name="arguments" type="map"/> + <result> + <struct name="exchange-bound-result" code="0x2" size="4" pack="2"> + <field name="exchange-not-found" type="bit"/> + <field name="queue-not-found" type="bit"/> + <field name="queue-not-matched" type="bit"/> + <field name="key-not-matched" type="bit"/> + <field name="args-not-matched" type="bit"/> + </struct> + </result> + </command> + </class> + <class name="queue" code="0x8"> + <rule name="any-content"/> + <role name="server" implement="MUST"/> + <role name="client" implement="MUST"/> + <domain name="name" type="str8"/> + <command name="declare" code="0x1"> + <rule name="default-binding"/> + <rule name="minimum-queues"/> + <implement role="server" handle="MUST"/> + <field name="queue" type="name" required="true"> + <exception name="reserved-prefix" error-code="not-allowed"/> + </field> + <field name="alternate-exchange" type="exchange.name"> + <exception name="pre-existing-exchange" error-code="not-allowed"/> + <exception name="unknown-exchange" error-code="not-found"/> + </field> + <field name="passive" type="bit"> + <exception name="passive" error-code="not-found"/> + </field> + <field name="durable" type="bit"> + <rule name="persistence"/> + <rule name="types"/> + <rule name="pre-existence"/> + </field> + <field name="exclusive" type="bit"> + <rule name="types"/> + <exception name="in-use" error-code="resource-locked"/> + </field> + <field name="auto-delete" type="bit"> + <rule name="pre-existence"/> + </field> + <field name="arguments" type="map"> + <exception name="unknown-argument" error-code="not-implemented"/> + </field> + </command> + <command name="delete" code="0x2"> + <implement role="server" handle="MUST"/> + <field name="queue" type="name" required="true"> + <exception name="empty-name" error-code="invalid-argument"/> + <exception name="queue-exists" error-code="not-found"/> + </field> + <field name="if-unused" type="bit"> + <exception name="if-unused-flag" error-code="precondition-failed"/> + </field> + <field name="if-empty" type="bit"> + <exception name="not-empty" error-code="precondition-failed"/> + </field> + </command> + <command name="purge" code="0x3"> + <rule name="empty"/> + <rule name="pending-messages"/> + <rule name="purge-recovery"/> + <implement role="server" handle="MUST"/> + <field name="queue" type="name" required="true"> + <exception name="empty-name" error-code="invalid-argument"/> + <exception name="queue-exists" error-code="not-found"/> + </field> + </command> + <command name="query" code="0x4"> + <implement role="server" handle="MUST"/> + <field name="queue" type="name" required="true"/> + <result> + <struct name="queue-query-result" code="0x1" size="4" pack="2"> + <field name="queue" type="name" required="true"/> + <field name="alternate-exchange" type="exchange.name"/> + <field name="durable" type="bit"/> + <field name="exclusive" type="bit"/> + <field name="auto-delete" type="bit"/> + <field name="arguments" type="map"/> + <field name="message-count" type="uint32" required="true"/> + <field name="subscriber-count" type="uint32" required="true"/> + </struct> + </result> + </command> + </class> + <class name="file" code="0x9"> + <rule name="reliable-storage"/> + <rule name="no-discard"/> + <rule name="priority-levels"/> + <rule name="acknowledgement-support"/> + <role name="server" implement="MAY"/> + <role name="client" implement="MAY"/> + <struct name="file-properties" code="0x1" size="4" pack="2"> + <field name="content-type" type="str8"/> + <field name="content-encoding" type="str8"/> + <field name="headers" type="map"/> + <field name="priority" type="uint8"/> + <field name="reply-to" type="str8"/> + <field name="message-id" type="str8"/> + <field name="filename" type="str8"/> + <field name="timestamp" type="datetime"/> + <field name="cluster-id" type="str8"/> + </struct> + <domain name="return-code" type="uint16"> + <enum> + <choice name="content-too-large" value="311"/> + <choice name="no-route" value="312"/> + <choice name="no-consumers" value="313"/> + </enum> + </domain> + <command name="qos" code="0x1"> + <implement role="server" handle="MUST"/> + <response name="qos-ok"/> + <field name="prefetch-size" type="uint32"/> + <field name="prefetch-count" type="uint16"> + <rule name="prefetch-discretion"/> + </field> + <field name="global" type="bit"/> + </command> + <command name="qos-ok" code="0x2"> + <implement role="client" handle="MUST"/> + </command> + <command name="consume" code="0x3"> + <rule name="min-consumers"/> + <implement role="server" handle="MUST"/> + <response name="consume-ok"/> + <field name="queue" type="queue.name"> + <exception name="queue-exists-if-empty" error-code="not-allowed"/> + </field> + <field name="consumer-tag" type="str8"> + <exception name="not-existing-consumer" error-code="not-allowed"/> + <exception name="not-empty-consumer-tag" error-code="not-allowed"/> + </field> + <field name="no-local" type="bit"/> + <field name="no-ack" type="bit"/> + <field name="exclusive" type="bit"> + <exception name="in-use" error-code="resource-locked"/> + </field> + <field name="nowait" type="bit"/> + <field name="arguments" type="map"/> + </command> + <command name="consume-ok" code="0x4"> + <implement role="client" handle="MUST"/> + <field name="consumer-tag" type="str8"/> + </command> + <command name="cancel" code="0x5"> + <implement role="server" handle="MUST"/> + <field name="consumer-tag" type="str8"/> + </command> + <command name="open" code="0x6"> + <implement role="server" handle="MUST"/> + <implement role="client" handle="MUST"/> + <response name="open-ok"/> + <field name="identifier" type="str8"/> + <field name="content-size" type="uint64"> + <rule name="content-size"/> + </field> + </command> + <command name="open-ok" code="0x7"> + <implement role="server" handle="MUST"/> + <implement role="client" handle="MUST"/> + <response name="stage"/> + <field name="staged-size" type="uint64"> + <rule name="behavior"/> + <rule name="staging"/> + </field> + </command> + <command name="stage" code="0x8"> + <implement role="server" handle="MUST"/> + <implement role="client" handle="MUST"/> + <segments> + <header required="true"> + <entry type="file-properties"/> + </header> + <body/> + </segments> + </command> + <command name="publish" code="0x9"> + <implement role="server" handle="MUST"/> + <field name="exchange" type="exchange.name"> + <rule name="default"/> + <exception name="refusal" error-code="not-implemented"/> + </field> + <field name="routing-key" type="str8"/> + <field name="mandatory" type="bit"> + <rule name="implementation"/> + </field> + <field name="immediate" type="bit"> + <rule name="implementation"/> + </field> + <field name="identifier" type="str8"/> + </command> + <command name="return" code="0xa"> + <implement role="client" handle="MUST"/> + <field name="reply-code" type="return-code"/> + <field name="reply-text" type="str8"/> + <field name="exchange" type="exchange.name"/> + <field name="routing-key" type="str8"/> + <segments> + <header required="true"> + <entry type="file-properties"/> + </header> + <body/> + </segments> + </command> + <command name="deliver" code="0xb"> + <rule name="redelivery-tracking"/> + <implement role="client" handle="MUST"/> + <field name="consumer-tag" type="str8"/> + <field name="delivery-tag" type="uint64"> + <rule name="non-zero"/> + </field> + <field name="redelivered" type="bit"/> + <field name="exchange" type="exchange.name"/> + <field name="routing-key" type="str8"/> + <field name="identifier" type="str8"/> + </command> + <command name="ack" code="0xc"> + <implement role="server" handle="MUST"/> + <field name="delivery-tag" type="uint64"> + <rule name="session-local"/> + </field> + <field name="multiple" type="bit"> + <rule name="validation"/> + </field> + </command> + <command name="reject" code="0xd"> + <rule name="server-interpretation"/> + <rule name="not-selection"/> + <implement role="server" handle="MUST"/> + <field name="delivery-tag" type="uint64"> + <rule name="session-local"/> + </field> + <field name="requeue" type="bit"> + <rule name="requeue-strategy"/> + </field> + </command> + </class> + <class name="stream" code="0xa"> + <rule name="overflow-discard"/> + <rule name="priority-levels"/> + <rule name="acknowledgement-support"/> + <role name="server" implement="MAY"/> + <role name="client" implement="MAY"/> + <struct name="stream-properties" code="0x1" size="4" pack="2"> + <field name="content-type" type="str8"/> + <field name="content-encoding" type="str8"/> + <field name="headers" type="map"/> + <field name="priority" type="uint8"/> + <field name="timestamp" type="datetime"/> + </struct> + <domain name="return-code" type="uint16"> + <enum> + <choice name="content-too-large" value="311"/> + <choice name="no-route" value="312"/> + <choice name="no-consumers" value="313"/> + </enum> + </domain> + <command name="qos" code="0x1"> + <implement role="server" handle="MUST"/> + <response name="qos-ok"/> + <field name="prefetch-size" type="uint32"/> + <field name="prefetch-count" type="uint16"/> + <field name="consume-rate" type="uint32"> + <rule name="ignore-prefetch"/> + <rule name="drop-by-priority"/> + </field> + <field name="global" type="bit"/> + </command> + <command name="qos-ok" code="0x2"> + <implement role="client" handle="MUST"/> + </command> + <command name="consume" code="0x3"> + <rule name="min-consumers"/> + <rule name="priority-based-delivery"/> + <implement role="server" handle="MUST"/> + <response name="consume-ok"/> + <field name="queue" type="queue.name"> + <exception name="queue-exists-if-empty" error-code="not-allowed"/> + </field> + <field name="consumer-tag" type="str8"> + <exception name="not-existing-consumer" error-code="not-allowed"/> + <exception name="not-empty-consumer-tag" error-code="not-allowed"/> + </field> + <field name="no-local" type="bit"/> + <field name="exclusive" type="bit"> + <exception name="in-use" error-code="resource-locked"/> + </field> + <field name="nowait" type="bit"/> + <field name="arguments" type="map"/> + </command> + <command name="consume-ok" code="0x4"> + <implement role="client" handle="MUST"/> + <field name="consumer-tag" type="str8"/> + </command> + <command name="cancel" code="0x5"> + <implement role="server" handle="MUST"/> + <field name="consumer-tag" type="str8"/> + </command> + <command name="publish" code="0x6"> + <implement role="server" handle="MUST"/> + <field name="exchange" type="exchange.name"> + <rule name="default"/> + <exception name="refusal" error-code="not-implemented"/> + </field> + <field name="routing-key" type="str8"/> + <field name="mandatory" type="bit"> + <rule name="implementation"/> + </field> + <field name="immediate" type="bit"> + <rule name="implementation"/> + </field> + <segments> + <header required="true"> + <entry type="stream-properties"/> + </header> + <body/> + </segments> + </command> + <command name="return" code="0x7"> + <implement role="client" handle="MUST"/> + <field name="reply-code" type="return-code"/> + <field name="reply-text" type="str8"/> + <field name="exchange" type="exchange.name"/> + <field name="routing-key" type="str8"/> + <segments> + <header required="true"> + <entry type="stream-properties"/> + </header> + <body/> + </segments> + </command> + <command name="deliver" code="0x8"> + <implement role="client" handle="MUST"/> + <field name="consumer-tag" type="str8"/> + <field name="delivery-tag" type="uint64"> + <rule name="session-local"/> + </field> + <field name="exchange" type="exchange.name"/> + <field name="queue" type="queue.name" required="true"/> + <segments> + <header required="true"> + <entry type="stream-properties"/> + </header> + <body/> + </segments> + </command> + </class> +</amqp> |
