diff options
| author | Rafael H. Schloming <rhs@apache.org> | 2013-05-03 11:36:21 +0000 |
|---|---|---|
| committer | Rafael H. Schloming <rhs@apache.org> | 2013-05-03 11:36:21 +0000 |
| commit | 7280ceb9f6f65bc924fbf1e2fe257066e6873189 (patch) | |
| tree | 7a17c13d361e346dbb7e5337ede662f0fbd0c15c /python/qpid/specs | |
| parent | 93b90b4d201fffc062765b3bcc0e3332b0ecacef (diff) | |
| download | qpid-python-7280ceb9f6f65bc924fbf1e2fe257066e6873189.tar.gz | |
QPID-4798: updated and renamed spec files
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@1478736 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'python/qpid/specs')
| -rw-r--r-- | python/qpid/specs/amqp-0-8-qpid-stripped.xml | 784 | ||||
| -rw-r--r-- | python/qpid/specs/amqp-0-8-stripped.xml | 1372 | ||||
| -rw-r--r-- | python/qpid/specs/amqp-0-9-qpid-stripped.xml (renamed from python/qpid/specs/amqp-0-9-stripped.xml) | 667 |
3 files changed, 979 insertions, 1844 deletions
diff --git a/python/qpid/specs/amqp-0-8-qpid-stripped.xml b/python/qpid/specs/amqp-0-8-qpid-stripped.xml new file mode 100644 index 0000000000..6975e17aa6 --- /dev/null +++ b/python/qpid/specs/amqp-0-8-qpid-stripped.xml @@ -0,0 +1,784 @@ +<?xml version="1.0"?> + +<!-- +(c) Copyright JPMorgan Chase Bank & Co., Cisco Systems, Inc., Envoy +Technologies Inc., iMatix Corporation, IONA\ufffd Technologies, Red +Hat, Inc., TWIST Process Innovations, and 29West Inc. 2006. + +Copyright (c) 2009 AMQP Working Group. + +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="8" minor="0" port="5672"> + <constant name="frame method" value="1"/> + <constant name="frame header" value="2"/> + <constant name="frame body" value="3"/> + <constant name="frame oob method" value="4"/> + <constant name="frame oob header" value="5"/> + <constant name="frame oob body" value="6"/> + <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" value="310" class="soft error"/> + <constant name="content too large" value="311" class="soft error"/> + <constant name="connection forced" value="320" class="hard error"/> + <constant name="invalid path" value="402" class="hard error"/> + <constant name="access refused" value="403" class="soft error"/> + <constant name="not found" value="404" class="soft error"/> + <constant name="resource locked" value="405" class="soft error"/> + <constant name="frame error" value="501" class="hard error"/> + <constant name="syntax error" value="502" class="hard error"/> + <constant name="command invalid" value="503" class="hard error"/> + <constant name="channel error" value="504" class="hard error"/> + <constant name="resource error" value="506" class="hard error"/> + <constant name="not allowed" value="530" class="hard error"/> + <constant name="not implemented" value="540" class="hard error"/> + <constant name="internal error" value="541" class="hard error"/> + <domain name="access ticket" type="short"> + <assert check="ne" value="0"/> + </domain> + <domain name="class id" type="short"/> + <domain name="consumer tag" type="shortstr"/> + <domain name="delivery tag" type="longlong"/> + <domain name="exchange name" type="shortstr"> + <assert check="length" value="127"/> + </domain> + <domain name="known hosts" type="shortstr"/> + <domain name="method id" type="short"/> + <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="length" value="127"/> + </domain> + <domain name="redelivered" type="bit"/> + <domain name="reply code" type="short"> + <assert check="notnull"/> + </domain> + <domain name="reply text" type="shortstr"> + <assert check="notnull"/> + </domain> + <class name="connection" handler="connection" index="10"> + <chassis name="server" implement="MUST"/> + <chassis name="client" implement="MUST"/> + <method name="start" synchronous="1" index="10"> + <chassis name="client" implement="MUST"/> + <response name="start-ok"/> + <field name="version major" type="octet"/> + <field name="version minor" type="octet"/> + <field name="server properties" domain="peer properties"/> + <field name="mechanisms" type="longstr"> + <see name="security mechanisms"/> + <assert check="notnull"/> + </field> + <field name="locales" type="longstr"> + <assert check="notnull"/> + </field> + </method> + <method name="start-ok" synchronous="1" index="11"> + <chassis name="server" implement="MUST"/> + <field name="client properties" domain="peer properties"/> + <field name="mechanism" type="shortstr"> + <assert check="notnull"/> + </field> + <field name="response" type="longstr"> + <assert check="notnull"/> + </field> + <field name="locale" type="shortstr"> + <assert check="notnull"/> + </field> + </method> + <method name="secure" synchronous="1" index="20"> + <chassis name="client" implement="MUST"/> + <response name="secure-ok"/> + <field name="challenge" type="longstr"> + <see name="security mechanisms"/> + </field> + </method> + <method name="secure-ok" synchronous="1" index="21"> + <chassis name="server" implement="MUST"/> + <field name="response" type="longstr"> + <assert check="notnull"/> + </field> + </method> + <method name="tune" synchronous="1" index="30"> + <chassis name="client" implement="MUST"/> + <response name="tune-ok"/> + <field name="channel max" type="short"/> + <field name="frame max" type="long"/> + <field name="heartbeat" type="short"/> + </method> + <method name="tune-ok" synchronous="1" index="31"> + <chassis name="server" implement="MUST"/> + <field name="channel max" type="short"> + <assert check="notnull"/> + <assert check="le" method="tune" field="channel max"/> + </field> + <field name="frame max" type="long"/> + <field name="heartbeat" type="short"/> + </method> + <method name="open" synchronous="1" index="40"> + <chassis name="server" implement="MUST"/> + <response name="open-ok"/> + <response name="redirect"/> + <field name="virtual host" domain="path"> + <assert check="regexp" value="^[a-zA-Z0-9/-_]+$"/> + </field> + <field name="capabilities" type="shortstr"/> + <field name="insist" type="bit"/> + </method> + <method name="open-ok" synchronous="1" index="41"> + <chassis name="client" implement="MUST"/> + <field name="known hosts" domain="known hosts"/> + </method> + <method name="redirect" synchronous="1" index="50"> + <chassis name="client" implement="MAY"/> + <field name="host" type="shortstr"> + <assert check="notnull"/> + </field> + <field name="known hosts" domain="known hosts"/> + </method> + <method name="close" synchronous="1" index="60"> + <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"/> + <!-- Qpid difference : correct the domain --> + <field name="method id" domain="method id"/> + </method> + <method name="close-ok" synchronous="1" index="61"> + <chassis name="client" implement="MUST"/> + <chassis name="server" implement="MUST"/> + </method> + </class> + <class name="channel" handler="channel" index="20"> + <chassis name="server" implement="MUST"/> + <chassis name="client" implement="MUST"/> + <method name="open" synchronous="1" index="10"> + <chassis name="server" implement="MUST"/> + <response name="open-ok"/> + <field name="out of band" type="shortstr"> + <assert check="null"/> + </field> + </method> + <method name="open-ok" synchronous="1" index="11"> + <chassis name="client" implement="MUST"/> + </method> + <method name="flow" synchronous="1" index="20"> + <chassis name="server" implement="MUST"/> + <chassis name="client" implement="MUST"/> + <response name="flow-ok"/> + <field name="active" type="bit"/> + </method> + <method name="flow-ok" index="21"> + <chassis name="server" implement="MUST"/> + <chassis name="client" implement="MUST"/> + <field name="active" type="bit"/> + </method> + <method name="alert" index="30"> + <chassis name="client" implement="MUST"/> + <field name="reply code" domain="reply code"/> + <field name="reply text" domain="reply text"/> + <field name="details" type="table"/> + </method> + <method name="close" synchronous="1" index="40"> + <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" synchronous="1" index="41"> + <chassis name="client" implement="MUST"/> + <chassis name="server" implement="MUST"/> + </method> + </class> + <class name="access" handler="connection" index="30"> + <chassis name="server" implement="MUST"/> + <chassis name="client" implement="MUST"/> + <method name="request" synchronous="1" index="10"> + <chassis name="server" implement="MUST"/> + <response name="request-ok"/> + <field name="realm" domain="path"/> + <field name="exclusive" type="bit"/> + <field name="passive" type="bit"/> + <field name="active" type="bit"/> + <field name="write" type="bit"/> + <field name="read" type="bit"/> + </method> + <method name="request-ok" synchronous="1" index="11"> + <chassis name="client" implement="MUST"/> + <field name="ticket" domain="access ticket"/> + </method> + </class> + <class name="exchange" handler="channel" index="40"> + <chassis name="server" implement="MUST"/> + <chassis name="client" implement="MUST"/> + <method name="declare" synchronous="1" index="10"> + <chassis name="server" implement="MUST"/> + <response name="declare-ok"/> + <field name="ticket" domain="access ticket"/> + <field name="exchange" domain="exchange name"> + <assert check="regexp" value="^[a-zA-Z0-9-_.:]+$"/> + </field> + <field name="type" type="shortstr"> + <assert check="regexp" value="^[a-zA-Z0-9-_.:]+$"/> + </field> + <field name="passive" type="bit"/> + <field name="durable" type="bit"/> + <field name="auto delete" type="bit"/> + <field name="internal" type="bit"/> + <field name="nowait" type="bit"/> + <field name="arguments" type="table"/> + </method> + <method name="declare-ok" synchronous="1" index="11"> + <chassis name="client" implement="MUST"/> + </method> + <method name="delete" synchronous="1" index="20"> + <chassis name="server" implement="MUST"/> + <response name="delete-ok"/> + <field name="ticket" domain="access ticket"/> + <field name="exchange" domain="exchange name"> + <assert check="notnull"/> + </field> + <field name="if unused" type="bit"/> + <field name="nowait" type="bit"/> + </method> + <method name="delete-ok" synchronous="1" index="21"> + <chassis name="client" implement="MUST"/> + </method> + <!-- Qpid specific addition --> + <method name="bound" synchronous="1" index="22"> + <chassis name="server" implement="SHOULD"/> + <field name="exchange" domain="exchange name"/> + <field name="routing key" type="shortstr"/> + <field name="queue" domain="queue name"/> + </method> + <method name="bound-ok" synchronous="1" index="23"> + <field name="reply code" domain="reply code"/> + <field name="reply text" domain="reply text"/> + <chassis name="client" implement="SHOULD"/> + </method> + <!-- End Qpid specific addition --> + </class> + <class name="queue" handler="channel" index="50"> + <chassis name="server" implement="MUST"/> + <chassis name="client" implement="MUST"/> + <method name="declare" synchronous="1" index="10"> + <chassis name="server" implement="MUST"/> + <response name="declare-ok"/> + <field name="ticket" domain="access ticket"/> + <field name="queue" domain="queue name"> + <assert check="regexp" value="^[a-zA-Z0-9-_.:]*$"/> + </field> + <field name="passive" type="bit"/> + <field name="durable" type="bit"/> + <field name="exclusive" type="bit"/> + <field name="auto delete" type="bit"/> + <field name="nowait" type="bit"/> + <field name="arguments" type="table"/> + </method> + <method name="declare-ok" synchronous="1" index="11"> + <chassis name="client" implement="MUST"/> + <field name="queue" domain="queue name"> + <assert check="notnull"/> + </field> + <field name="message count" type="long"/> + <field name="consumer count" type="long"/> + </method> + <method name="bind" synchronous="1" index="20"> + <chassis name="server" implement="MUST"/> + <response name="bind-ok"/> + <field name="ticket" domain="access ticket"/> + <field name="queue" domain="queue name"/> + <field name="exchange" domain="exchange name"/> + <field name="routing key" type="shortstr"/> + <field name="nowait" type="bit"/> + <field name="arguments" type="table"/> + </method> + <method name="bind-ok" synchronous="1" index="21"> + <chassis name="client" implement="MUST"/> + </method> + <method name="purge" synchronous="1" index="30"> + <chassis name="server" implement="MUST"/> + <response name="purge-ok"/> + <field name="ticket" domain="access ticket"/> + <field name="queue" domain="queue name"/> + <field name="nowait" type="bit"/> + </method> + <method name="purge-ok" synchronous="1" index="31"> + <chassis name="client" implement="MUST"/> + <field name="message count" type="long"/> + </method> + <method name="delete" synchronous="1" index="40"> + <chassis name="server" implement="MUST"/> + <response name="delete-ok"/> + <field name="ticket" domain="access ticket"/> + <field name="queue" domain="queue name"/> + <field name="if unused" type="bit"/> + <field name="if empty" type="bit"/> + <field name="nowait" type="bit"/> + </method> + <method name="delete-ok" synchronous="1" index="41"> + <chassis name="client" implement="MUST"/> + <field name="message count" type="long"/> + </method> + </class> + <class name="basic" handler="channel" index="60"> + <chassis name="server" implement="MUST"/> + <chassis name="client" implement="MAY"/> + <field name="content type" type="shortstr"/> + <field name="content encoding" type="shortstr"/> + <field name="headers" type="table"/> + <field name="delivery mode" type="octet"/> + <field name="priority" type="octet"/> + <field name="correlation id" type="shortstr"/> + <field name="reply to" type="shortstr"/> + <field name="expiration" type="shortstr"/> + <field name="message id" type="shortstr"/> + <field name="timestamp" type="timestamp"/> + <field name="type" type="shortstr"/> + <field name="user id" type="shortstr"/> + <field name="app id" type="shortstr"/> + <field name="cluster id" type="shortstr"/> + <method name="qos" synchronous="1" index="10"> + <chassis name="server" implement="MUST"/> + <response name="qos-ok"/> + <field name="prefetch size" type="long"/> + <field name="prefetch count" type="short"/> + <field name="global" type="bit"/> + </method> + <method name="qos-ok" synchronous="1" index="11"> + <chassis name="client" implement="MUST"/> + </method> + <method name="consume" synchronous="1" index="20"> + <chassis name="server" implement="MUST"/> + <response name="consume-ok"/> + <field name="ticket" domain="access ticket"/> + <field name="queue" domain="queue name"/> + <field name="consumer tag" domain="consumer tag"/> + <field name="no local" domain="no local"/> + <field name="no ack" domain="no ack"/> + <field name="exclusive" type="bit"/> + <field name="nowait" type="bit"/> + <!-- Qpid specific addition : interop issue extra field --> + <field name="arguments" type="table"/> + </method> + <method name="consume-ok" synchronous="1" index="21"> + <chassis name="client" implement="MUST"/> + <field name="consumer tag" domain="consumer tag"/> + </method> + <method name="cancel" synchronous="1" index="30"> + <chassis name="server" implement="MUST"/> + <response name="cancel-ok"/> + <field name="consumer tag" domain="consumer tag"/> + <field name="nowait" type="bit"/> + </method> + <method name="cancel-ok" synchronous="1" index="31"> + <chassis name="client" 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"/> + <field name="exchange" domain="exchange name"/> + <field name="routing key" type="shortstr"/> + <field name="mandatory" type="bit"/> + <field name="immediate" type="bit"/> + </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" type="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="redelivered" domain="redelivered"/> + <field name="exchange" domain="exchange name"/> + <field name="routing key" type="shortstr"/> + </method> + <method name="get" synchronous="1" index="70"> + <response name="get-ok"/> + <response name="get-empty"/> + <chassis name="server" implement="MUST"/> + <field name="ticket" domain="access ticket"/> + <field name="queue" domain="queue name"/> + <field name="no ack" domain="no ack"/> + </method> + <method name="get-ok" synchronous="1" content="1" index="71"> + <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" type="shortstr"/> + <field name="message count" type="long"/> + </method> + <method name="get-empty" synchronous="1" index="72"> + <chassis name="client" implement="MAY"/> + <field name="cluster id" type="shortstr"/> + </method> + <method name="ack" index="80"> + <chassis name="server" implement="MUST"/> + <field name="delivery tag" domain="delivery tag"/> + <field name="multiple" type="bit"/> + </method> + <method name="reject" index="90"> + <chassis name="server" implement="MUST"/> + <field name="delivery tag" domain="delivery tag"/> + <field name="requeue" type="bit"/> + </method> + <!-- Qpid specific modification : interop issue, added synchronous reply --> + <method name="recover" index="100"> + <chassis name="server" implement="MUST"/> + <field name="requeue" type="bit"/> + <response name="recover-ok"/> + </method> + <method name="recover-ok" synchronous="1" index="101"> + <chassis name="client" implement="MUST"/> + </method> + <!-- End Qpid specific modification --> + </class> + <class name="file" handler="channel" index="70"> + <chassis name="server" implement="MAY"/> + <chassis name="client" implement="MAY"/> + <field name="content type" type="shortstr"/> + <field name="content encoding" type="shortstr"/> + <field name="headers" type="table"/> + <field name="priority" type="octet"/> + <field name="reply to" type="shortstr"/> + <field name="message id" type="shortstr"/> + <field name="filename" type="shortstr"/> + <field name="timestamp" type="timestamp"/> + <field name="cluster id" type="shortstr"/> + <method name="qos" synchronous="1" index="10"> + <chassis name="server" implement="MUST"/> + <response name="qos-ok"/> + <field name="prefetch size" type="long"/> + <field name="prefetch count" type="short"/> + <field name="global" type="bit"/> + </method> + <method name="qos-ok" synchronous="1" index="11"> + <chassis name="client" implement="MUST"/> + </method> + <method name="consume" synchronous="1" index="20"> + <chassis name="server" implement="MUST"/> + <response name="consume-ok"/> + <field name="ticket" domain="access ticket"/> + <field name="queue" domain="queue name"/> + <field name="consumer tag" domain="consumer tag"/> + <field name="no local" domain="no local"/> + <field name="no ack" domain="no ack"/> + <field name="exclusive" type="bit"/> + <field name="nowait" type="bit"/> + </method> + <method name="consume-ok" synchronous="1" index="21"> + <chassis name="client" implement="MUST"/> + <field name="consumer tag" domain="consumer tag"/> + </method> + <method name="cancel" synchronous="1" index="30"> + <chassis name="server" implement="MUST"/> + <response name="cancel-ok"/> + <field name="consumer tag" domain="consumer tag"/> + <field name="nowait" type="bit"/> + </method> + <method name="cancel-ok" synchronous="1" index="31"> + <chassis name="client" implement="MUST"/> + <field name="consumer tag" domain="consumer tag"/> + </method> + <method name="open" synchronous="1" index="40"> + <response name="open-ok"/> + <chassis name="server" implement="MUST"/> + <chassis name="client" implement="MUST"/> + <field name="identifier" type="shortstr"/> + <field name="content size" type="longlong"/> + </method> + <method name="open-ok" synchronous="1" index="41"> + <response name="stage"/> + <chassis name="server" implement="MUST"/> + <chassis name="client" implement="MUST"/> + <field name="staged size" type="longlong"/> + </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"/> + <field name="exchange" domain="exchange name"/> + <field name="routing key" type="shortstr"/> + <field name="mandatory" type="bit"/> + <field name="immediate" type="bit"/> + <field name="identifier" type="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" type="shortstr"/> + </method> + <method name="deliver" index="80"> + <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" type="shortstr"/> + <field name="identifier" type="shortstr"/> + </method> + <method name="ack" index="90"> + <chassis name="server" implement="MUST"/> + <field name="delivery tag" domain="delivery tag"/> + <field name="multiple" type="bit"/> + </method> + <method name="reject" index="100"> + <chassis name="server" implement="MUST"/> + <field name="delivery tag" domain="delivery tag"/> + <field name="requeue" type="bit"/> + </method> + </class> + <class name="stream" handler="channel" index="80"> + <chassis name="server" implement="MAY"/> + <chassis name="client" implement="MAY"/> + <field name="content type" type="shortstr"/> + <field name="content encoding" type="shortstr"/> + <field name="headers" type="table"/> + <field name="priority" type="octet"/> + <field name="timestamp" type="timestamp"/> + <method name="qos" synchronous="1" index="10"> + <chassis name="server" implement="MUST"/> + <response name="qos-ok"/> + <field name="prefetch size" type="long"/> + <field name="prefetch count" type="short"/> + <field name="consume rate" type="long"/> + <field name="global" type="bit"/> + </method> + <method name="qos-ok" synchronous="1" index="11"> + <chassis name="client" implement="MUST"/> + </method> + <method name="consume" synchronous="1" index="20"> + <chassis name="server" implement="MUST"/> + <response name="consume-ok"/> + <field name="ticket" domain="access ticket"/> + <field name="queue" domain="queue name"/> + <field name="consumer tag" domain="consumer tag"/> + <field name="no local" domain="no local"/> + <field name="exclusive" type="bit"/> + <field name="nowait" type="bit"/> + </method> + <method name="consume-ok" synchronous="1" index="21"> + <chassis name="client" implement="MUST"/> + <field name="consumer tag" domain="consumer tag"/> + </method> + <method name="cancel" synchronous="1" index="30"> + <chassis name="server" implement="MUST"/> + <response name="cancel-ok"/> + <field name="consumer tag" domain="consumer tag"/> + <field name="nowait" type="bit"/> + </method> + <method name="cancel-ok" synchronous="1" index="31"> + <chassis name="client" 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"/> + <field name="exchange" domain="exchange name"/> + <field name="routing key" type="shortstr"/> + <field name="mandatory" type="bit"/> + <field name="immediate" type="bit"/> + </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" type="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" handler="channel" index="90"> + <chassis name="server" implement="SHOULD"/> + <chassis name="client" implement="MAY"/> + <method name="select" synchronous="1" index="10"> + <chassis name="server" implement="MUST"/> + <response name="select-ok"/> + </method> + <method name="select-ok" synchronous="1" index="11"> + <chassis name="client" implement="MUST"/> + </method> + <method name="commit" synchronous="1" index="20"> + <chassis name="server" implement="MUST"/> + <response name="commit-ok"/> + </method> + <method name="commit-ok" synchronous="1" index="21"> + <chassis name="client" implement="MUST"/> + </method> + <method name="rollback" synchronous="1" index="30"> + <chassis name="server" implement="MUST"/> + <response name="rollback-ok"/> + </method> + <method name="rollback-ok" synchronous="1" index="31"> + <chassis name="client" implement="MUST"/> + </method> + </class> + <class name="dtx" handler="channel" index="100"> + <chassis name="server" implement="MAY"/> + <chassis name="client" implement="MAY"/> + <method name="select" synchronous="1" index="10"> + <chassis name="server" implement="MUST"/> + <response name="select-ok"/> + </method> + <method name="select-ok" synchronous="1" index="11"> + <chassis name="client" implement="MUST"/> + </method> + <method name="start" synchronous="1" index="20"> + <chassis name="server" implement="MAY"/> + <response name="start-ok"/> + <field name="dtx identifier" type="shortstr"> + <assert check="notnull"/> + </field> + </method> + <method name="start-ok" synchronous="1" index="21"> + <chassis name="client" implement="MUST"/> + </method> + </class> + <class name="tunnel" handler="tunnel" index="110"> + <chassis name="server" implement="MAY"/> + <chassis name="client" implement="MAY"/> + <field name="headers" type="table"/> + <field name="proxy name" type="shortstr"/> + <field name="data name" type="shortstr"/> + <field name="durable" type="octet"/> + <field name="broadcast" type="octet"/> + <method name="request" content="1" index="10"> + <chassis name="server" implement="MUST"/> + <field name="meta data" type="table"/> + </method> + </class> + <class name="test" handler="channel" index="120"> + <chassis name="server" implement="MUST"/> + <chassis name="client" implement="SHOULD"/> + <method name="integer" synchronous="1" index="10"> + <chassis name="client" implement="MUST"/> + <chassis name="server" implement="MUST"/> + <response name="integer-ok"/> + <field name="integer 1" type="octet"/> + <field name="integer 2" type="short"/> + <field name="integer 3" type="long"/> + <field name="integer 4" type="longlong"/> + <field name="operation" type="octet"> + <assert check="enum"> + <value name="add"/> + <value name="min"/> + <value name="max"/> + </assert> + </field> + </method> + <method name="integer-ok" synchronous="1" index="11"> + <chassis name="client" implement="MUST"/> + <chassis name="server" implement="MUST"/> + <field name="result" type="longlong"/> + </method> + <method name="string" synchronous="1" index="20"> + <chassis name="client" implement="MUST"/> + <chassis name="server" implement="MUST"/> + <response name="string-ok"/> + <field name="string 1" type="shortstr"/> + <field name="string 2" type="longstr"/> + <field name="operation" type="octet"> + <assert check="enum"> + <value name="add"/> + <value name="min"/> + <value name="max"/> + </assert> + </field> + </method> + <method name="string-ok" synchronous="1" index="21"> + <chassis name="client" implement="MUST"/> + <chassis name="server" implement="MUST"/> + <field name="result" type="longstr"/> + </method> + <method name="table" synchronous="1" index="30"> + <chassis name="client" implement="MUST"/> + <chassis name="server" implement="MUST"/> + <response name="table-ok"/> + <field name="table" type="table"/> + <field name="integer op" type="octet"> + <assert check="enum"> + <value name="add"/> + <value name="min"/> + <value name="max"/> + </assert> + </field> + <field name="string op" type="octet"> + <assert check="enum"> + <value name="add"/> + <value name="min"/> + <value name="max"/> + </assert> + </field> + </method> + <method name="table-ok" synchronous="1" index="31"> + <chassis name="client" implement="MUST"/> + <chassis name="server" implement="MUST"/> + <field name="integer result" type="longlong"/> + <field name="string result" type="longstr"/> + </method> + <method name="content" synchronous="1" content="1" index="40"> + <chassis name="client" implement="MUST"/> + <chassis name="server" implement="MUST"/> + <response name="content-ok"/> + </method> + <method name="content-ok" synchronous="1" content="1" index="41"> + <chassis name="client" implement="MUST"/> + <chassis name="server" implement="MUST"/> + <field name="content checksum" type="long"/> + </method> + </class> +</amqp> diff --git a/python/qpid/specs/amqp-0-8-stripped.xml b/python/qpid/specs/amqp-0-8-stripped.xml deleted file mode 100644 index efd6821e3f..0000000000 --- a/python/qpid/specs/amqp-0-8-stripped.xml +++ /dev/null @@ -1,1372 +0,0 @@ -<?xml version="1.0"?> - -<!-- -(c) Copyright JPMorgan Chase Bank & Co., Cisco Systems, Inc., Envoy -Technologies Inc., iMatix Corporation, IONA\ufffd Technologies, Red -Hat, Inc., TWIST Process Innovations, and 29West Inc. 2006. - -Copyright (c) 2009 AMQP Working Group. - -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 0.80" major="8" port="5672" minor="0"> -AMQ Protocol 0.80 <constant name="frame method" value="1"/> - <constant name="frame header" value="2"/> - <constant name="frame body" value="3"/> - <constant name="frame oob method" value="4"/> - <constant name="frame oob header" value="5"/> - <constant name="frame oob body" value="6"/> - <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"> -Indicates that the method completed successfully. This reply code is - reserved for future use - the current protocol design does not use - positive confirmation and reply codes are sent only in case of an - error. </constant> - <constant name="not delivered" class="soft error" value="310"> -The client asked for a specific message that is no longer available. - The message was delivered to another client, or was purged from the - queue for some other reason. </constant> - <constant name="content too large" class="soft error" value="311"> -The client attempted to transfer content larger than the server - could accept at the present time. The client may retry at a later - time. </constant> - <constant name="connection forced" class="hard error" value="320"> -An operator intervened to close the connection for some reason. - The client may retry at some later date. </constant> - <constant name="invalid path" class="hard error" value="402"> -The client tried to work with an unknown virtual host or cluster. </constant> - <constant name="access refused" class="soft error" value="403"> -The client attempted to work with a server entity to which it has - no due to security settings. </constant> - <constant name="not found" class="soft error" value="404"> -The client attempted to work with a server entity that does not exist. </constant> - <constant name="resource locked" class="soft error" value="405"> -The client attempted to work with a server entity to which it has - no access because another client is working with it. </constant> - <constant name="frame error" class="hard error" value="501"> -The client sent a malformed frame that the server could not decode. - This strongly implies a programming error in the client. </constant> - <constant name="syntax error" class="hard error" value="502"> -The client sent a frame that contained illegal values for one or more - fields. This strongly implies a programming error in the client. </constant> - <constant name="command invalid" class="hard error" value="503"> -The client sent an invalid sequence of frames, attempting to perform - an operation that was considered invalid by the server. This usually - implies a programming error in the client. </constant> - <constant name="channel error" class="hard error" value="504"> -The client attempted to work with a channel that had not been - correctly opened. This most likely indicates a fault in the client - layer. </constant> - <constant name="resource error" class="hard error" value="506"> -The server could not complete the method because it lacked sufficient - resources. This may be due to the client creating too many of some - type of entity. </constant> - <constant name="not allowed" class="hard error" value="530"> -The client tried to work with some entity in a manner that is - prohibited by the server, due to security settings or by some other - criteria. </constant> - <constant name="not implemented" class="hard error" value="540"> -The client tried to use functionality that is not implemented in the - server. </constant> - <constant name="internal error" class="hard error" value="541"> -The server could not complete the method because of an internal error. - The server may require intervention by an operator in order to resume - normal operations. </constant> - <domain name="access ticket" type="short"> -access ticket granted by server <assert check="ne" value="0"/> - </domain> - <domain name="class id" type="short"/> - <domain name="consumer tag" type="shortstr"> -consumer tag <rule implement="MUST"> -The consumer tag is valid only within the channel from which the - consumer was created. I.e. a client MUST NOT create a consumer in - one channel and then use it in another. </rule> - </domain> - <domain name="delivery tag" type="longlong"> -server-assigned delivery tag <rule implement="MUST"> -The delivery tag is valid only within the channel from which the - message was received. I.e. a client MUST NOT receive a message on - one channel and then acknowledge it on another. </rule> - <rule implement="MUST"> -The server MUST NOT use a zero value for delivery tags. Zero is - reserved for client use, meaning "all messages so far received". </rule> - </domain> - <domain name="exchange name" type="shortstr"> -exchange name <assert check="length" value="127"/> - </domain> - <domain name="known hosts" type="shortstr"> -list of known hosts <rule implement="MAY"> -The server MAY leave this field empty if it knows of no other -hosts than itself. </rule> - </domain> - <domain name="method id" type="short"/> - <domain name="no ack" type="bit"> -no acknowledgement needed </domain> - <domain name="no local" type="bit"> -do not deliver own messages </domain> - <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"> - <rule implement="SHOULD"> -The properties SHOULD contain these fields: -"product", giving the name of the peer product, "version", giving -the name of the peer version, "platform", giving the name of the -operating system, "copyright", if appropriate, and "information", -giving other general information. </rule> - </domain> - <domain name="queue name" type="shortstr"> -queue name <assert check="length" value="127"/> - </domain> - <domain name="redelivered" type="bit"> -message is being redelivered <rule implement="SHOULD"> -The server SHOULD try to signal redelivered messages when it can. - When redelivering a message that was not successfully acknowledged, - the server SHOULD deliver it to the original client if possible. </rule> - <rule implement="MUST"> -The client MUST NOT rely on the redelivered field but MUST take it - as a hint that the message may already have been processed. A - fully robust client must be able to track duplicate received messages - on non-transacted, and locally-transacted channels. </rule> - </domain> - <domain name="reply code" type="short"> -reply code from server <assert check="notnull"/> - </domain> - <domain name="reply text" type="shortstr"> -localised reply text <assert check="notnull"/> - </domain> - <class name="connection" index="10" handler="connection"> -work with socket connections <chassis name="server" implement="MUST"/> - <chassis name="client" implement="MUST"/> - <method name="start" index="10" synchronous="1"> -start connection negotiation <rule implement="MUST"> -If the client cannot handle the protocol version suggested by the - server it MUST close the socket connection. </rule> - <rule implement="MUST"> -The server MUST provide a protocol version that is lower than or - equal to that requested by the client in the protocol header. If - the server cannot support the specified protocol it MUST NOT send - this method, but MUST close the socket connection. </rule> - <chassis name="client" implement="MUST"/> - <response name="start-ok"/> - <field name="version major" type="octet"> -protocol major version </field> - <field name="version minor" type="octet"> -protocol major version </field> - <field name="server properties" domain="peer properties"> -server properties </field> - <field name="mechanisms" type="longstr"> -available security mechanisms <see name="security mechanisms"/> - <assert check="notnull"/> - </field> - <field name="locales" type="longstr"> -available message locales <rule implement="MUST"> -All servers MUST support at least the en_US locale. </rule> - <assert check="notnull"/> - </field> - </method> - <method name="start-ok" index="11" synchronous="1"> -select security mechanism and locale <chassis name="server" implement="MUST"/> - <field name="client properties" domain="peer properties"> -client properties </field> - <field name="mechanism" type="shortstr"> -selected security mechanism <rule implement="SHOULD"> -The client SHOULD authenticate using the highest-level security - profile it can handle from the list provided by the server. </rule> - <rule implement="MUST"> -The mechanism field MUST contain one of the security mechanisms - proposed by the server in the Start method. If it doesn't, the - server MUST close the socket. </rule> - <assert check="notnull"/> - </field> - <field name="response" type="longstr"> -security response data <assert check="notnull"/> - </field> - <field name="locale" type="shortstr"> -selected message locale <assert check="notnull"/> - </field> - </method> - <method name="secure" index="20" synchronous="1"> -security mechanism challenge <chassis name="client" implement="MUST"/> - <response name="secure-ok"/> - <field name="challenge" type="longstr"> -security challenge data <see name="security mechanisms"/> - </field> - </method> - <method name="secure-ok" index="21" synchronous="1"> -security mechanism response <chassis name="server" implement="MUST"/> - <field name="response" type="longstr"> -security response data <assert check="notnull"/> - </field> - </method> - <method name="tune" index="30" synchronous="1"> -propose connection tuning parameters <chassis name="client" implement="MUST"/> - <response name="tune-ok"/> - <field name="channel max" type="short"> -proposed maximum channels </field> - <field name="frame max" type="long"> -proposed maximum frame size <rule implement="MUST"> -Until the frame-max has been negotiated, both peers MUST accept - frames of up to 4096 octets large. The minimum non-zero value for - the frame-max field is 4096. </rule> - </field> - <field name="heartbeat" type="short"> -desired heartbeat delay </field> - </method> - <method name="tune-ok" index="31" synchronous="1"> -negotiate connection tuning parameters <chassis name="server" implement="MUST"/> - <field name="channel max" type="short"> -negotiated maximum channels <rule implement="MAY"> -The server MAY ignore the channel-max value or MAY use it for - tuning its resource allocation. </rule> - <assert check="notnull"/> - <assert field="channel max" check="le" method="tune"/> - </field> - <field name="frame max" type="long"> -negotiated maximum frame size <rule implement="MUST"> -Until the frame-max has been negotiated, both peers must accept - frames of up to 4096 octets large. The minimum non-zero value for - the frame-max field is 4096. </rule> - </field> - <field name="heartbeat" type="short"> -desired heartbeat delay </field> - </method> - <method name="open" index="40" synchronous="1"> -open connection to virtual host <rule implement="MUST"> -The client MUST open the context before doing any work on the - connection. </rule> - <chassis name="server" implement="MUST"/> - <response name="open-ok"/> - <response name="redirect"/> - <field name="virtual host" domain="path"> -virtual host name <assert check="regexp" value="^[a-zA-Z0-9/-_]+$"/> - <rule implement="MUST"> -If the server supports multiple virtual hosts, it MUST enforce a - full separation of exchanges, queues, and all associated entities - per virtual host. An application, connected to a specific virtual - host, MUST NOT be able to access resources of another virtual host. </rule> - <rule implement="SHOULD"> -The server SHOULD verify that the client has permission to access - the specified virtual host. </rule> - <rule implement="MAY"> -The server MAY configure arbitrary limits per virtual host, such - as the number of each type of entity that may be used, per - connection and/or in total. </rule> - </field> - <field name="capabilities" type="shortstr"> -required capabilities </field> - <field name="insist" type="bit"> -insist on connecting to server <rule implement="SHOULD"> -When the client uses the insist option, the server SHOULD accept - the client connection unless it is technically unable to do so. </rule> - </field> - </method> - <method name="open-ok" index="41" synchronous="1"> -signal that the connection is ready <chassis name="client" implement="MUST"/> - <field name="known hosts" domain="known hosts"/> - </method> - <method name="redirect" index="50" synchronous="1"> -asks the client to use a different server <rule implement="SHOULD"> -When getting the Connection.Redirect method, the client SHOULD - reconnect to the host specified, and if that host is not present, - to any of the hosts specified in the known-hosts list. </rule> - <chassis name="client" implement="MAY"/> - <field name="host" type="shortstr"> -server to connect to <assert check="notnull"/> - </field> - <field name="known hosts" domain="known hosts"/> - </method> - <method name="close" index="60" synchronous="1"> -request a connection close <rule implement="MUST"> -After sending this method any received method except the Close-OK - method MUST be discarded. </rule> - <rule implement="MAY"> -The peer sending this method MAY use a counter or timeout to - detect failure of the other peer to respond correctly with - the Close-OK method. </rule> - <rule implement="MUST"> -When a server receives the Close method from a client it MUST - delete all server-side resources associated with the client's - context. A client CANNOT reconnect to a context after sending - or receiving a Close method. </rule> - <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"> -failing method class </field> - <field name="method id" domain="method id"> -failing method ID </field> - </method> - <method name="close-ok" index="61" synchronous="1"> -confirm a connection close <rule implement="SHOULD"> -A peer that detects a socket closure without having received a - Close-Ok handshake method SHOULD log the error. </rule> - <chassis name="client" implement="MUST"/> - <chassis name="server" implement="MUST"/> - </method> - </class> - <class name="channel" index="20" handler="channel"> -work with channels <chassis name="server" implement="MUST"/> - <chassis name="client" implement="MUST"/> - <method name="open" index="10" synchronous="1"> -open a channel for use <rule implement="MUST"> -This method MUST NOT be called when the channel is already open. </rule> - <chassis name="server" implement="MUST"/> - <response name="open-ok"/> - <field name="out of band" type="shortstr"> -out-of-band settings <assert check="null"/> - </field> - </method> - <method name="open-ok" index="11" synchronous="1"> -signal that the channel is ready <chassis name="client" implement="MUST"/> - </method> - <method name="flow" index="20" synchronous="1"> -enable/disable flow from peer <rule implement="MAY"> -When a new channel is opened, it is active. Some applications - assume that channels are inactive until started. To emulate this - behaviour a client MAY open the channel, then pause it. </rule> - <rule implement="SHOULD"> -When sending content data in multiple frames, a peer SHOULD monitor - the channel for incoming methods and respond to a Channel.Flow as - rapidly as possible. </rule> - <rule implement="MAY"> -A peer MAY use the Channel.Flow method to throttle incoming content - data for internal reasons, for example, when exchangeing data over a - slower connection. </rule> - <rule implement="MAY"> -The peer that requests a Channel.Flow method MAY disconnect and/or - ban a peer that does not respect the request. </rule> - <chassis name="server" implement="MUST"/> - <chassis name="client" implement="MUST"/> - <response name="flow-ok"/> - <field name="active" type="bit"> -start/stop content frames </field> - </method> - <method name="flow-ok" index="21"> -confirm a flow method <chassis name="server" implement="MUST"/> - <chassis name="client" implement="MUST"/> - <field name="active" type="bit"> -current flow setting </field> - </method> - <method name="alert" index="30"> -send a non-fatal warning message <chassis name="client" implement="MUST"/> - <field name="reply code" domain="reply code"/> - <field name="reply text" domain="reply text"/> - <field name="details" type="table"> -detailed information for warning </field> - </method> - <method name="close" index="40" synchronous="1"> -request a channel close <rule implement="MUST"> -After sending this method any received method except - Channel.Close-OK MUST be discarded. </rule> - <rule implement="MAY"> -The peer sending this method MAY use a counter or timeout to detect - failure of the other peer to respond correctly with Channel.Close-OK.. </rule> - <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"> -failing method class </field> - <field name="method id" domain="method id"> -failing method ID </field> - </method> - <method name="close-ok" index="41" synchronous="1"> -confirm a channel close <rule implement="SHOULD"> -A peer that detects a socket closure without having received a - Channel.Close-Ok handshake method SHOULD log the error. </rule> - <chassis name="client" implement="MUST"/> - <chassis name="server" implement="MUST"/> - </method> - </class> - <class name="access" index="30" handler="connection"> -work with access tickets <chassis name="server" implement="MUST"/> - <chassis name="client" implement="MUST"/> - <method name="request" index="10" synchronous="1"> -request an access ticket <rule implement="MUST"> -The realm name MUST start with either "/data" (for application - resources) or "/admin" (for server administration resources). - If the realm starts with any other path, the server MUST raise - a connection exception with reply code 403 (access refused). </rule> - <rule implement="MUST"> -The server MUST implement the /data realm and MAY implement the - /admin realm. The mapping of resources to realms is not - defined in the protocol - this is a server-side configuration - issue. </rule> - <chassis name="server" implement="MUST"/> - <response name="request-ok"/> - <field name="realm" domain="path"> -name of requested realm <rule implement="MUST"> -If the specified realm is not known to the server, the server - must raise a channel exception with reply code 402 (invalid - path). </rule> - </field> - <field name="exclusive" type="bit"> -request exclusive access </field> - <field name="passive" type="bit"> -request passive access </field> - <field name="active" type="bit"> -request active access </field> - <field name="write" type="bit"> -request write access </field> - <field name="read" type="bit"> -request read access </field> - </method> - <method name="request-ok" index="11" synchronous="1"> -grant access to server resources <rule implement="MUST"> -The client MUST NOT use access tickets except within the same - channel as originally granted. </rule> - <rule implement="MUST"> -The server MUST isolate access tickets per channel and treat an - attempt by a client to mix these as a connection exception. </rule> - <chassis name="client" implement="MUST"/> - <field name="ticket" domain="access ticket"/> - </method> - </class> - <class name="exchange" index="40" handler="channel"> -work with exchanges <chassis name="server" implement="MUST"/> - <chassis name="client" implement="MUST"/> - <rule implement="MUST"> - <test> -amq_exchange_19 </test> -The server MUST implement the direct and fanout exchange types, and - predeclare the corresponding exchanges named amq.direct and amq.fanout - in each virtual host. The server MUST also predeclare a direct - exchange to act as the default exchange for content Publish methods - and for default queue bindings. </rule> - <rule implement="SHOULD"> - <test> -amq_exchange_20 </test> -The server SHOULD implement the topic exchange type, and predeclare - the corresponding exchange named amq.topic in each virtual host. </rule> - <rule implement="MAY"> - <test> -amq_exchange_21 </test> -The server MAY implement the system exchange type, and predeclare the - corresponding exchanges named amq.system in each virtual host. If the - client attempts to bind a queue to the system exchange, the server - MUST raise a connection exception with reply code 507 (not allowed). </rule> - <rule implement="MUST"> - <test> -amq_exchange_22 </test> -The default exchange MUST be defined as internal, and be inaccessible - to the client except by specifying an empty exchange name in a content - Publish method. That is, the server MUST NOT let clients make explicit - bindings to this exchange. </rule> - <method name="declare" index="10" synchronous="1"> -declare exchange, create if needed <rule implement="SHOULD"> - <test> -amq_exchange_23 </test> -The server SHOULD support a minimum of 16 exchanges per virtual host - and ideally, impose no limit except as defined by available resources. </rule> - <chassis name="server" implement="MUST"/> - <response name="declare-ok"/> - <field name="ticket" domain="access ticket"> - <rule implement="MUST"> -The client MUST provide a valid access ticket giving "active" access - to the realm in which the exchange exists or will be created, or - "passive" access if the if-exists flag is set. </rule> - </field> - <field name="exchange" domain="exchange name"> - <rule implement="MUST"> - <test> -amq_exchange_15 </test> -Exchange names starting with "amq." are reserved for predeclared - and standardised exchanges. If the client attempts to create an - exchange starting with "amq.", the server MUST raise a channel - exception with reply code 403 (access refused). </rule> - <assert check="regexp" value="^[a-zA-Z0-9-_.:]+$"/> - </field> - <field name="type" type="shortstr"> -exchange type <rule implement="MUST"> - <test> -amq_exchange_16 </test> -If the exchange already exists with a different type, the server - MUST raise a connection exception with a reply code 507 (not allowed). </rule> - <rule implement="MUST"> - <test> -amq_exchange_18 </test> -If the server does not support the requested exchange type it MUST - raise a connection exception with a reply code 503 (command invalid). </rule> - <assert check="regexp" value="^[a-zA-Z0-9-_.:]+$"/> - </field> - <field name="passive" type="bit"> -do not create exchange <rule implement="MUST"> - <test> -amq_exchange_05 </test> -If set, and the exchange does not already exist, the server MUST - raise a channel exception with reply code 404 (not found). </rule> - </field> - <field name="durable" type="bit"> -request a durable exchange <rule implement="MUST"> - <test> -amq_exchange_24 </test> -The server MUST support both durable and transient exchanges. </rule> - <rule implement="MUST"> -The server MUST ignore the durable field if the exchange already - exists. </rule> - </field> - <field name="auto delete" type="bit"> -auto-delete when unused <rule implement="SHOULD"> - <test> -amq_exchange_02 </test> -The server SHOULD allow for a reasonable delay between the point - when it determines that an exchange is not being used (or no longer - used), and the point when it deletes the exchange. At the least it - must allow a client to create an exchange and then bind a queue to - it, with a small but non-zero delay between these two actions. </rule> - <rule implement="MUST"> - <test> -amq_exchange_25 </test> -The server MUST ignore the auto-delete field if the exchange already - exists. </rule> - </field> - <field name="internal" type="bit"> -create internal exchange </field> - <field name="nowait" type="bit"> -do not send a reply method </field> - <field name="arguments" type="table"> -arguments for declaration </field> - </method> - <method name="declare-ok" index="11" synchronous="1"> -confirms an exchange declaration <chassis name="client" implement="MUST"/> - </method> - <method name="delete" index="20" synchronous="1"> -delete an exchange <chassis name="server" implement="MUST"/> - <response name="delete-ok"/> - <field name="ticket" domain="access ticket"> - <rule implement="MUST"> -The client MUST provide a valid access ticket giving "active" - access rights to the exchange's access realm. </rule> - </field> - <field name="exchange" domain="exchange name"> - <rule implement="MUST"> - <test> -amq_exchange_11 </test> -The exchange MUST exist. Attempting to delete a non-existing exchange - causes a channel exception. </rule> - <assert check="notnull"/> - </field> - <field name="if unused" type="bit"> -delete only if unused <rule implement="SHOULD"> - <test> -amq_exchange_12 </test> -If set, the server SHOULD delete the exchange but only if it has - no queue bindings. </rule> - <rule implement="SHOULD"> - <test> -amq_exchange_13 </test> -If set, the server SHOULD raise a channel exception if the exchange is in - use. </rule> - </field> - <field name="nowait" type="bit"> -do not send a reply method </field> - </method> - <method name="delete-ok" index="21" synchronous="1"> -confirm deletion of an exchange <chassis name="client" implement="MUST"/> - </method> - <method name="bound" index="22" synchronous="1"> - <chassis name="server" implement="SHOULD"/> - <field name="exchange" domain="exchange name"/> - <field name="routing key" type="shortstr"> -Message routing key </field> - <field name="queue" domain="queue name"/> - </method> - <method name="bound-ok" index="23" synchronous="1"> - <field name="reply code" domain="reply code"/> - <field name="reply text" domain="reply text"/> - <chassis name="client" implement="SHOULD"/> - </method> - </class> - <class name="queue" index="50" handler="channel"> -work with queues <chassis name="server" implement="MUST"/> - <chassis name="client" implement="MUST"/> - <rule implement="MUST"> - <test> -amq_queue_33 </test> -A server MUST allow any content class to be sent to any queue, in any - mix, and queue and delivery these content classes independently. Note - that all methods that fetch content off queues are specific to a given - content class. </rule> - <method name="declare" index="10" synchronous="1"> -declare queue, create if needed <rule implement="MUST"> - <test> -amq_queue_34 </test> -The server MUST create a default binding for a newly-created queue - to the default exchange, which is an exchange of type 'direct'. </rule> - <rule implement="SHOULD"> - <test> -amq_queue_35 </test> -The server SHOULD support a minimum of 256 queues per virtual host - and ideally, impose no limit except as defined by available resources. </rule> - <chassis name="server" implement="MUST"/> - <response name="declare-ok"/> - <field name="ticket" domain="access ticket"/> - <field name="queue" domain="queue name"> - <rule implement="MAY"> - <test> -amq_queue_10 </test> -The queue name MAY be empty, in which case the server MUST create - a new queue with a unique generated name and return this to the - client in the Declare-Ok method. </rule> - <rule implement="MUST"> - <test> -amq_queue_32 </test> -Queue names starting with "amq." are reserved for predeclared and - standardised server queues. If the queue name starts with "amq." - and the passive option is zero, the server MUST raise a connection - exception with reply code 403 (access refused). </rule> - <assert check="regexp" value="^[a-zA-Z0-9-_.:]*$"/> - </field> - <field name="passive" type="bit"> -do not create queue <rule implement="MUST"> - <test> -amq_queue_05 </test> -If set, and the queue does not already exist, the server MUST - respond with a reply code 404 (not found) and raise a channel - exception. </rule> - </field> - <field name="durable" type="bit"> -request a durable queue <rule implement="MUST"> - <test> -amq_queue_03 </test> -The server MUST recreate the durable queue after a restart. </rule> - <rule implement="MUST"> - <test> -amq_queue_36 </test> -The server MUST support both durable and transient queues. </rule> - <rule implement="MUST"> - <test> -amq_queue_37 </test> -The server MUST ignore the durable field if the queue already - exists. </rule> - </field> - <field name="exclusive" type="bit"> -request an exclusive queue <rule implement="MUST"> - <test> -amq_queue_38 </test> -The server MUST support both exclusive (private) and non-exclusive - (shared) queues. </rule> - <rule implement="MUST"> - <test> -amq_queue_04 </test> -The server MUST raise a channel exception if 'exclusive' is specified - and the queue already exists and is owned by a different connection. </rule> - </field> - <field name="auto delete" type="bit"> -auto-delete queue when unused <rule implement="SHOULD"> - <test> -amq_queue_02 </test> -The server SHOULD allow for a reasonable delay between the point - when it determines that a queue is not being used (or no longer - used), and the point when it deletes the queue. At the least it - must allow a client to create a queue and then create a consumer - to read from it, with a small but non-zero delay between these - two actions. The server should equally allow for clients that may - be disconnected prematurely, and wish to re-consume from the same - queue without losing messages. We would recommend a configurable - timeout, with a suitable default value being one minute. </rule> - <rule implement="MUST"> - <test> -amq_queue_31 </test> -The server MUST ignore the auto-delete field if the queue already - exists. </rule> - </field> - <field name="nowait" type="bit"> -do not send a reply method </field> - <field name="arguments" type="table"> -arguments for declaration </field> - </method> - <method name="declare-ok" index="11" synchronous="1"> -confirms a queue definition <chassis name="client" implement="MUST"/> - <field name="queue" domain="queue name"> - <assert check="notnull"/> - </field> - <field name="message count" type="long"> -number of messages in queue </field> - <field name="consumer count" type="long"> -number of consumers </field> - </method> - <method name="bind" index="20" synchronous="1"> -bind queue to an exchange <rule implement="MUST"> - <test> -amq_queue_25 </test> -A server MUST allow ignore duplicate bindings - that is, two or - more bind methods for a specific queue, with identical arguments - - without treating these as an error. </rule> - <rule implement="MUST"> - <test> -amq_queue_39 </test> -If a bind fails, the server MUST raise a connection exception. </rule> - <rule implement="MUST"> - <test> -amq_queue_12 </test> -The server MUST NOT allow a durable queue to bind to a transient - exchange. If the client attempts this the server MUST raise a - channel exception. </rule> - <rule implement="SHOULD"> - <test> -amq_queue_13 </test> -Bindings for durable queues are automatically durable and the - server SHOULD restore such bindings after a server restart. </rule> - <rule implement="MUST"> - <test> -amq_queue_17 </test> -If the client attempts to an exchange that was declared as internal, - the server MUST raise a connection exception with reply code 530 - (not allowed). </rule> - <rule implement="SHOULD"> - <test> -amq_queue_40 </test> -The server SHOULD support at least 4 bindings per queue, and - ideally, impose no limit except as defined by available resources. </rule> - <chassis name="server" implement="MUST"/> - <response name="bind-ok"/> - <field name="ticket" domain="access ticket"/> - <field name="queue" domain="queue name"/> - <field name="exchange" domain="exchange name"> -The name of the exchange to bind to. <rule implement="MUST"> - <test> -amq_queue_14 </test> -If the exchange does not exist the server MUST raise a channel - exception with reply code 404 (not found). </rule> - </field> - <field name="routing key" type="shortstr"> -message routing key </field> - <field name="nowait" type="bit"> -do not send a reply method </field> - <field name="arguments" type="table"> -arguments for binding </field> - </method> - <method name="bind-ok" index="21" synchronous="1"> -confirm bind successful <chassis name="client" implement="MUST"/> - </method> - <method name="purge" index="30" synchronous="1"> -purge a queue <rule implement="MUST"> - <test> -amq_queue_15 </test> -A call to purge MUST result in an empty queue. </rule> - <rule implement="MUST"> - <test> -amq_queue_41 </test> -On transacted channels the server MUST not purge messages that have - already been sent to a client but not yet acknowledged. </rule> - <rule implement="MAY"> - <test> -amq_queue_42 </test> -The server MAY implement a purge queue or log that allows system - administrators to recover accidentally-purged messages. The server - SHOULD NOT keep purged messages in the same storage spaces as the - live messages since the volumes of purged messages may get very - large. </rule> - <chassis name="server" implement="MUST"/> - <response name="purge-ok"/> - <field name="ticket" domain="access ticket"> - <rule implement="MUST"> -The client MUST provide a valid access ticket giving "read" access - rights to the queue's access realm. Note that purging a queue is - equivalent to reading all messages and discarding them. </rule> - </field> - <field name="queue" domain="queue name"/> - <field name="nowait" type="bit"> -do not send a reply method </field> - </method> - <method name="purge-ok" index="31" synchronous="1"> -confirms a queue purge <chassis name="client" implement="MUST"/> - <field name="message count" type="long"> -number of messages purged </field> - </method> - <method name="delete" index="40" synchronous="1"> -delete a queue <rule implement="SHOULD"> - <test> -amq_queue_43 </test> -The server SHOULD use a dead-letter queue to hold messages that - were pending on a deleted queue, and MAY provide facilities for - a system administrator to move these messages back to an active - queue. </rule> - <chassis name="server" implement="MUST"/> - <response name="delete-ok"/> - <field name="ticket" domain="access ticket"/> - <field name="queue" domain="queue name"/> - <field name="if unused" type="bit"> -delete only if unused <rule implement="MUST"> - <test> -amq_queue_29 </test> - <test> -amq_queue_30 </test> -The server MUST respect the if-unused flag when deleting a queue. </rule> - </field> - <field name="if empty" type="bit"> -delete only if empty <test> -amq_queue_27 </test> - </field> - <field name="nowait" type="bit"> -do not send a reply method </field> - </method> - <method name="delete-ok" index="41" synchronous="1"> -confirm deletion of a queue <chassis name="client" implement="MUST"/> - <field name="message count" type="long"> -number of messages purged </field> - </method> - </class> - <class name="basic" index="60" handler="channel"> -work with basic content <chassis name="server" implement="MUST"/> - <chassis name="client" implement="MAY"/> - <field name="content type" type="shortstr"> -MIME content type </field> - <field name="content encoding" type="shortstr"> -MIME content encoding </field> - <field name="headers" type="table"> -Message header field table </field> - <field name="delivery mode" type="octet"> -Non-persistent (1) or persistent (2) </field> - <field name="priority" type="octet"> -The message priority, 0 to 9 </field> - <field name="correlation id" type="shortstr"> -The application correlation identifier </field> - <field name="reply to" type="shortstr"> -The destination to reply to </field> - <field name="expiration" type="shortstr"> -Message expiration specification </field> - <field name="message id" type="shortstr"> -The application message identifier </field> - <field name="timestamp" type="timestamp"> -The message timestamp </field> - <field name="type" type="shortstr"> -The message type name </field> - <field name="user id" type="shortstr"> -The creating user id </field> - <field name="app id" type="shortstr"> -The creating application id </field> - <field name="cluster id" type="shortstr"> -Intra-cluster routing identifier </field> - <method name="qos" index="10" synchronous="1"> -specify quality of service <chassis name="server" implement="MUST"/> - <response name="qos-ok"/> - <field name="prefetch size" type="long"> -prefetch window in octets </field> - <field name="prefetch count" type="short"> -prefetch window in messages </field> - <field name="global" type="bit"> -apply to entire connection </field> - </method> - <method name="qos-ok" index="11" synchronous="1"> -confirm the requested qos <chassis name="client" implement="MUST"/> - </method> - <method name="consume" index="20" synchronous="1"> -start a queue consumer <chassis name="server" implement="MUST"/> - <response name="consume-ok"/> - <field name="ticket" domain="access ticket"/> - <field name="queue" domain="queue name"/> - <field name="consumer tag" domain="consumer tag"/> - <field name="no local" domain="no local"/> - <field name="no ack" domain="no ack"/> - <field name="exclusive" type="bit"> -request exclusive access </field> - <field name="nowait" type="bit"> -do not send a reply method </field> - <field name="arguments" type="table"/> - </method> - <method name="consume-ok" index="21" synchronous="1"> -confirm a new consumer <chassis name="client" implement="MUST"/> - <field name="consumer tag" domain="consumer tag"/> - </method> - <method name="cancel" index="30" synchronous="1"> -end a queue consumer <chassis name="server" implement="MUST"/> - <response name="cancel-ok"/> - <field name="consumer tag" domain="consumer tag"/> - <field name="nowait" type="bit"> -do not send a reply method </field> - </method> - <method name="cancel-ok" index="31" synchronous="1"> -confirm a cancelled consumer <chassis name="client" implement="MUST"/> - <field name="consumer tag" domain="consumer tag"/> - </method> - <method name="publish" content="1" index="40"> -publish a message <chassis name="server" implement="MUST"/> - <field name="ticket" domain="access ticket"/> - <field name="exchange" domain="exchange name"/> - <field name="routing key" type="shortstr"> -Message routing key </field> - <field name="mandatory" type="bit"> -indicate mandatory routing </field> - <field name="immediate" type="bit"> -request immediate delivery </field> - </method> - <method name="return" content="1" index="50"> -return a failed message <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" type="shortstr"> -Message routing key </field> - </method> - <method name="deliver" content="1" index="60"> -notify the client of a consumer message <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" type="shortstr"> -Message routing key </field> - </method> - <method name="get" index="70" synchronous="1"> -direct access to a queue <response name="get-ok"/> - <response name="get-empty"/> - <chassis name="server" implement="MUST"/> - <field name="ticket" domain="access ticket"/> - <field name="queue" domain="queue name"/> - <field name="no ack" domain="no ack"/> - </method> - <method name="get-ok" content="1" index="71" synchronous="1"> -provide client with a message <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" type="shortstr"> -Message routing key </field> - <field name="message count" type="long"> -number of messages pending </field> - </method> - <method name="get-empty" index="72" synchronous="1"> -indicate no messages available <chassis name="client" implement="MAY"/> - <field name="cluster id" type="shortstr"> -Cluster id </field> - </method> - <method name="ack" index="80"> -acknowledge one or more messages <chassis name="server" implement="MUST"/> - <field name="delivery tag" domain="delivery tag"/> - <field name="multiple" type="bit"> -acknowledge multiple messages </field> - </method> - <method name="reject" index="90"> -reject an incoming message <chassis name="server" implement="MUST"/> - <field name="delivery tag" domain="delivery tag"/> - <field name="requeue" type="bit"> -requeue the message </field> - </method> - <method name="recover" index="100"> -redeliver unacknowledged messages <chassis name="server" implement="MUST"/> - <field name="requeue" type="bit"> -requeue the message </field> - <response name="recover-ok"/> - </method> - <method name="recover-ok" index="101" synchronous="1"> -confirm a successful recover <chassis name="client" implement="MUST"/> - </method> - </class> - <class name="file" index="70" handler="channel"> -work with file content <chassis name="server" implement="MAY"/> - <chassis name="client" implement="MAY"/> - <field name="content type" type="shortstr"> -MIME content type </field> - <field name="content encoding" type="shortstr"> -MIME content encoding </field> - <field name="headers" type="table"> -Message header field table </field> - <field name="priority" type="octet"> -The message priority, 0 to 9 </field> - <field name="reply to" type="shortstr"> -The destination to reply to </field> - <field name="message id" type="shortstr"> -The application message identifier </field> - <field name="filename" type="shortstr"> -The message filename </field> - <field name="timestamp" type="timestamp"> -The message timestamp </field> - <field name="cluster id" type="shortstr"> -Intra-cluster routing identifier </field> - <method name="qos" index="10" synchronous="1"> -specify quality of service <chassis name="server" implement="MUST"/> - <response name="qos-ok"/> - <field name="prefetch size" type="long"> -prefetch window in octets </field> - <field name="prefetch count" type="short"> -prefetch window in messages </field> - <field name="global" type="bit"> -apply to entire connection </field> - </method> - <method name="qos-ok" index="11" synchronous="1"> -confirm the requested qos <chassis name="client" implement="MUST"/> - </method> - <method name="consume" index="20" synchronous="1"> -start a queue consumer <chassis name="server" implement="MUST"/> - <response name="consume-ok"/> - <field name="ticket" domain="access ticket"/> - <field name="queue" domain="queue name"/> - <field name="consumer tag" domain="consumer tag"/> - <field name="no local" domain="no local"/> - <field name="no ack" domain="no ack"/> - <field name="exclusive" type="bit"> -request exclusive access </field> - <field name="nowait" type="bit"> -do not send a reply method </field> - </method> - <method name="consume-ok" index="21" synchronous="1"> -confirm a new consumer <chassis name="client" implement="MUST"/> - <field name="consumer tag" domain="consumer tag"/> - </method> - <method name="cancel" index="30" synchronous="1"> -end a queue consumer <chassis name="server" implement="MUST"/> - <response name="cancel-ok"/> - <field name="consumer tag" domain="consumer tag"/> - <field name="nowait" type="bit"> -do not send a reply method </field> - </method> - <method name="cancel-ok" index="31" synchronous="1"> -confirm a cancelled consumer <chassis name="client" implement="MUST"/> - <field name="consumer tag" domain="consumer tag"/> - </method> - <method name="open" index="40" synchronous="1"> -request to start staging <response name="open-ok"/> - <chassis name="server" implement="MUST"/> - <chassis name="client" implement="MUST"/> - <field name="identifier" type="shortstr"> -staging identifier </field> - <field name="content size" type="longlong"> -message content size </field> - </method> - <method name="open-ok" index="41" synchronous="1"> -confirm staging ready <response name="stage"/> - <chassis name="server" implement="MUST"/> - <chassis name="client" implement="MUST"/> - <field name="staged size" type="longlong"> -already staged amount </field> - </method> - <method name="stage" content="1" index="50"> -stage message content <chassis name="server" implement="MUST"/> - <chassis name="client" implement="MUST"/> - </method> - <method name="publish" index="60"> -publish a message <chassis name="server" implement="MUST"/> - <field name="ticket" domain="access ticket"/> - <field name="exchange" domain="exchange name"/> - <field name="routing key" type="shortstr"> -Message routing key </field> - <field name="mandatory" type="bit"> -indicate mandatory routing </field> - <field name="immediate" type="bit"> -request immediate delivery </field> - <field name="identifier" type="shortstr"> -staging identifier </field> - </method> - <method name="return" content="1" index="70"> -return a failed message <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" type="shortstr"> -Message routing key </field> - </method> - <method name="deliver" index="80"> -notify the client of a consumer message <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" type="shortstr"> -Message routing key </field> - <field name="identifier" type="shortstr"> -staging identifier </field> - </method> - <method name="ack" index="90"> -acknowledge one or more messages <chassis name="server" implement="MUST"/> - <field name="delivery tag" domain="delivery tag"/> - <field name="multiple" type="bit"> -acknowledge multiple messages </field> - </method> - <method name="reject" index="100"> -reject an incoming message <chassis name="server" implement="MUST"/> - <field name="delivery tag" domain="delivery tag"/> - <field name="requeue" type="bit"> -requeue the message </field> - </method> - </class> - <class name="stream" index="80" handler="channel"> -work with streaming content <chassis name="server" implement="MAY"/> - <chassis name="client" implement="MAY"/> - <field name="content type" type="shortstr"> -MIME content type </field> - <field name="content encoding" type="shortstr"> -MIME content encoding </field> - <field name="headers" type="table"> -Message header field table </field> - <field name="priority" type="octet"> -The message priority, 0 to 9 </field> - <field name="timestamp" type="timestamp"> -The message timestamp </field> - <method name="qos" index="10" synchronous="1"> -specify quality of service <chassis name="server" implement="MUST"/> - <response name="qos-ok"/> - <field name="prefetch size" type="long"> -prefetch window in octets </field> - <field name="prefetch count" type="short"> -prefetch window in messages </field> - <field name="consume rate" type="long"> -transfer rate in octets/second </field> - <field name="global" type="bit"> -apply to entire connection </field> - </method> - <method name="qos-ok" index="11" synchronous="1"> -confirm the requested qos <chassis name="client" implement="MUST"/> - </method> - <method name="consume" index="20" synchronous="1"> -start a queue consumer <chassis name="server" implement="MUST"/> - <response name="consume-ok"/> - <field name="ticket" domain="access ticket"/> - <field name="queue" domain="queue name"/> - <field name="consumer tag" domain="consumer tag"/> - <field name="no local" domain="no local"/> - <field name="exclusive" type="bit"> -request exclusive access </field> - <field name="nowait" type="bit"> -do not send a reply method </field> - </method> - <method name="consume-ok" index="21" synchronous="1"> -confirm a new consumer <chassis name="client" implement="MUST"/> - <field name="consumer tag" domain="consumer tag"/> - </method> - <method name="cancel" index="30" synchronous="1"> -end a queue consumer <chassis name="server" implement="MUST"/> - <response name="cancel-ok"/> - <field name="consumer tag" domain="consumer tag"/> - <field name="nowait" type="bit"> -do not send a reply method </field> - </method> - <method name="cancel-ok" index="31" synchronous="1"> -confirm a cancelled consumer <chassis name="client" implement="MUST"/> - <field name="consumer tag" domain="consumer tag"/> - </method> - <method name="publish" content="1" index="40"> -publish a message <chassis name="server" implement="MUST"/> - <field name="ticket" domain="access ticket"/> - <field name="exchange" domain="exchange name"/> - <field name="routing key" type="shortstr"> -Message routing key </field> - <field name="mandatory" type="bit"> -indicate mandatory routing </field> - <field name="immediate" type="bit"> -request immediate delivery </field> - </method> - <method name="return" content="1" index="50"> -return a failed message <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" type="shortstr"> -Message routing key </field> - </method> - <method name="deliver" content="1" index="60"> -notify the client of a consumer message <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" handler="channel"> -work with standard transactions <rule implement="SHOULD"> -An client using standard transactions SHOULD be able to track all - messages received within a reasonable period, and thus detect and - reject duplicates of the same message. It SHOULD NOT pass these to - the application layer. </rule> - <chassis name="server" implement="SHOULD"/> - <chassis name="client" implement="MAY"/> - <method name="select" index="10" synchronous="1"> -select standard transaction mode <chassis name="server" implement="MUST"/> - <response name="select-ok"/> - </method> - <method name="select-ok" index="11" synchronous="1"> -confirm transaction mode <chassis name="client" implement="MUST"/> - </method> - <method name="commit" index="20" synchronous="1"> -commit the current transaction <chassis name="server" implement="MUST"/> - <response name="commit-ok"/> - </method> - <method name="commit-ok" index="21" synchronous="1"> -confirm a successful commit <chassis name="client" implement="MUST"/> - </method> - <method name="rollback" index="30" synchronous="1"> -abandon the current transaction <chassis name="server" implement="MUST"/> - <response name="rollback-ok"/> - </method> - <method name="rollback-ok" index="31" synchronous="1"> -confirm a successful rollback <chassis name="client" implement="MUST"/> - </method> - </class> - <class name="dtx" index="100" handler="channel"> -work with distributed transactions <chassis name="server" implement="MAY"/> - <chassis name="client" implement="MAY"/> - <method name="select" index="10" synchronous="1"> -select standard transaction mode <chassis name="server" implement="MUST"/> - <response name="select-ok"/> - </method> - <method name="select-ok" index="11" synchronous="1"> -confirm transaction mode <chassis name="client" implement="MUST"/> - </method> - <method name="start" index="20" synchronous="1"> -start a new distributed transaction <chassis name="server" implement="MAY"/> - <response name="start-ok"/> - <field name="dtx identifier" type="shortstr"> -transaction identifier <assert check="notnull"/> - </field> - </method> - <method name="start-ok" index="21" synchronous="1"> -confirm the start of a new distributed transaction <chassis name="client" implement="MUST"/> - </method> - </class> - <class name="tunnel" index="110" handler="tunnel"> -methods for protocol tunneling. <chassis name="server" implement="MAY"/> - <chassis name="client" implement="MAY"/> - <field name="headers" type="table"> -Message header field table </field> - <field name="proxy name" type="shortstr"> -The identity of the tunnelling proxy </field> - <field name="data name" type="shortstr"> -The name or type of the message being tunnelled </field> - <field name="durable" type="octet"> -The message durability indicator </field> - <field name="broadcast" type="octet"> -The message broadcast mode </field> - <method name="request" content="1" index="10"> -sends a tunnelled method <chassis name="server" implement="MUST"/> - <field name="meta data" type="table"> -meta data for the tunnelled block </field> - </method> - </class> - <class name="test" index="120" handler="channel"> -test functional primitives of the implementation <chassis name="server" implement="MUST"/> - <chassis name="client" implement="SHOULD"/> - <method name="integer" index="10" synchronous="1"> -test integer handling <chassis name="client" implement="MUST"/> - <chassis name="server" implement="MUST"/> - <response name="integer-ok"/> - <field name="integer 1" type="octet"> -octet test value </field> - <field name="integer 2" type="short"> -short test value </field> - <field name="integer 3" type="long"> -long test value </field> - <field name="integer 4" type="longlong"> -long-long test value </field> - <field name="operation" type="octet"> -operation to test <assert check="enum"> - <value name="add"> -return sum of test values </value> - <value name="min"> -return lowest of test values </value> - <value name="max"> -return highest of test values </value> - </assert> - </field> - </method> - <method name="integer-ok" index="11" synchronous="1"> -report integer test result <chassis name="client" implement="MUST"/> - <chassis name="server" implement="MUST"/> - <field name="result" type="longlong"> -result value </field> - </method> - <method name="string" index="20" synchronous="1"> -test string handling <chassis name="client" implement="MUST"/> - <chassis name="server" implement="MUST"/> - <response name="string-ok"/> - <field name="string 1" type="shortstr"> -short string test value </field> - <field name="string 2" type="longstr"> -long string test value </field> - <field name="operation" type="octet"> -operation to test <assert check="enum"> - <value name="add"> -return concatentation of test strings </value> - <value name="min"> -return shortest of test strings </value> - <value name="max"> -return longest of test strings </value> - </assert> - </field> - </method> - <method name="string-ok" index="21" synchronous="1"> -report string test result <chassis name="client" implement="MUST"/> - <chassis name="server" implement="MUST"/> - <field name="result" type="longstr"> -result value </field> - </method> - <method name="table" index="30" synchronous="1"> -test field table handling <chassis name="client" implement="MUST"/> - <chassis name="server" implement="MUST"/> - <response name="table-ok"/> - <field name="table" type="table"> -field table of test values </field> - <field name="integer op" type="octet"> -operation to test on integers <assert check="enum"> - <value name="add"> -return sum of numeric field values </value> - <value name="min"> -return min of numeric field values </value> - <value name="max"> -return max of numeric field values </value> - </assert> - </field> - <field name="string op" type="octet"> -operation to test on strings <assert check="enum"> - <value name="add"> -return concatenation of string field values </value> - <value name="min"> -return shortest of string field values </value> - <value name="max"> -return longest of string field values </value> - </assert> - </field> - </method> - <method name="table-ok" index="31" synchronous="1"> -report table test result <chassis name="client" implement="MUST"/> - <chassis name="server" implement="MUST"/> - <field name="integer result" type="longlong"> -integer result value </field> - <field name="string result" type="longstr"> -string result value </field> - </method> - <method name="content" content="1" index="40" synchronous="1"> -test content handling <chassis name="client" implement="MUST"/> - <chassis name="server" implement="MUST"/> - <response name="content-ok"/> - </method> - <method name="content-ok" content="1" index="41" synchronous="1"> -report content test result <chassis name="client" implement="MUST"/> - <chassis name="server" implement="MUST"/> - <field name="content checksum" type="long"> -content hash </field> - </method> - </class> -</amqp> diff --git a/python/qpid/specs/amqp-0-9-stripped.xml b/python/qpid/specs/amqp-0-9-qpid-stripped.xml index 8a223adc71..e0075870de 100644 --- a/python/qpid/specs/amqp-0-9-stripped.xml +++ b/python/qpid/specs/amqp-0-9-qpid-stripped.xml @@ -30,7 +30,7 @@ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --> -<amqp comment="AMQ Protocol version 0-9" major="0" port="5672" minor="9"> +<amqp major="0" minor="9" port="5672"> <constant name="frame-method" value="1"/> <constant name="frame-header" value="2"/> <constant name="frame-body" value="3"/> @@ -42,33 +42,30 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. <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="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="not-delivered" value="310" class="soft-error"/> + <constant name="content-too-large" value="311" class="soft-error"/> + <constant name="no-route" value="312" class="soft-error"/> + <constant name="no-consumers" value="313" class="soft-error"/> + <constant name="connection-forced" value="320" class="hard-error"/> + <constant name="invalid-path" value="402" class="hard-error"/> + <constant name="access-refused" value="403" class="soft-error"/> + <constant name="not-found" value="404" class="soft-error"/> + <constant name="resource-locked" value="405" class="soft-error"/> + <constant name="precondition-failed" value="406" class="soft-error"/> + <constant name="frame-error" value="501" class="hard-error"/> + <constant name="syntax-error" value="502" class="hard-error"/> + <constant name="command-invalid" value="503" class="hard-error"/> + <constant name="channel-error" value="504" class="hard-error"/> + <constant name="resource-error" value="506" class="hard-error"/> + <constant name="not-allowed" value="530" class="hard-error"/> + <constant name="not-implemented" value="540" class="hard-error"/> + <constant name="internal-error" value="541" class="hard-error"/> <domain name="access-ticket" type="short"> <assert check="ne" value="0"/> </domain> <domain name="class-id" type="short"/> <domain name="consumer-tag" type="shortstr"/> - <domain name="delivery-tag" type="longlong"> - <rule name="channel-local"/> - <rule name="non-zero"/> - </domain> + <domain name="delivery-tag" type="longlong"/> <domain name="exchange-name" type="shortstr"> <assert check="length" value="127"/> </domain> @@ -85,10 +82,7 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. <domain name="queue-name" type="shortstr"> <assert check="length" value="127"/> </domain> - <domain name="redelivered" type="bit"> - <rule name="implementation"/> - <rule name="hinting"/> - </domain> + <domain name="redelivered" type="bit"/> <domain name="reply-code" type="short"> <assert check="notnull"/> </domain> @@ -100,9 +94,7 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. <domain name="offset" type="longlong"/> <domain name="reference" type="longstr"/> <domain name="destination" type="shortstr"/> - <domain name="reject-code" type="short"> - <rule name="01"/> - </domain> + <domain name="reject-code" type="short"/> <domain name="reject-text" type="shortstr"/> <domain name="security-token" type="longstr"/> <domain name="bit" type="bit"/> @@ -114,36 +106,26 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. <domain name="longstr" type="longstr"/> <domain name="timestamp" type="timestamp"/> <domain name="table" type="table"/> - <class name="connection" index="10" handler="connection"> + <class name="connection" handler="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"/> + <method name="start" synchronous="1" index="10"> <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="server-properties" domain="peer-properties"/> <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"> + <method name="start-ok" synchronous="1" index="11"> <chassis name="server" implement="MUST"/> - <field name="client-properties" domain="peer-properties"> - <rule name="required-fields"/> - </field> + <field name="client-properties" domain="peer-properties"/> <field name="mechanism" domain="shortstr"> - <rule name="security"/> - <rule name="validity"/> <assert check="notnull"/> </field> <field name="response" domain="longstr"> @@ -153,67 +135,55 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. <assert check="notnull"/> </field> </method> - <method name="secure" index="20" synchronous="1"> + <method name="secure" synchronous="1" index="20"> <chassis name="client" implement="MUST"/> <response name="secure-ok"/> <field name="challenge" domain="longstr"/> </method> - <method name="secure-ok" index="21" synchronous="1"> + <method name="secure-ok" synchronous="1" index="21"> <chassis name="server" implement="MUST"/> <field name="response" domain="longstr"> <assert check="notnull"/> </field> </method> - <method name="tune" index="30" synchronous="1"> + <method name="tune" synchronous="1" index="30"> <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="frame-max" domain="long"/> <field name="heartbeat" domain="short"/> </method> - <method name="tune-ok" index="31" synchronous="1"> + <method name="tune-ok" synchronous="1" index="31"> <chassis name="server" implement="MUST"/> <field name="channel-max" domain="short"> - <rule name="upper-limit"/> <assert check="notnull"/> - <assert field="channel-max" check="le" method="tune"/> - </field> - <field name="frame-max" domain="long"> - <rule name="minimum"/> - <rule name="upper-limit"/> + <assert check="le" method="tune" field="channel-max"/> </field> + <field name="frame-max" domain="long"/> <field name="heartbeat" domain="short"/> </method> - <method name="open" index="40" synchronous="1"> + <method name="open" synchronous="1" index="40"> <chassis name="server" implement="MUST"/> <response name="open-ok"/> <response name="redirect"/> <field name="virtual-host" domain="path"> <assert check="regexp" value="^[a-zA-Z0-9/-_]+$"/> - <rule name="separation"/> - <rule name="security"/> </field> <field name="capabilities" domain="shortstr"/> - <field name="insist" domain="bit"> - <rule name="behaviour"/> - </field> + <field name="insist" domain="bit"/> </method> - <method name="open-ok" index="41" synchronous="1"> + <method name="open-ok" synchronous="1" index="41"> <chassis name="client" implement="MUST"/> <field name="known-hosts" domain="known-hosts"/> </method> - <method name="redirect" index="42" synchronous="1"> - <rule name="usage"/> + <method name="redirect" synchronous="1" index="42"> <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"/> + <method name="close" synchronous="1" index="50"> <chassis name="client" implement="MUST"/> <chassis name="server" implement="MUST"/> <response name="close-ok"/> @@ -222,32 +192,26 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. <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"/> + <method name="close-ok" synchronous="1" index="51"> <chassis name="client" implement="MUST"/> <chassis name="server" implement="MUST"/> </method> </class> - <class name="channel" index="20" handler="channel"> + <class name="channel" handler="channel" index="20"> <chassis name="server" implement="MUST"/> <chassis name="client" implement="MUST"/> - <method name="open" index="10" synchronous="1"> - <rule name="state" on-failure="channel-error"/> + <method name="open" synchronous="1" index="10"> <chassis name="server" implement="MUST"/> <response name="open-ok"/> <field name="out-of-band" domain="shortstr"> <assert check="null"/> </field> </method> - <method name="open-ok" index="11" synchronous="1"> + <method name="open-ok" synchronous="1" index="11"> <chassis name="client" implement="MUST"/> <field name="channel-id" domain="channel-id"/> </method> - <method name="flow" index="20" synchronous="1"> - <rule name="initial-state"/> - <rule name="bidirectional"/> - <rule name="throttling"/> - <rule name="expected-behaviour"/> + <method name="flow" synchronous="1" index="20"> <chassis name="server" implement="MUST"/> <chassis name="client" implement="MUST"/> <response name="flow-ok"/> @@ -258,8 +222,7 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. <chassis name="client" implement="MUST"/> <field name="active" domain="bit"/> </method> - <method name="close" index="40" synchronous="1"> - <rule name="stability"/> + <method name="close" synchronous="1" index="40"> <chassis name="client" implement="MUST"/> <chassis name="server" implement="MUST"/> <response name="close-ok"/> @@ -268,8 +231,7 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. <field name="class-id" domain="class-id"/> <field name="method-id" domain="method-id"/> </method> - <method name="close-ok" index="41" synchronous="1"> - <rule name="reporting"/> + <method name="close-ok" synchronous="1" index="41"> <chassis name="client" implement="MUST"/> <chassis name="server" implement="MUST"/> </method> @@ -293,137 +255,96 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. <chassis name="client" implement="MUST"/> </method> </class> - <class name="access" index="30" handler="connection"> + <class name="access" handler="connection" index="30"> <chassis name="server" implement="MUST"/> <chassis name="client" implement="MUST"/> - <method name="request" index="10" synchronous="1"> + <method name="request" synchronous="1" index="10"> <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="validity" on-failure="access-refused"/> - </field> + <field name="realm" domain="shortstr"/> + <field name="exclusive" domain="bit"/> <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-channel" on-failure="not-allowed"/> + <method name="request-ok" synchronous="1" index="11"> <chassis name="client" implement="MUST"/> <field name="ticket" domain="access-ticket"/> </method> </class> - <class name="exchange" index="40" handler="channel"> + <class name="exchange" handler="channel" index="40"> <chassis name="server" implement="MUST"/> <chassis name="client" implement="MUST"/> - <rule name="required-types"/> - <rule name="recommended-types"/> - <rule name="required-instances"/> - <rule name="default-exchange"/> - <rule name="default-access"/> - <rule name="extensions"/> - <method name="declare" index="10" synchronous="1"> - <rule name="minimum"/> + <method name="declare" synchronous="1" index="10"> <chassis name="server" implement="MUST"/> <response name="declare-ok"/> - <field name="ticket" domain="access-ticket"> - <rule name="validity" on-failure="access-refused"/> - </field> + <field name="ticket" domain="access-ticket"/> <field name="exchange" domain="exchange-name"> - <rule name="reserved" on-failure="access-refused"/> <assert check="regexp" value="^[a-zA-Z0-9-_.:]+$"/> </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="passive" domain="bit"> - <rule name="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="passive" domain="bit"/> + <field name="durable" domain="bit"/> + <field name="auto-delete" domain="bit"/> <field name="internal" domain="bit"/> <field name="nowait" domain="bit"/> <field name="arguments" domain="table"/> </method> - <method name="declare-ok" index="11" synchronous="1"> + <method name="declare-ok" synchronous="1" index="11"> <chassis name="client" implement="MUST"/> </method> - <method name="delete" index="20" synchronous="1"> + <method name="delete" synchronous="1" index="20"> <chassis name="server" implement="MUST"/> <response name="delete-ok"/> - <field name="ticket" domain="access-ticket"> - <rule name="validity" on-failure="access-refused"/> - </field> + <field name="ticket" domain="access-ticket"/> <field name="exchange" domain="exchange-name"> - <rule name="exists" on-failure="not-found"/> <assert check="notnull"/> </field> <field name="if-unused" domain="bit"/> <field name="nowait" domain="bit"/> </method> - <method name="delete-ok" index="21" synchronous="1"> + <method name="delete-ok" synchronous="1" index="21"> <chassis name="client" implement="MUST"/> </method> - <method name="bound" index="22" synchronous="1"> + <!-- Qpid specific addition --> + <method name="bound" synchronous="1" index="22"> <chassis name="server" implement="SHOULD"/> <response name="bound-ok"/> <field name="exchange" domain="exchange-name"/> - <field name="routing-key" type="shortstr"> -Message routing key </field> + <field name="routing-key" type="shortstr"/> <field name="queue" domain="queue name"/> </method> - <method name="bound-ok" index="23" synchronous="1"> + <method name="bound-ok" synchronous="1" index="23"> <field name="reply-code" domain="reply-code"/> <field name="reply-text" domain="reply-text"/> <chassis name="client" implement="SHOULD"/> </method> + <!-- End Qpid specific addition --> </class> - <class name="queue" index="50" handler="channel"> + <class name="queue" handler="channel" index="50"> <chassis name="server" implement="MUST"/> <chassis name="client" implement="MUST"/> - <rule name="any-content"/> - <method name="declare" index="10" synchronous="1"> - <rule name="default-binding"/> - <rule name="minimum-queues"/> + <method name="declare" synchronous="1" index="10"> <chassis name="server" implement="MUST"/> <response name="declare-ok"/> - <field name="ticket" domain="access-ticket"> - <rule name="validity" on-failure="access-refused"/> - </field> + <field name="ticket" domain="access-ticket"/> <field name="queue" domain="queue-name"> - <rule name="default-name"/> - <rule name="reserved-prefix" on-failure="not-allowed"/> <assert check="regexp" value="^[a-zA-Z0-9-_.:]*$"/> </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="02" on-failure="channel-error"/> - </field> - <field name="auto-delete" domain="bit"> - <rule name="pre-existence"/> - </field> + <field name="passive" domain="bit"/> + <field name="durable" domain="bit"/> + <field name="exclusive" domain="bit"/> + <field name="auto-delete" domain="bit"/> <field name="nowait" domain="bit"/> - <field name="arguments" domain="table"/> + <!-- Qpid diff - this field is known as filter in the original 0-9, + however since the name does not go on the wire, there is no + interop implication --> + <field name="arguments" domain="table"/> </method> - <method name="declare-ok" index="11" synchronous="1"> + <method name="declare-ok" synchronous="1" index="11"> <chassis name="client" implement="MUST"/> <field name="queue" domain="queue-name"> <assert check="notnull"/> @@ -431,103 +352,59 @@ Message routing key </field> <field name="message-count" domain="long"/> <field name="consumer-count" domain="long"/> </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"/> - <rule name="binding-count"/> + <method name="bind" synchronous="1" index="20"> <chassis name="server" implement="MUST"/> <response name="bind-ok"/> <field name="ticket" domain="access-ticket"/> - <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"/> - </field> - <field name="routing-key" domain="shortstr"> - <rule name="direct-exchange-key-matching"/> - </field> + <field name="queue" domain="queue-name"/> + <field name="exchange" domain="exchange-name"/> + <field name="routing-key" domain="shortstr"/> <field name="nowait" domain="bit"/> <field name="arguments" domain="table"/> </method> - <method name="bind-ok" index="21" synchronous="1"> + <method name="bind-ok" synchronous="1" index="21"> <chassis name="client" implement="MUST"/> </method> - <method name="unbind" index="50" synchronous="1"> - <rule name="01"/> + <method name="unbind" synchronous="1" index="50"> <chassis name="server" implement="MUST"/> <response name="unbind-ok"/> <field name="ticket" domain="access-ticket"/> - <field name="queue" domain="queue-name"> - <rule name="02"/> - </field> - <field name="exchange" domain="exchange-name"> - <rule name="03"/> - </field> + <field name="queue" domain="queue-name"/> + <field name="exchange" domain="exchange-name"/> <field name="routing-key" domain="shortstr"/> <field name="arguments" domain="table"/> </method> - <method name="unbind-ok" index="51" synchronous="1"> + <method name="unbind-ok" synchronous="1" index="51"> <chassis name="client" implement="MUST"/> </method> - <method name="purge" index="30" synchronous="1"> - <rule name="01"/> - <rule name="02"/> - <rule name="03"/> + <method name="purge" synchronous="1" index="30"> <chassis name="server" implement="MUST"/> <response name="purge-ok"/> - <field name="ticket" domain="access-ticket"> - <rule name="01"/> - </field> - <field name="queue" domain="queue-name"> - <rule name="01"/> - <rule name="02"/> - </field> + <field name="ticket" domain="access-ticket"/> + <field name="queue" domain="queue-name"/> <field name="nowait" domain="bit"/> </method> - <method name="purge-ok" index="31" synchronous="1"> + <method name="purge-ok" synchronous="1" index="31"> <chassis name="client" implement="MUST"/> <field name="message-count" domain="long"/> </method> - <method name="delete" index="40" synchronous="1"> - <rule name="01"/> + <method name="delete" synchronous="1" index="40"> <chassis name="server" implement="MUST"/> <response name="delete-ok"/> <field name="ticket" domain="access-ticket"/> - <field name="queue" domain="queue-name"> - <rule name="01"/> - <rule name="02"/> - </field> - <field name="if-unused" domain="bit"> - <rule name="01"/> - </field> - <field name="if-empty" domain="bit"> - <rule name="01"/> - </field> + <field name="queue" domain="queue-name"/> + <field name="if-unused" domain="bit"/> + <field name="if-empty" domain="bit"/> <field name="nowait" domain="bit"/> </method> - <method name="delete-ok" index="41" synchronous="1"> + <method name="delete-ok" synchronous="1" index="41"> <chassis name="client" implement="MUST"/> <field name="message-count" domain="long"/> </method> </class> - <class name="basic" index="60" handler="channel"> + <class name="basic" handler="channel" index="60"> <chassis name="server" implement="MUST"/> <chassis name="client" implement="MAY"/> - <rule name="01"/> - <rule name="02"/> - <rule name="03"/> - <rule name="04"/> - <rule name="05"/> - <rule name="06"/> - <rule name="07"/> - <rule name="08"/> - <rule name="09"/> - <rule name="10"/> <field name="content-type" domain="shortstr"/> <field name="content-encoding" domain="shortstr"/> <field name="headers" domain="table"/> @@ -542,74 +419,49 @@ Message routing key </field> <field name="user-id" domain="shortstr"/> <field name="app-id" domain="shortstr"/> <field name="cluster-id" domain="shortstr"/> - <method name="qos" index="10" synchronous="1"> + <method name="qos" synchronous="1" index="10"> <chassis name="server" implement="MUST"/> <response name="qos-ok"/> - <field name="prefetch-size" domain="long"> - <rule name="01"/> - </field> - <field name="prefetch-count" domain="short"> - <rule name="01"/> - </field> + <field name="prefetch-size" domain="long"/> + <field name="prefetch-count" domain="short"/> <field name="global" domain="bit"/> </method> - <method name="qos-ok" index="11" synchronous="1"> + <method name="qos-ok" synchronous="1" index="11"> <chassis name="client" implement="MUST"/> </method> - <method name="consume" index="20" synchronous="1"> - <rule name="01"/> + <method name="consume" synchronous="1" index="20"> <chassis name="server" implement="MUST"/> <response name="consume-ok"/> - <field name="ticket" domain="access-ticket"> - <rule name="01" on-failure="access-refused"/> - </field> - <field name="queue" domain="queue-name"> - <rule name="01" on-failure="not-allowed"/> - </field> - <field name="consumer-tag" domain="consumer-tag"> - <rule name="01" on-failure="not-allowed"/> - <rule name="02" on-failure="not-allowed"/> - </field> + <field name="ticket" domain="access-ticket"/> + <field name="queue" domain="queue-name"/> + <field name="consumer-tag" domain="consumer-tag"/> <field name="no-local" domain="no-local"/> <field name="no-ack" domain="no-ack"/> - <field name="exclusive" domain="bit"> - <rule name="01" on-failure="access-refused"/> - </field> + <field name="exclusive" domain="bit"/> <field name="nowait" domain="bit"/> <field name="arguments" domain="table"/> </method> - <method name="consume-ok" index="21" synchronous="1"> + <method name="consume-ok" synchronous="1" index="21"> <chassis name="client" implement="MUST"/> <field name="consumer-tag" domain="consumer-tag"/> </method> - <method name="cancel" index="30" synchronous="1"> - <rule name="01"/> + <method name="cancel" synchronous="1" index="30"> <chassis name="server" implement="MUST"/> <response name="cancel-ok"/> <field name="consumer-tag" domain="consumer-tag"/> <field name="nowait" domain="bit"/> </method> - <method name="cancel-ok" index="31" synchronous="1"> + <method name="cancel-ok" synchronous="1" index="31"> <chassis name="client" 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="01"/> - </field> - <field name="exchange" domain="exchange-name"> - <rule name="01"/> - <rule name="02"/> - <rule name="03"/> - </field> + <field name="ticket" domain="access-ticket"/> + <field name="exchange" domain="exchange-name"/> <field name="routing-key" domain="shortstr"/> - <field name="mandatory" domain="bit"> - <rule name="01"/> - </field> - <field name="immediate" domain="bit"> - <rule name="01"/> - </field> + <field name="mandatory" domain="bit"/> + <field name="immediate" domain="bit"/> </method> <method name="return" content="1" index="50"> <chassis name="client" implement="MUST"/> @@ -619,7 +471,6 @@ Message routing key </field> <field name="routing-key" domain="shortstr"/> </method> <method name="deliver" content="1" index="60"> - <rule name="01"/> <chassis name="client" implement="MUST"/> <field name="consumer-tag" domain="consumer-tag"/> <field name="delivery-tag" domain="delivery-tag"/> @@ -627,19 +478,15 @@ Message routing key </field> <field name="exchange" domain="exchange-name"/> <field name="routing-key" domain="shortstr"/> </method> - <method name="get" index="70" synchronous="1"> + <method name="get" synchronous="1" index="70"> <response name="get-ok"/> <response name="get-empty"/> <chassis name="server" implement="MUST"/> - <field name="ticket" domain="access-ticket"> - <rule name="01"/> - </field> - <field name="queue" domain="queue-name"> - <rule name="01"/> - </field> + <field name="ticket" domain="access-ticket"/> + <field name="queue" domain="queue-name"/> <field name="no-ack" domain="no-ack"/> </method> - <method name="get-ok" content="1" index="71" synchronous="1"> + <method name="get-ok" synchronous="1" content="1" index="71"> <chassis name="client" implement="MAY"/> <field name="delivery-tag" domain="delivery-tag"/> <field name="redelivered" domain="redelivered"/> @@ -647,50 +494,38 @@ Message routing key </field> <field name="routing-key" domain="shortstr"/> <field name="message-count" domain="long"/> </method> - <method name="get-empty" index="72" synchronous="1"> + <method name="get-empty" synchronous="1" index="72"> <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="01"/> - </field> + <field name="multiple" domain="bit"/> </method> <method name="reject" index="90"> - <rule name="01"/> - <rule name="02"/> - <rule name="03"/> <chassis name="server" implement="MUST"/> <field name="delivery-tag" domain="delivery-tag"/> - <field name="requeue" domain="bit"> - <rule name="01"/> - </field> + <field name="requeue" domain="bit"/> </method> <method name="recover" index="100"> - <rule name="01"/> - <rule name="02"/> <chassis name="server" implement="MUST"/> <field name="requeue" domain="bit"/> </method> + <!-- Qpid specific addition --> <method name="recover-sync" index="102"> -redeliver unacknowledged messages <chassis name="server" implement="MUST"/> - <field name="requeue" type="bit"> -requeue the message </field> + <chassis name="server" implement="MUST"/> + <field name="requeue" type="bit"/> <response name="recover-sync-ok"/> </method> - <method name="recover-sync-ok" index="101" synchronous="1"> -confirm a successful recover <chassis name="client" implement="MUST"/> + <method name="recover-sync-ok" synchronous="1" index="101"> + <chassis name="client" implement="MUST"/> </method> + <!-- End Qpid specific addition --> </class> - <class name="file" index="70" handler="channel"> + <class name="file" handler="channel" index="70"> <chassis name="server" implement="MAY"/> <chassis name="client" implement="MAY"/> - <rule name="01"/> - <rule name="02"/> - <rule name="03"/> - <rule name="04"/> <field name="content-type" domain="shortstr"/> <field name="content-encoding" domain="shortstr"/> <field name="headers" domain="table"/> @@ -700,70 +535,54 @@ confirm a successful recover <chassis name="client" implement="MUST"/> <field name="filename" domain="shortstr"/> <field name="timestamp" domain="timestamp"/> <field name="cluster-id" domain="shortstr"/> - <method name="qos" index="10" synchronous="1"> + <method name="qos" synchronous="1" index="10"> <chassis name="server" implement="MUST"/> <response name="qos-ok"/> <field name="prefetch-size" domain="long"/> - <field name="prefetch-count" domain="short"> - <rule name="01"/> - </field> + <field name="prefetch-count" domain="short"/> <field name="global" domain="bit"/> </method> - <method name="qos-ok" index="11" synchronous="1"> + <method name="qos-ok" synchronous="1" index="11"> <chassis name="client" implement="MUST"/> </method> - <method name="consume" index="20" synchronous="1"> - <rule name="01"/> + <method name="consume" synchronous="1" index="20"> <chassis name="server" implement="MUST"/> <response name="consume-ok"/> - <field name="ticket" domain="access-ticket"> - <rule name="01"/> - </field> - <field name="queue" domain="queue-name"> - <rule name="01"/> - </field> - <field name="consumer-tag" domain="consumer-tag"> - <rule name="01"/> - </field> + <field name="ticket" domain="access-ticket"/> + <field name="queue" domain="queue-name"/> + <field name="consumer-tag" domain="consumer-tag"/> <field name="no-local" domain="no-local"/> <field name="no-ack" domain="no-ack"/> - <field name="exclusive" domain="bit"> - <rule name="01"/> - </field> + <field name="exclusive" domain="bit"/> <field name="nowait" domain="bit"/> <field name="filter" domain="table"/> </method> - <method name="consume-ok" index="21" synchronous="1"> + <method name="consume-ok" synchronous="1" index="21"> <chassis name="client" implement="MUST"/> <field name="consumer-tag" domain="consumer-tag"/> </method> - <method name="cancel" index="30" synchronous="1"> + <method name="cancel" synchronous="1" index="30"> <response name="cancel-ok"/> <chassis name="server" implement="MUST"/> <field name="consumer-tag" domain="consumer-tag"/> <field name="nowait" domain="bit"/> </method> - <method name="cancel-ok" index="31" synchronous="1"> + <method name="cancel-ok" synchronous="1" index="31"> <chassis name="client" implement="MUST"/> <field name="consumer-tag" domain="consumer-tag"/> </method> - <method name="open" index="40" synchronous="1"> + <method name="open" synchronous="1" index="40"> <response name="open-ok"/> <chassis name="server" implement="MUST"/> <chassis name="client" implement="MUST"/> <field name="identifier" domain="shortstr"/> - <field name="content-size" domain="longlong"> - <rule name="01"/> - </field> + <field name="content-size" domain="longlong"/> </method> - <method name="open-ok" index="41" synchronous="1"> + <method name="open-ok" synchronous="1" index="41"> <response name="stage"/> <chassis name="server" implement="MUST"/> <chassis name="client" implement="MUST"/> - <field name="staged-size" domain="longlong"> - <rule name="01"/> - <rule name="02"/> - </field> + <field name="staged-size" domain="longlong"/> </method> <method name="stage" content="1" index="50"> <chassis name="server" implement="MUST"/> @@ -771,21 +590,11 @@ confirm a successful recover <chassis name="client" implement="MUST"/> </method> <method name="publish" index="60"> <chassis name="server" implement="MUST"/> - <field name="ticket" domain="access-ticket"> - <rule name="01"/> - </field> - <field name="exchange" domain="exchange-name"> - <rule name="01"/> - <rule name="02"/> - <rule name="03"/> - </field> + <field name="ticket" domain="access-ticket"/> + <field name="exchange" domain="exchange-name"/> <field name="routing-key" domain="shortstr"/> - <field name="mandatory" domain="bit"> - <rule name="01"/> - </field> - <field name="immediate" domain="bit"> - <rule name="01"/> - </field> + <field name="mandatory" domain="bit"/> + <field name="immediate" domain="bit"/> <field name="identifier" domain="shortstr"/> </method> <method name="return" content="1" index="70"> @@ -796,7 +605,6 @@ confirm a successful recover <chassis name="client" implement="MUST"/> <field name="routing-key" domain="shortstr"/> </method> <method name="deliver" index="80"> - <rule name="01"/> <chassis name="client" implement="MUST"/> <field name="consumer-tag" domain="consumer-tag"/> <field name="delivery-tag" domain="delivery-tag"/> @@ -808,96 +616,65 @@ confirm a successful recover <chassis name="client" implement="MUST"/> <method name="ack" index="90"> <chassis name="server" implement="MUST"/> <field name="delivery-tag" domain="delivery-tag"/> - <field name="multiple" domain="bit"> - <rule name="01"/> - </field> + <field name="multiple" domain="bit"/> </method> <method name="reject" index="100"> - <rule name="01"/> - <rule name="02"/> <chassis name="server" implement="MUST"/> <field name="delivery-tag" domain="delivery-tag"/> - <field name="requeue" domain="bit"> - <rule name="01"/> - </field> + <field name="requeue" domain="bit"/> </method> </class> - <class name="stream" index="80" handler="channel"> + <class name="stream" handler="channel" index="80"> <chassis name="server" implement="MAY"/> <chassis name="client" implement="MAY"/> - <rule name="01"/> - <rule name="02"/> - <rule name="03"/> <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"> + <method name="qos" synchronous="1" index="10"> <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="01"/> - </field> + <field name="consume-rate" domain="long"/> <field name="global" domain="bit"/> </method> - <method name="qos-ok" index="11" synchronous="1"> + <method name="qos-ok" synchronous="1" index="11"> <chassis name="client" implement="MUST"/> </method> - <method name="consume" index="20" synchronous="1"> - <rule name="01"/> - <rule name="02"/> + <method name="consume" synchronous="1" index="20"> <chassis name="server" implement="MUST"/> <response name="consume-ok"/> - <field name="ticket" domain="access-ticket"> - <rule name="01"/> - </field> - <field name="queue" domain="queue-name"> - <rule name="01"/> - </field> - <field name="consumer-tag" domain="consumer-tag"> - <rule name="01"/> - </field> + <field name="ticket" domain="access-ticket"/> + <field name="queue" domain="queue-name"/> + <field name="consumer-tag" domain="consumer-tag"/> <field name="no-local" domain="no-local"/> - <field name="exclusive" domain="bit"> - <rule name="01"/> - </field> + <field name="exclusive" domain="bit"/> <field name="nowait" domain="bit"/> <field name="filter" domain="table"/> </method> - <method name="consume-ok" index="21" synchronous="1"> + <method name="consume-ok" synchronous="1" index="21"> <chassis name="client" implement="MUST"/> <field name="consumer-tag" domain="consumer-tag"/> </method> - <method name="cancel" index="30" synchronous="1"> + <method name="cancel" synchronous="1" index="30"> <chassis name="server" implement="MUST"/> <response name="cancel-ok"/> <field name="consumer-tag" domain="consumer-tag"/> <field name="nowait" domain="bit"/> </method> - <method name="cancel-ok" index="31" synchronous="1"> + <method name="cancel-ok" synchronous="1" index="31"> <chassis name="client" 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="01"/> - </field> - <field name="exchange" domain="exchange-name"> - <rule name="01"/> - <rule name="02"/> - <rule name="03"/> - </field> + <field name="ticket" domain="access-ticket"/> + <field name="exchange" domain="exchange-name"/> <field name="routing-key" domain="shortstr"/> - <field name="mandatory" domain="bit"> - <rule name="01"/> - </field> - <field name="immediate" domain="bit"> - <rule name="01"/> - </field> + <field name="mandatory" domain="bit"/> + <field name="immediate" domain="bit"/> </method> <method name="return" content="1" index="50"> <chassis name="client" implement="MUST"/> @@ -916,54 +693,53 @@ confirm a successful recover <chassis name="client" implement="MUST"/> </field> </method> </class> - <class name="tx" index="90" handler="channel"> - <rule name="01"/> + <class name="tx" handler="channel" index="90"> <chassis name="server" implement="SHOULD"/> <chassis name="client" implement="MAY"/> - <method name="select" index="10" synchronous="1"> + <method name="select" synchronous="1" index="10"> <chassis name="server" implement="MUST"/> <response name="select-ok"/> </method> - <method name="select-ok" index="11" synchronous="1"> + <method name="select-ok" synchronous="1" index="11"> <chassis name="client" implement="MUST"/> </method> - <method name="commit" index="20" synchronous="1"> + <method name="commit" synchronous="1" index="20"> <chassis name="server" implement="MUST"/> <response name="commit-ok"/> </method> - <method name="commit-ok" index="21" synchronous="1"> + <method name="commit-ok" synchronous="1" index="21"> <chassis name="client" implement="MUST"/> </method> - <method name="rollback" index="30" synchronous="1"> + <method name="rollback" synchronous="1" index="30"> <chassis name="server" implement="MUST"/> <response name="rollback-ok"/> </method> - <method name="rollback-ok" index="31" synchronous="1"> + <method name="rollback-ok" synchronous="1" index="31"> <chassis name="client" implement="MUST"/> </method> </class> - <class name="dtx" index="100" handler="channel"> + <class name="dtx" handler="channel" index="100"> <chassis name="server" implement="MAY"/> <chassis name="client" implement="MAY"/> - <method name="select" index="10" synchronous="1"> + <method name="select" synchronous="1" index="10"> <chassis name="server" implement="MUST"/> <response name="select-ok"/> </method> - <method name="select-ok" index="11" synchronous="1"> + <method name="select-ok" synchronous="1" index="11"> <chassis name="client" implement="MUST"/> </method> - <method name="start" index="20" synchronous="1"> + <method name="start" synchronous="1" index="20"> <chassis name="server" implement="MAY"/> <response name="start-ok"/> <field name="dtx-identifier" domain="shortstr"> <assert check="notnull"/> </field> </method> - <method name="start-ok" index="21" synchronous="1"> + <method name="start-ok" synchronous="1" index="21"> <chassis name="client" implement="MUST"/> </method> </class> - <class name="tunnel" index="110" handler="tunnel"> + <class name="tunnel" handler="tunnel" index="110"> <chassis name="server" implement="MAY"/> <chassis name="client" implement="MAY"/> <field name="headers" domain="table"/> @@ -976,40 +752,19 @@ confirm a successful recover <chassis name="client" implement="MUST"/> <field name="meta-data" domain="table"/> </method> </class> - <class name="message" index="120" handler="channel"> + <class name="message" handler="channel" index="120"> <chassis name="server" implement="MUST"/> <chassis name="client" implement="MUST"/> - <rule name="01"/> - <rule name="02"/> - <rule name="03"/> - <rule name="04"/> - <rule name="05"/> - <rule name="06"/> - <rule name="07"/> - <rule name="08"/> - <rule name="09"/> - <rule name="10"/> <method name="transfer" index="10"> - <rule name="01"/> <chassis name="server" implement="MUST"/> <chassis name="client" implement="MUST"/> <response name="ok"/> <response name="reject"/> - <field name="ticket" domain="access-ticket"> - <rule name="01"/> - </field> - <field name="destination" domain="destination"> - <rule name="01"/> - <rule name="02"/> - <rule name="03"/> - </field> + <field name="ticket" domain="access-ticket"/> + <field name="destination" domain="destination"/> <field name="redelivered" domain="redelivered"/> - <field name="immediate" domain="bit"> - <rule name="01"/> - </field> - <field name="ttl" domain="duration"> - <rule name="01"/> - </field> + <field name="immediate" domain="bit"/> + <field name="ttl" domain="duration"/> <field name="priority" domain="octet"/> <field name="timestamp" domain="timestamp"/> <field name="delivery-mode" domain="octet"/> @@ -1029,28 +784,17 @@ confirm a successful recover <chassis name="client" implement="MUST"/> <field name="body" domain="content"/> </method> <method name="consume" index="20"> - <rule name="01"/> <chassis name="server" implement="MUST"/> <response name="ok"/> - <field name="ticket" domain="access-ticket"> - <rule name="01" on-failure="access-refused"/> - </field> - <field name="queue" domain="queue-name"> - <rule name="01" on-failure="not-allowed"/> - </field> - <field name="destination" domain="destination"> - <rule name="01" on-failure="not-allowed"/> - <rule name="02" on-failure="not-allowed"/> - </field> + <field name="ticket" domain="access-ticket"/> + <field name="queue" domain="queue-name"/> + <field name="destination" domain="destination"/> <field name="no-local" domain="no-local"/> <field name="no-ack" domain="no-ack"/> - <field name="exclusive" domain="bit"> - <rule name="01" on-failure="access-refused"/> - </field> + <field name="exclusive" domain="bit"/> <field name="filter" domain="table"/> </method> <method name="cancel" index="30"> - <rule name="01"/> <chassis name="server" implement="MUST"/> <response name="ok"/> <field name="destination" domain="destination"/> @@ -1059,18 +803,12 @@ confirm a successful recover <chassis name="client" implement="MUST"/> <response name="ok"/> <response name="empty"/> <chassis name="server" implement="MUST"/> - <field name="ticket" domain="access-ticket"> - <rule name="01"/> - </field> - <field name="queue" domain="queue-name"> - <rule name="01"/> - </field> + <field name="ticket" domain="access-ticket"/> + <field name="queue" domain="queue-name"/> <field name="destination" domain="destination"/> <field name="no-ack" domain="no-ack"/> </method> <method name="recover" index="50"> - <rule name="01"/> - <rule name="02"/> <chassis name="server" implement="MUST"/> <response name="ok"/> <field name="requeue" domain="bit"/> @@ -1079,55 +817,40 @@ confirm a successful recover <chassis name="client" implement="MUST"/> <chassis name="server" implement="MUST"/> <chassis name="client" implement="MUST"/> <response name="ok"/> - <field name="reference" domain="reference"> - <rule name="01"/> - </field> + <field name="reference" domain="reference"/> </method> <method name="close" index="70"> - <rule name="01"/> <chassis name="server" implement="MUST"/> <chassis name="client" implement="MUST"/> <response name="ok"/> - <field name="reference" domain="reference"> - <rule name="01"/> - </field> + <field name="reference" domain="reference"/> </method> <method name="append" index="80"> <chassis name="server" implement="MUST"/> <chassis name="client" implement="MUST"/> <response name="ok"/> - <field name="reference" domain="reference"> - <rule name="01"/> - </field> + <field name="reference" domain="reference"/> <field name="bytes" domain="longstr"/> </method> <method name="checkpoint" index="90"> <chassis name="server" implement="MUST"/> <chassis name="client" implement="MUST"/> <response name="ok"/> - <field name="reference" domain="reference"> - <rule name="01"/> - </field> + <field name="reference" domain="reference"/> <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="01"/> - </field> + <field name="reference" domain="reference"/> <field name="identifier" domain="shortstr"/> </method> <method name="qos" index="110"> <chassis name="server" implement="MUST"/> <response name="ok"/> - <field name="prefetch-size" domain="long"> - <rule name="01"/> - </field> - <field name="prefetch-count" domain="short"> - <rule name="01"/> - </field> + <field name="prefetch-size" domain="long"/> + <field name="prefetch-count" domain="short"/> <field name="global" domain="bit"/> </method> <method name="ok" index="500"> |
