diff options
Diffstat (limited to 'qpid/cpp/xml')
-rw-r--r-- | qpid/cpp/xml/cluster.xml | 294 | ||||
-rw-r--r-- | qpid/cpp/xml/extra.xml | 926 |
2 files changed, 1220 insertions, 0 deletions
diff --git a/qpid/cpp/xml/cluster.xml b/qpid/cpp/xml/cluster.xml new file mode 100644 index 0000000000..4d83c5b5de --- /dev/null +++ b/qpid/cpp/xml/cluster.xml @@ -0,0 +1,294 @@ +<?xml version="1.0"?> +<!-- +- +- Licensed to the Apache Software Foundation (ASF) under one +- or more contributor license agreements. See the NOTICE file +- distributed with this work for additional information +- regarding copyright ownership. The ASF licenses this file +- to you under the Apache License, Version 2.0 (the +- "License"); you may not use this file except in compliance +- with the License. You may obtain a copy of the License at +- +- http://www.apache.org/licenses/LICENSE-2.0 +- +- Unless required by applicable law or agreed to in writing, +- software distributed under the License is distributed on an +- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +- KIND, either express or implied. See the License for the +- specific language governing permissions and limitations +- under the License. +- +--> + +<!-- +- NOTE: if you make changes to this XML you must update CLUSTER_VERSION +- in src/qpid/cluster/Cluster.cpp +--> + +<amqp major="0" minor="10" port="5672"> + + <!-- Controls sent between cluster nodes. --> + + <class name = "cluster" code = "0x80" label="Qpid clustering extensions."> + <doc>Qpid extension class to allow clustered brokers to communicate.</doc> + + <!-- New joiner requests an update to url. --> + <control name="update-request" code="0x1"> + <field name="url" type="str16"/> + </control> + + <!-- Sender offers an update to a new joiner. --> + <control name = "update-offer" code="0x2"> + <field name="updatee" type="uint64"/> + </control> + + <!-- Sender retracts an offer to a new joiner. --> + <control name = "retract-offer" code="0x3"> + <field name="updatee" type="uint64"/> + </control> + + <!-- Possible states for persistent store --> + <domain name="store-state" type="uint8"> + <enum> + <choice name="no-store" value="0"/> + <choice name="empty-store" value="1"/> + <choice name="clean-store" value="2"/> + <choice name="dirty-store" value="3"/> + </enum> + </domain> + + <!-- Status exchanged when new members join the cluster. --> + <control name="initial-status" code="0x5"> + <field name="version" type="uint32"/> + <field name="active" type="bit"/> + <field name="cluster-id" type="uuid"/>> + <field name="store-state" type="store-state"/> + <field name="shutdown-id" type="uuid"/> + <field name="first-config" type="str16"/> + </control> + + <!-- New member or updater is ready as an active member. --> + <control name="ready" code="0x10"> + <field name="url" type="str16"/> + </control> + + <control name="config-change" code="0x11" label="Raw cluster membership."> + <field name="members" type="vbin16"/> <!-- packed member-id array --> + <field name="joined" type="vbin16"/> <!-- packed member-id array --> + <field name="left" type="vbin16"/> <!-- packed member-id array --> + </control> + + <control name="message-expired" code="0x12"> + <field name="id" type="uint64"/> + </control> + + <domain name="error-type" type="uint8" label="Types of error"> + <enum> + <choice name="none" value="0"/> + <choice name="session" value="1"/> + <choice name="connection" value="2"/> + </enum> + </domain> + + <!-- Check for error consistency across the cluster --> + <control name="error-check" code="0x14"> + <field name="type" type="error-type"/> + <field name="frame-seq" type="sequence-no"/> + </control> + + <!-- Synchronize timer tasks across the cluster --> + <control name="timer-wakeup" code="0x15"> + <field name="name" type="str16"/> + </control> + + <control name="timer-drop" code="0x16"> + <field name="name" type="str16"/> + </control> + + <!-- Shut down the entire cluster --> + <control name="shutdown" code="0x20"> + <field name="shutdown-id" type="uuid"/> + </control> + + <!-- Deliver a message to a queue --> + <control name="deliver-to-queue" code="0x21"> + <field name="queue" type="str16"/> + <field name="message" type="vbin32"/> + </control> + + </class> + + <!-- Controls associated with a specific connection. --> + + <class name="cluster-connection" code="0x81" label="Qpid clustering extensions."> + + <!-- Announce a new connection --> + <control name="announce" code="0x1"> + <field name="management-id" type="str16"/> + <!-- Security Strength Factor (ssf): if the transport provides + encryption (e.g. ssl), ssf is the bit length of the key. Zero if no + encryption provided. --> + <field name="ssf" type="uint32"/> + <!-- external auth id (e.g. ssl client certificate id) --> + <field name="authid" type="str16"/> + <!-- exclude certain sasl mechs, used with ssl and sasl-external --> + <field name="nodict" type="bit"/> + <!-- User name as negotiated by SASL --> + <field name="username" type="str32"/> + <!-- Frames forming the initial connection negotiation. --> + <field name="initial-frames" type="str32"/> + </control> + + <!-- Marks the cluster-wide point when a connection is considered closed. --> + <control name="deliver-close" code="0x2"/> + + <!-- Permission to generate output up to the limit. --> + <control name="deliver-do-output" code="0x3"> + <field name="limit" type="uint32"/> + </control> + + <!-- Abort a connection that is sending invalid data. --> + <control name="abort" code="0x4"/> + + <!-- Update controls. Sent to a new broker in joining mode. + A connection is updated as followed: + - send the shadow's management ID in shadow-perpare on the update connection + - open the shadow as a normal connection. + - attach sessions, create consumers, set flow with normal AMQP cokmmands. + - send /reset additional session state with controls below. + - send shadow-ready to mark end of shadow update. + - send membership when entire update is complete. + --> + <!-- Send the user-id for an update connection. --> + <control name="shadow-set-user" code="0x0E"> + <field name="user-id" type="str16"/> + </control> + + <!-- Prepare to send a shadow connection with the given ID. --> + <control name="shadow-prepare" code="0x0F"> + <field name="management-id" type="str16"/> + </control> + + <!-- Consumer state that cannot be set by standard AMQP controls. --> + <control name="consumer-state" code="0x10"> + <field name="name" type="str8"/> + <field name="blocked" type="bit"/> + <field name="notifyEnabled" type="bit"/> + <field name="position" type="sequence-no"/> + </control> + + <!-- Delivery-record for outgoing messages sent but not yet accepted. --> + <control name="delivery-record" code ="0x11"> + <field name="queue" type="str8"/> + <field name="position" type="sequence-no"/> + <field name="tag" type="str8"/> + <field name="id" type="sequence-no"/> + <field name="acquired" type="bit"/> <!--If not set, message follows. --> + <field name="accepted" type="bit"/> + <field name="cancelled" type="bit"/> + <field name="completed" type="bit"/> + <field name="ended" type="bit"/> + <field name="windowing" type="bit"/> + <field name="enqueued" type="bit"/> + <field name="credit" type="uint32"/> + </control> + + <!-- Tx transaction state. --> + <control name="tx-start" code="0x12"/> + <control name="tx-accept" code="0x13"> <field name="commands" type="sequence-set"/> </control> + <control name="tx-dequeue" code="0x14"> <field name="queue" type="str8"/> </control> + <control name="tx-enqueue" code="0x15"> <field name="queue" type="str8"/> </control> + <control name="tx-publish" code="0x16"> + <field name="queues" type="array"/> <!--Array of str8 --> + <field name="delivered" type="bit"/> + </control> + <control name="tx-end" code="0x17"/> + <control name="accumulated-ack" code="0x18"> <field name="commands" type="sequence-set"/> </control> + + <!-- Consumers in the connection's output task --> + <control name="output-task" code="0x19"> + <field name="channel" type="uint16"/> + <field name="name" type="str8"/> + </control> + + <!-- Complete a session state update. --> + <control name="session-state" code="0x1F"> + <!-- Target session deduced from channel number. --> + <field name="replay-start" type="sequence-no"/> <!-- Replay frames will start from this point.--> + <field name="command-point" type="sequence-no"/> <!-- Id of next command sent --> + <field name="sent-incomplete" type="sequence-set"/> <!-- Commands sent and incomplete. --> + + <field name="expected" type="sequence-no"/> <!-- Next command expected. --> + <field name="received" type="sequence-no"/> <!-- Received up to here (>= expected) --> + <field name="unknown-completed" type="sequence-set"/> <!-- Completed but not known to peer. --> + <field name="received-incomplete" type="sequence-set"/> <!-- Received and incomplete --> + </control> + + <!-- Complete a shadow connection update. --> + <control name="shadow-ready" code="0x20" label="End of shadow connection update."> + <field name="member-id" type="uint64"/> + <field name="connection-id" type="uint64"/> + <field name="management-id" type="str16"/> + <field name="user-name" type="str8"/> + <field name="fragment" type="str32"/> + <field name="send-max" type="uint32"/> + </control> + + <!-- Complete a cluster state update. --> + <control name="membership" code="0x21" label="Cluster membership details."> + <field name="joiners" type="map"/> <!-- member-id -> URL --> + <field name="members" type="map"/> <!-- member-id -> state --> + <field name="frame-seq" type="sequence-no"/> <!-- frame sequence number --> + </control> + + <!-- Updater cannot fulfill an update offer. --> + <control name = "retract-offer" code="0x22"/> + + <!-- Set the position of a replicated queue. --> + <control name="queue-position" code="0x30"> + <field name="queue" type="str8"/> + <field name="position" type="sequence-no"/> + </control> + + <!-- Replicate encoded exchanges/queues. --> + <control name="exchange" code="0x31"><field name="encoded" type="str32"/></control> + + <!-- Set expiry-id for subsequent messages. --> + <control name="expiry-id" code="0x33"><field name="expiry-id" type="uint64"/></control> + + <!-- Add a listener to a queue --> + <control name="add-queue-listener" code="0x34"> + <field name="queue" type="str8"/> + <field name="consumer" type="uint32"/> + </control> + + <!-- added by jrd. propagate a management-setup-state widget --> + <control name="management-setup-state" code="0x36"> + <field name="objectNum" type="uint64"/> + <field name="bootSequence" type="uint16"/> + <field name="broker-id" type="uuid"/> + <field name="vendor" type="str32"/> + <field name="product" type="str32"/> + <field name="instance" type="str32"/> + </control> + + <!-- Replicate encoded config objects - e.g. links and bridges. --> + <control name="config" code="0x37"><field name="encoded" type="str32"/></control> + + <!-- Set the fairshare delivery related state of a replicated queue. --> + <control name="queue-fairshare-state" code="0x38"> + <field name="queue" type="str8"/> + <field name="position" type="uint8"/> + <field name="count" type="uint8"/> + </control> + + <!-- Replicate a QueueObserver for a given queue. --> + <control name="queue-observer-state" code="0x39"> + <field name="queue" type="str8"/> + <field name="observer-id" type="str8"/> + <field name="state" type="map"/> <!-- "name"=value --> + </control> + + </class> + +</amqp> diff --git a/qpid/cpp/xml/extra.xml b/qpid/cpp/xml/extra.xml new file mode 100644 index 0000000000..5cb37ae65f --- /dev/null +++ b/qpid/cpp/xml/extra.xml @@ -0,0 +1,926 @@ +<?xml version="1.0"?> +<!-- + - + - Licensed to the Apache Software Foundation (ASF) under one + - or more contributor license agreements. See the NOTICE file + - distributed with this work for additional information + - regarding copyright ownership. The ASF licenses this file + - to you under the Apache License, Version 2.0 (the + - "License"); you may not use this file except in compliance + - with the License. You may obtain a copy of the License at + - + - http://www.apache.org/licenses/LICENSE-2.0 + - + - Unless required by applicable law or agreed to in writing, + - software distributed under the License is distributed on an + - "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + - KIND, either express or implied. See the License for the + - specific language governing permissions and limitations + - under the License. + - + --> + +<amqp major="99" minor="0" port="5672"> + + <domain name="mediumstr" type="mediumstr" label="string with 16bit size field" /> + + <domain name="sequence-set" type="sequence-set" label="ranged set representation"> + <doc> + Set of pairs of RFC-1982 numbers representing a discontinuous range. Each pair represents a + closed interval within the list. + + For example, the set (1,3), (6,6), (8,9) represents the sequence 1,2,3,6,8,9. + </doc> + </domain> + + <domain name="xid010"> + <struct size="long" pack="short" type="1540"> + <field name="format" domain="long" /> + <field name="global-id" domain="shortstr" /> + <field name="branch-id" domain="shortstr" /> + </struct> + </domain> + + <domain name="delivery-properties-010"> + <struct size="long" pack="short" type="1025"> + <field name="discard-unroutable" domain="bit" label="controls discard of unroutable messages"/> + <field name="immediate" domain="bit" label="Consider message unroutable if it cannot be + processed immediately"/> + <field name="redelivered" domain="bit" label="redelivery flag"/> + <field name="priority" domain="octet" label="message priority, 0 to 9" + required="true"/> + <field name="delivery-mode" domain="octet" label="message persistence requirement" + required="true"/> + <field name="ttl" domain="longlong" label="time to live in ms"/> + <field name="timestamp" domain="longlong" label="message timestamp"/> + <field name="expiration" domain="longlong" label="message expiration time"/> + <field name="exchange" domain="shortstr" label="originating exchange"/> + <field name="routing-key" domain="shortstr" label="message routing key"/> + <field name="resume-id" domain="mediumstr" label="global id for message transfer"/> + <field name="resume-ttl" domain="longlong" label="ttl in ms for interrupted message data"/> + </struct> + </domain> + + <domain name="message-properties-010"> + <struct size="long" pack="short" type="1027"> + <field name="content-length" domain="longlong" label="length of the body segment in bytes"/> + <field name="message-id" domain="uuid" label="application message identifier"/> + <field name="correlation-id" domain="mediumstr" label="application correlation identifier"/> + <field name="reply-to" domain="reply-to" label="destination to reply to"/> + <field name="content-type" domain="shortstr" label="MIME content type"/> + <field name="content-encoding" domain="shortstr" label="MIME content encoding"/> + <field name="user-id" domain="mediumstr" label="creating user id"/> + <field name="app-id" domain="mediumstr" label="creating application id"/> + <field name="application-headers" domain="table" label="application specific headers table"/> + </struct> + </domain> + +<class name = "connection010" index = "1"> + +<method name = "start" index="1"> + <doc>new start method</doc> + <chassis name="client" implement="MUST" /> + + <response name="start-ok" /> + + <field name="server-properties" domain="table" label="server properties"> + <doc>blah, blah</doc> + </field> + + <field name="mechanisms" domain="array" label="available security mechanisms"> + <doc>blah, blah</doc> + </field> + + <field name="locales" domain="array" label="available message locales"> + </field> + +</method> + +<method name = "start-ok" index="2"> + <doc>new start-ok method</doc> + <chassis name="server" implement="MUST" /> + + <field name="client-properties" domain="table" label="server properties"> + <doc>blah, blah</doc> + </field> + + <field name="mechanism" domain="shortstr" label="chosen security mechanism"> + <doc>blah, blah</doc> + </field> + + <field name="response" domain="longstr" label="security response data"> + <doc>blah blah</doc> + </field> + + <field name="locale" domain="shortstr" label="chosen locale"> + <doc>blah, blah</doc> + </field> + +</method> + + <method name="secure" synchronous="1" index="3" label="security mechanism challenge"> + <doc> + The SASL protocol works by exchanging challenges and responses until both peers have + received sufficient information to authenticate each other. This method challenges the + client to provide more information. + </doc> + + <chassis name="client" implement="MUST" /> + + <response name="secure-ok" /> + + <field name="challenge" domain="longstr" label="security challenge data"> + <doc> + Challenge information, a block of opaque binary data passed to the security mechanism. + </doc> + </field> + </method> + + <!-- - Method: connection.secure-ok - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + + <method name="secure-ok" synchronous="1" index="4" label="security mechanism response"> + <doc> + This method attempts to authenticate, passing a block of SASL data for the security + mechanism at the server side. + </doc> + + <chassis name="server" implement="MUST" /> + + <field name="response" domain="longstr" label="security response data"> + <doc> + A block of opaque data passed to the security mechanism. The contents of this data are + defined by the SASL security mechanism. + </doc> + <assert check="notnull" /> + </field> + </method> + + <method name="tune" synchronous="1" index="5" label="propose connection tuning parameters"> + <doc> + This method proposes a set of connection configuration values to the client. The client can + accept and/or adjust these. + </doc> + + <chassis name="client" implement="MUST" /> + + <response name="tune-ok" /> + + <field name="channel-max" domain="short" label="proposed maximum channels"> + <doc> + The maximum total number of channels that the server allows per connection. Zero means + that the server does not impose a fixed limit, but the number of allowed channels may be + limited by available server resources. + </doc> + </field> + + <field name="frame-max" domain="short" label="proposed maximum frame size"> + <doc> + The largest frame size that the server proposes for the connection. The client can + negotiate a lower value. Zero means that the server does not impose any specific limit but + may reject very large frames if it cannot allocate resources for them. + </doc> + + <rule name="minimum"> + <doc> + Until the frame-max has been negotiated, both peers MUST accept frames of up to + frame-min-size octets large, and the minimum negotiated value for frame-max is also + frame-min-size. + </doc> + <doc type="scenario"> + Client connects to server and sends a large properties field, creating a frame of + frame-min-size octets. The server must accept this frame. + </doc> + </rule> + </field> + + <field name="heartbeat-min" domain="short" label="desired heartbeat delay"/> + <field name="heartbeat-max" domain="short" label="desired heartbeat delay"/> + </method> + + <!-- - Method: connection.tune-ok - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + + <method name="tune-ok" synchronous="1" index="6" + label="negotiate connection tuning parameters"> + <doc> + This method sends the client's connection tuning parameters to the server. Certain fields + are negotiated, others provide capability information. + </doc> + + <chassis name="server" implement="MUST" /> + + <field name="channel-max" domain="short" label="negotiated maximum channels"> + <doc> + The maximum total number of channels that the client will use per connection. + </doc> + + <rule name="upper-limit"> + <doc> + If the client specifies a channel max that is higher than the value provided by the + server, the server MUST close the connection without attempting a negotiated close. The + server may report the error in some fashion to assist implementors. + </doc> + </rule> + + <assert check="notnull" /> + <assert check="le" value="channel-max" /> + </field> + + <field name="frame-max" domain="short" label="negotiated maximum frame size"> + <doc> + The largest frame size that the client and server will use for the connection. Zero means + that the client does not impose any specific limit but may reject very large frames if it + cannot allocate resources for them. Note that the frame-max limit applies principally to + content frames, where large contents can be broken into frames of arbitrary size. + </doc> + + <rule name="minimum"> + <doc> + Until the frame-max has been negotiated, both peers MUST accept frames of up to + frame-min-size octets large, and the minimum negotiated value for frame-max is also + frame-min-size. + </doc> + </rule> + + <rule name="upper-limit"> + <doc> + If the client specifies a frame max that is higher than the value provided by the + server, the server MUST close the connection without attempting a negotiated close. The + server may report the error in some fashion to assist implementors. + </doc> + </rule> + </field> + + <field name="heartbeat" domain="short" label="desired heartbeat delay"> + <doc> + The delay, in seconds, of the connection heartbeat that the client wants. Zero means the + client does not want a heartbeat. + </doc> + </field> + </method> + + <method name="open" synchronous="1" index="7" label="open connection to virtual host"> + <doc> + This method opens a connection to a virtual host, which is a collection of resources, and + acts to separate multiple application domains within a server. The server may apply + arbitrary limits per virtual host, such as the number of each type of entity that may be + used, per connection and/or in total. + </doc> + + <chassis name="server" implement="MUST" /> + + <response name="open-ok" /> + <response name="redirect" /> + + <field name="virtual-host" domain="path" label="virtual host name"> + <!-- TODO 0.82 - the entire vhost model needs review. This concept was prompted by the HTTP + vhost concept but does not fit very well into AMQP. Currently we use the vhost as a + "cluster identifier" which is inaccurate usage. /PH 2006/07/19 + --> + <doc> + The name of the virtual host to work with. + </doc> + + <rule name="separation"> + <doc> + 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. + </doc> + </rule> + + <rule name="security"> + <doc> + The server SHOULD verify that the client has permission to access the specified virtual + host. + </doc> + </rule> + <assert check="regexp" value="^[a-zA-Z0-9/-_]+$" /> + </field> + + <field name="capabilities" domain="array" label="required capabilities"> + <doc> + The client can specify zero or more capability names, delimited by spaces. The server can + use this string to how to process the client's connection request. + </doc> + </field> + + <field name="insist" domain="bit" label="insist on connecting to server"> + <doc> + In a configuration with multiple collaborating servers, the server may respond to a + Connection.Open method with a Connection.Redirect. The insist option tells the server that + the client is insisting on a connection to the specified server. + </doc> + <rule name="behaviour"> + <doc> + When the client uses the insist option, the server MUST NOT respond with a + Connection.Redirect method. If it cannot accept the client's connection request it + should respond by closing the connection with a suitable reply code. + </doc> + </rule> + </field> + </method> + + <method name="open-ok" synchronous="1" index="8" label="signal that connection is ready"> + <doc> + This method signals to the client that the connection is ready for use. + </doc> + + <chassis name="client" implement="MUST" /> + + <field name="known-hosts" domain="array" /> + </method> + + <method name="redirect" synchronous="1" index="9" label="redirects client to other server"> + <doc> + This method redirects the client to another server, based on the requested virtual host + and/or capabilities. + </doc> + + <rule name="usage"> + <doc> + 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. + </doc> + </rule> + + <chassis name="client" implement="MUST" /> + + <field name="host" domain="shortstr" label="server to connect to"> + <doc> + Specifies the server to connect to. This is an IP address or a DNS name, optionally + followed by a colon and a port number. If no port number is specified, the client should + use the default port number for the protocol. + </doc> + <assert check="notnull" /> + </field> + + <field name="known-hosts" domain="array" /> + </method> + +<method name = "heartbeat" index="10"> + <doc>new start-ok method</doc> + <chassis name="server" implement="MUST" /> +</method> + + <!-- - Method: connection.close - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + + <method name="close" synchronous="1" index="11" label="request a connection close"> + <doc> + This method indicates that the sender wants to close the connection. This may be due to + internal conditions (e.g. a forced shut-down) or due to an error handling a specific method, + i.e. an exception. When a close is due to an exception, the sender provides the class and + method id of the method which caused the exception. + </doc> + <!-- TODO: The connection close mechanism needs to be reviewed from the ODF documentation and + better expressed as rules here. /PH 2006/07/20 + --> + + <rule name="stability"> + <doc> + After sending this method any received method except the Close-OK method MUST be + discarded. + </doc> + </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" /> + </method> + + <!-- - Method: connection.close-ok - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + + <method name="close-ok" synchronous="1" index="12" label="confirm a connection close"> + <doc> + This method confirms a Connection.Close method and tells the recipient that it is safe to + release resources for the connection and close the socket. + </doc> + + <rule name="reporting"> + <doc> + A peer that detects a socket closure without having received a Close-Ok handshake method + SHOULD log the error. + </doc> + </rule> + + <chassis name="client" implement="MUST" /> + <chassis name="server" implement="MUST" /> + </method> + + +</class> + + + +<class name = "session010" index = "2"> + +<method name = "attach" index="1"> + + <doc>blah, blah</doc> + <chassis name="client" implement="MUST" /> + <chassis name="server" implement="MUST" /> + + <response name="start-ok" /> + + <field name="name" domain="mediumstr" label="blah"> + <doc>blah, blah</doc> + </field> + + <field name="force" domain="bit" label="blah"> + <doc>blah, blah</doc> + </field> + +</method> + +<method name = "attached" index="2"> + <doc>blah, blah</doc> + <chassis name="server" implement="MUST" /> + <chassis name="client" implement="MUST" /> + + <field name="name" domain="mediumstr" label="blah"> + <doc>blah, blah</doc> + </field> + +</method> + +<method name = "detach" index="3"> + + <doc>blah, blah</doc> + <chassis name="client" implement="MUST" /> + <chassis name="server" implement="MUST" /> + + <response name="start-ok" /> + + <field name="name" domain="mediumstr" label="blah"> + <doc>blah, blah</doc> + </field> + +</method> + +<method name = "detached" index="4"> + <doc>blah, blah</doc> + <chassis name="server" implement="MUST" /> + <chassis name="client" implement="MUST" /> + + <field name="name" domain="mediumstr" label="blah"> + <doc>blah, blah</doc> + </field> + + + <field name="detach-code" domain="octet" label="blah"> + <doc>blah, blah</doc> + </field> + +</method> + +<method name = "request-timeout" index="5"> + <doc>blah, blah</doc> + <chassis name="server" implement="MUST" /> + <chassis name="client" implement="MUST" /> + + <field name="timeout" domain="long" label="blah"> + <doc>blah, blah</doc> + </field> +</method> + +<method name = "timeout" index="6"> + <doc>blah, blah</doc> + <chassis name="server" implement="MUST" /> + <chassis name="client" implement="MUST" /> + + <field name="timeout" domain="long" label="blah"> + <doc>blah, blah</doc> + </field> +</method> + + +<method name = "command-point" index="7"> + <doc>blah, blah</doc> + <chassis name="server" implement="MUST" /> + <chassis name="client" implement="MUST" /> + + <field name="command-id" domain="rfc1982-long" label="blah"> + <doc>blah, blah</doc> + </field> + + + <field name="command-offset" domain="longlong" label="blah"> + <doc>blah, blah</doc> + </field> +</method> + +<method name = "expected" index="8"> + <doc>blah, blah</doc> + <chassis name="server" implement="MUST" /> + <chassis name="client" implement="MUST" /> + + <field name="commands" domain="sequence-set" label="blah"> + <doc>blah, blah</doc> + </field> + + <field name="fragments" domain="array" label="blah"> + <doc>blah, blah</doc> + </field> +</method> + +<method name = "confirmed" index="9"> + <doc>blah, blah</doc> + <chassis name="server" implement="MUST" /> + <chassis name="client" implement="MUST" /> + + <field name="commands" domain="sequence-set" label="blah"> + <doc>blah, blah</doc> + </field> + + <field name="fragments" domain="array" label="blah"> + <doc>blah, blah</doc> + </field> +</method> + +<method name = "completed" index="10"> + <doc>blah, blah</doc> + <chassis name="server" implement="MUST" /> + <chassis name="client" implement="MUST" /> + + <field name="commands" domain="sequence-set" label="blah"> + <doc>blah, blah</doc> + </field> + + <field name="timely-reply" domain="bit" label="blah"> + <doc>blah, blah</doc> + </field> +</method> + +<method name = "known-completed" index="11"> + <doc>blah, blah</doc> + <chassis name="server" implement="MUST" /> + <chassis name="client" implement="MUST" /> + + <field name="commands" domain="sequence-set" label="blah"> + <doc>blah, blah</doc> + </field> +</method> + +<method name = "flush" index="12"> + <doc>blah, blah</doc> + <chassis name="server" implement="MUST" /> + <chassis name="client" implement="MUST" /> + + <field name="expected" domain="bit" label="blah"> + <doc>blah, blah</doc> + </field> + <field name="confirmed" domain="bit" label="blah"> + <doc>blah, blah</doc> + </field> + <field name="completed" domain="bit" label="blah"> + <doc>blah, blah</doc> + </field> +</method> + +<method name = "gap" index="13"> + <doc>blah, blah</doc> + <chassis name="server" implement="MUST" /> + <chassis name="client" implement="MUST" /> + + <field name="commands" domain="sequence-set" label="blah"> + <doc>blah, blah</doc> + </field> +</method> + +</class> + +<class name="execution010" index="3"> + <method name = "sync" index="1"> + <doc>blah, blah</doc> + <chassis name="server" implement="MUST" /> + <chassis name="client" implement="MUST" /> + </method> + <method name = "result" index="2"> + <doc>blah, blah</doc> + <chassis name="server" implement="MUST" /> + <chassis name="client" implement="MUST" /> + <field name="command-id" domain="command-id"/> + <field name="value" domain="long-struct"/> + </method> + <method name = "exception" index="3"> + <doc>blah, blah</doc> + <chassis name="server" implement="MUST" /> + <chassis name="client" implement="MUST" /> + <field name="error-code" domain="short"/> + <field name="command-id" domain="long"/> + <field name="class-code" domain="octet"/> + <field name="command-code" domain="octet"/> + <field name="field-index" domain="octet"/> + <field name="description" domain="mediumstr"/> + <field name="error-info" domain="table"/> + </method> +</class> + +<class name="message010" index="4"> + <doc>blah, blah</doc> + <method name = "transfer" content="1" index="1"> + <doc>blah, blah</doc> + <chassis name="server" implement="MUST" /> + <chassis name="client" implement="MUST" /> + <field name="destination" domain="shortstr"/> + <field name="accept-mode" domain="octet"/> + <field name="acquire-mode" domain="octet"/> + </method> + <method name = "accept" index="2"> + <doc>blah, blah</doc> + <chassis name="server" implement="MUST" /> + <chassis name="client" implement="MUST" /> + <field name="commands" domain="sequence-set"/> + </method> + <method name = "reject" index="3"> + <doc>blah, blah</doc> + <chassis name="server" implement="MUST" /> + <chassis name="client" implement="MUST" /> + <field name="commands" domain="sequence-set"/> + <field name="code" domain="short"/> + <field name="text" domain="shortstr"/> + </method> + <method name = "release" index="4"> + <doc>blah, blah</doc> + <chassis name="server" implement="MUST" /> + <field name="commands" domain="sequence-set"/> + <field name="set-redelivered" domain="bit"/> + </method> + <method name = "acquire" index="5"> + <doc>blah, blah</doc> + <chassis name="server" implement="MUST" /> + <field name="transfers" domain="sequence-set"/> + <result> + <struct size="long" type="4"> + <field name="transfers" domain="sequence-set"/> + </struct> + </result> + </method> + + <method name = "subscribe" index="7"> + <doc>blah, blah</doc> + <chassis name="server" implement="MUST" /> + <field name="queue" domain="shortstr"/> + <field name="destination" domain="shortstr"/> + <field name="accept-mode" domain="octet"/> + <field name="acquire-mode" domain="octet"/> + <field name="exclusive" domain="bit"/> + <field name="resume-id" domain="mediumstr"/> + <field name="resume-ttl" domain="longlong"/> + <field name="arguments" domain="table"/> + </method> + <method name = "cancel" index="8"> + <doc>blah, blah</doc> + <chassis name="server" implement="MUST" /> + <field name="destination" domain="shortstr"/> + </method> + <method name = "set-flow-mode" index="9"> + <doc>blah, blah</doc> + <chassis name="server" implement="MUST" /> + <field name="destination" domain="shortstr"/> + <field name="flow-mode" domain="octet"/> + </method> + <method name = "flow" index="10"> + <doc>blah, blah</doc> + <chassis name="server" implement="MUST" /> + <field name="destination" domain="shortstr"/> + <field name="unit" domain="octet"/> + <field name="value" domain="long"/> + </method> + <method name = "flush" index="11"> + <doc>blah, blah</doc> + <chassis name="server" implement="MUST" /> + <field name="destination" domain="shortstr"/> + </method> + <method name = "stop" index="12"> + <doc>blah, blah</doc> + <chassis name="server" implement="MUST" /> + <field name="destination" domain="shortstr"/> + </method> +</class> + +<class name="tx010" index="5"> + <doc>blah, blah</doc> + <method name = "select" index="1"> + <doc>blah, blah</doc> + <chassis name="server" implement="MUST" /> + </method> + <method name = "commit" index="2"> + <doc>blah, blah</doc> + <chassis name="server" implement="MUST" /> + </method> + <method name = "rollback" index="3"> + <doc>blah, blah</doc> + <chassis name="server" implement="MUST" /> + </method> +</class> + +<class name="dtx010" index="6"> + <doc>blah, blah</doc> + <method name = "select" index="1"> + <doc>blah, blah</doc> + <chassis name="server" implement="MUST" /> + </method> + <method name = "start" index="2"> + <doc>blah, blah</doc> + <chassis name="server" implement="MUST" /> + <field name="xid" domain="xid010"/> + <field name="join" domain="bit"/> + <field name="resume" domain="bit"/> + <result> + <struct size="long" pack="short" type="1"> + <field name="status" domain="short" /> + </struct> + </result> + </method> + <method name = "end" index="3"> + <doc>blah, blah</doc> + <chassis name="server" implement="MUST" /> + <field name="xid" domain="xid010"/> + <field name="fail" domain="bit"/> + <field name="suspend" domain="bit"/> + <result> + <struct size="long" pack="short" type="1"> + <field name="status" domain="short" /> + </struct> + </result> + </method> + <method name = "commit" index="4"> + <doc>blah, blah</doc> + <chassis name="server" implement="MUST" /> + <field name="xid" domain="xid010"/> + <field name="one-phase" domain="bit"/> + <result> + <struct size="long" pack="short" type="1"> + <field name="status" domain="short" /> + </struct> + </result> + </method> + <method name = "forget" index="5"> + <doc>blah, blah</doc> + <chassis name="server" implement="MUST" /> + <field name="xid" domain="xid010"/> + </method> + <method name = "get-timeout" index="6"> + <doc>blah, blah</doc> + <chassis name="server" implement="MUST" /> + <field name="xid" domain="xid010"/> + <result> + <struct size="long" pack="short" type="2"> + <field name="timeout" domain="long" /> + </struct> + </result> + </method> + <method name = "prepare" index="7"> + <doc>blah, blah</doc> + <chassis name="server" implement="MUST" /> + <field name="xid" domain="xid010"/> + <result> + <struct size="long" pack="short" type="1"> + <field name="status" domain="short" /> + </struct> + </result> + </method> + <method name = "recover" index="8"> + <doc>blah, blah</doc> + <chassis name="server" implement="MUST" /> + <result> + <struct size="long" pack="short" type="3"> + <field name="in-doubt" domain="array" /> + </struct> + </result> + </method> + <method name = "rollback" index="9"> + <doc>blah, blah</doc> + <chassis name="server" implement="MUST" /> + <field name="xid" domain="xid010"/> + <result> + <struct size="long" pack="short" type="1"> + <field name="status" domain="short" /> + </struct> + </result> + </method> + <method name = "set-timeout" index="10"> + <doc>blah, blah</doc> + <chassis name="server" implement="MUST" /> + <field name="xid" domain="xid010"/> + <field name="timeout" domain="long"/> + </method> +</class> + +<class name="exchange010" index="7"> + <doc>blah, blah</doc> + <method name = "declare" index="1"> + <doc>blah, blah</doc> + <chassis name="server" implement="MUST" /> + <field name="exchange" domain="shortstr"/> + <field name="type" domain="shortstr"/> + <field name="alternate-exchange" domain="shortstr"/> + <field name="passive" domain="bit"/> + <field name="durable" domain="bit"/> + <field name="auto-delete" domain="bit"/> + <field name="arguments" domain="table"/> + </method> + <method name = "delete" index="2"> + <doc>blah, blah</doc> + <chassis name="server" implement="MUST" /> + <field name="exchange" domain="shortstr"/> + <field name="if-unused" domain="bit"/> + </method> + <method name = "query" index="3"> + <doc>blah, blah</doc> + <chassis name="server" implement="MUST" /> + <field name="name" domain="shortstr"/> + <result> + <struct size="long" type="1"> + <field name="type" domain="shortstr"/> + <field name="durable" domain="bit"/> + <field name="not-found" domain="bit"/> + <field name="arguments" domain="table"/> + </struct> + </result> + </method> + <method name = "bind" index="4"> + <doc>blah, blah</doc> + <chassis name="server" implement="MUST" /> + <field name="queue" domain="shortstr"/> + <field name="exchange" domain="shortstr"/> + <field name="binding-key" domain="shortstr"/> + <field name="arguments" domain="table"/> + </method> + <method name = "unbind" index="5"> + <doc>blah, blah</doc> + <chassis name="server" implement="MUST" /> + <field name="queue" domain="shortstr"/> + <field name="exchange" domain="shortstr"/> + <field name="binding-key" domain="shortstr"/> + </method> + <method name = "bound" index="6"> + <doc>blah, blah</doc> + <chassis name="server" implement="MUST" /> + <field name="exchange" domain="shortstr"/> + <field name="queue" domain="shortstr"/> + <field name="binding-key" domain="shortstr"/> + <field name="arguments" domain="table"/> + <result> + <struct size="long" type="2"> + <field name="exchange-not-found" domain="bit"/> + <field name="queue-not-found" domain="bit"/> + <field name="queue-not-matched" domain="bit"/> + <field name="key-not-matched" domain="bit"/> + <field name="arguments-not-matched" domain="bit"/> + </struct> + </result> + </method> +</class> + +<class name="queue010" index="8"> + <doc>blah, blah</doc> + <method name = "declare" index="1"> + <doc>blah, blah</doc> + <chassis name="server" implement="MUST" /> + <field name="queue" domain="shortstr"/> + <field name="alternate-exchange" domain="shortstr"/> + <field name="passive" domain="bit"/> + <field name="durable" domain="bit"/> + <field name="exclusive" domain="bit"/> + <field name="auto-delete" domain="bit"/> + <field name="arguments" domain="table"/> + </method> + <method name = "delete" index="2"> + <doc>blah, blah</doc> + <chassis name="server" implement="MUST" /> + <field name="queue" domain="shortstr"/> + <field name="if-unused" domain="bit"/> + <field name="if-empty" domain="bit"/> + </method> + <method name = "purge" index="3"> + <doc>blah, blah</doc> + <chassis name="server" implement="MUST" /> + <field name="queue" domain="shortstr"/> + </method> + <method name = "query" index="4"> + <doc>blah, blah</doc> + <chassis name="server" implement="MUST" /> + <field name="queue" domain="shortstr"/> + <result> + <struct size="long" type="1"> + <field name="name" domain="shortstr"/> + <field name="alternate-exchange" domain="shortstr"/> + <field name="durable" domain="bit"/> + <field name="exclusive" domain="bit"/> + <field name="auto-delete" domain="bit"/> + <field name="arguments" domain="table"/> + <field name="message-count" domain="long"/> + <field name="subscriber-count" domain="long"/> + </struct> + </result> + </method> +</class> + +</amqp> |