diff options
| author | Andrew Stitcher <astitcher@apache.org> | 2013-10-29 21:24:26 +0000 |
|---|---|---|
| committer | Andrew Stitcher <astitcher@apache.org> | 2013-10-29 21:24:26 +0000 |
| commit | de9e2692a0ddfdef4dac98334953019d6887902f (patch) | |
| tree | b5e58b2b7ee72826cb4f315367263e62bb51f107 /qpid/cpp | |
| parent | 465555eb739e2f9e7c53b92c53883278e959a0db (diff) | |
| download | qpid-python-de9e2692a0ddfdef4dac98334953019d6887902f.tar.gz | |
QPID-5237: Self-contained C++ source distribution
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1536900 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/cpp')
| -rw-r--r-- | qpid/cpp/BuildInstallSettings.cmake | 15 | ||||
| -rw-r--r-- | qpid/cpp/CMakeLists.txt | 19 | ||||
| -rw-r--r-- | qpid/cpp/specs/amqp.0-10-qpid-errata.stripped.xml | 1203 | ||||
| -rw-r--r-- | qpid/cpp/src/CMakeLists.txt | 123 | ||||
| -rw-r--r-- | qpid/cpp/src/qpid/broker/management-schema.xml | 597 |
5 files changed, 1878 insertions, 79 deletions
diff --git a/qpid/cpp/BuildInstallSettings.cmake b/qpid/cpp/BuildInstallSettings.cmake index eaa65f78ef..a980c81e8f 100644 --- a/qpid/cpp/BuildInstallSettings.cmake +++ b/qpid/cpp/BuildInstallSettings.cmake @@ -20,19 +20,6 @@ # Settings related to the Qpid build and install CMake/CTest/CPack procedure. # These are used by both the C++ and WCF components. -# Parse the version from QPID_VERSION.txt. -# Use the top level qpid/ file if we're in an SVN checkout, source dir otherwise. -if(EXISTS "${PROJECT_SOURCE_DIR}/../QPID_VERSION.txt") - file(READ "${PROJECT_SOURCE_DIR}/../QPID_VERSION.txt" QPID_VERSION) -elseif (EXISTS "${PROJECT_SOURCE_DIR}/QPID_VERSION.txt") - file(READ "${PROJECT_SOURCE_DIR}/QPID_VERSION.txt" QPID_VERSION) -else() - message(FATAL_ERROR "Cannot find QPID_VERSION.txt") -endif(EXISTS "${PROJECT_SOURCE_DIR}/../QPID_VERSION.txt") -string(REGEX REPLACE "^([0-9]+)\\.([0-9]+)\n" "\\1" QPID_VERSION_MAJOR "${QPID_VERSION}") -string(REGEX REPLACE "^([0-9]+)\\.([0-9]+)\n" "\\2" QPID_VERSION_MINOR "${QPID_VERSION}") -set (QPID_VERSION_FULL "${QPID_VERSION_MAJOR}.${QPID_VERSION_MINOR}") - # When doing installs, there are a number of components that the item can # be associated with. Since there may be different sets of components desired # for the various platforms, the component names are defined here. When @@ -155,7 +142,7 @@ if (UNIX) set (SHARE_INSTALL_DIR share CACHE PATH "Shared read only data directory") set (DOC_INSTALL_DIR ${SHARE_INSTALL_DIR}/doc/${CMAKE_PROJECT_NAME}-${QPID_VERSION_FULL} CACHE PATH "Shared read only data directory") mark_as_advanced(INCLUDE_INSTALL_DIR LIB_INSTALL_DIR SYSCONF_INSTALL_DIR SHARE_INSTALL_DIR DOC_INSTALL_DIR) - + set (QPID_COMPONENT_BROKER runtime) set (QPID_COMPONENT_CLIENT runtime) set (QPID_COMPONENT_COMMON runtime) diff --git a/qpid/cpp/CMakeLists.txt b/qpid/cpp/CMakeLists.txt index ad9d17aeaa..837a71cd44 100644 --- a/qpid/cpp/CMakeLists.txt +++ b/qpid/cpp/CMakeLists.txt @@ -23,15 +23,28 @@ if(COMMAND cmake_policy) cmake_policy(VERSION 2.6) endif(COMMAND cmake_policy) -include(BuildInstallSettings.cmake) - if (${CMAKE_VERSION} VERSION_LESS "2.8.0") set (OPTIONAL_ARG "") else() set (OPTIONAL_ARG OPTIONAL) endif() -set (qpidc_version ${QPID_VERSION_MAJOR}.${QPID_VERSION_MINOR}) +# Parse the version from QPID_VERSION.txt. +# Use the top level qpid/ file if we're in an SVN checkout, source dir otherwise. +find_file(QPID_VERSION_FILE NAMES QPID_VERSION.txt PATHS ${PROJECT_SOURCE_DIR}/.. ${PROJECT_SOURCE_DIR} NO_DEFAULT_PATH) +mark_as_advanced(QPID_VERSION_FILE) +if(NOT QPID_VERSION_FILE) + message(FATAL_ERROR "Cannot find QPID_VERSION.txt") +endif(NOT QPID_VERSION_FILE) + +file(READ ${QPID_VERSION_FILE} QPID_VERSION) +string(REGEX REPLACE "^([0-9]+)\\.([0-9]+)\n" "\\1" QPID_VERSION_MAJOR "${QPID_VERSION}") +string(REGEX REPLACE "^([0-9]+)\\.([0-9]+)\n" "\\2" QPID_VERSION_MINOR "${QPID_VERSION}") +set (QPID_VERSION_FULL "${QPID_VERSION_MAJOR}.${QPID_VERSION_MINOR}") + +set (qpidc_version ${QPID_VERSION_FULL}) + +include(BuildInstallSettings.cmake) enable_testing() include (CTest) diff --git a/qpid/cpp/specs/amqp.0-10-qpid-errata.stripped.xml b/qpid/cpp/specs/amqp.0-10-qpid-errata.stripped.xml new file mode 100644 index 0000000000..83ddf709e9 --- /dev/null +++ b/qpid/cpp/specs/amqp.0-10-qpid-errata.stripped.xml @@ -0,0 +1,1203 @@ +<?xml version="1.0"?> + +<!-- +(c) Copyright Cisco Systems, Credit Suisse, Deutsche Borse Systems, +Envoy Technologies, Inc., Goldman Sachs, IONA Technologies PLC, iMatix +Corporation sprl.,JPMorgan Chase Bank Inc. N.A, Novell, Rabbit +Technologies Ltd., Red Hat, Inc., TWIST Process Innovations ltd, and +29West Inc. 2006, 2007. + +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="0" xmlns="http://www.amqp.org/schema/amqp.xsd" port="5672" minor="10"> + <type name="bin8" code="0x00" fixed-width="1"/> + <type name="int8" code="0x01" fixed-width="1"/> + <type name="uint8" code="0x02" fixed-width="1"/> + <type name="char" code="0x04" fixed-width="1"/> + <type name="boolean" code="0x08" fixed-width="1"/> + <type name="bin16" code="0x10" fixed-width="2"/> + <type name="int16" code="0x11" fixed-width="2"/> + <type name="uint16" code="0x12" fixed-width="2"/> + <type name="bin32" code="0x20" fixed-width="4"/> + <type name="int32" code="0x21" fixed-width="4"/> + <type name="uint32" code="0x22" fixed-width="4"/> + <type name="float" code="0x23" fixed-width="4"/> + <type name="char-utf32" code="0x27" fixed-width="4"/> + <type name="sequence-no" fixed-width="4"/> + <type name="bin64" code="0x30" fixed-width="8"/> + <type name="int64" code="0x31" fixed-width="8"/> + <type name="uint64" code="0x32" fixed-width="8"/> + <type name="double" code="0x33" fixed-width="8"/> + <type name="datetime" code="0x38" fixed-width="8"/> + <type name="bin128" code="0x40" fixed-width="16"/> + <type name="uuid" code="0x48" fixed-width="16"/> + <type name="bin256" code="0x50" fixed-width="32"/> + <type name="bin512" code="0x60" fixed-width="64"/> + <type name="bin1024" code="0x70" fixed-width="128"/> + <type name="vbin8" code="0x80" variable-width="1"/> + <type name="str8-latin" code="0x84" variable-width="1"/> + <type name="str8" code="0x85" variable-width="1"/> + <type name="str8-utf16" code="0x86" variable-width="1"/> + <type name="vbin16" code="0x90" variable-width="2"/> + <type name="str16-latin" code="0x94" variable-width="2"/> + <type name="str16" code="0x95" variable-width="2"/> + <type name="str16-utf16" code="0x96" variable-width="2"/> + <type name="byte-ranges" variable-width="2"/> + <type name="sequence-set" variable-width="2"/> + <type name="vbin32" code="0xa0" variable-width="4"/> + <type name="map" code="0xa8" variable-width="4"/> + <type name="list" code="0xa9" variable-width="4"/> + <type name="array" code="0xaa" variable-width="4"/> + <type name="struct32" code="0xab" variable-width="4"/> + <type name="bin40" code="0xc0" fixed-width="5"/> + <type name="dec32" code="0xc8" fixed-width="5"/> + <type name="bin72" code="0xd0" fixed-width="9"/> + <type name="dec64" code="0xd8" fixed-width="9"/> + <type name="void" code="0xf0" fixed-width="0"/> + <type name="bit" code="0xf1" fixed-width="0"/> + <constant name="MIN-MAX-FRAME-SIZE" value="4096"/> + <domain name="segment-type" type="uint8"> + <enum> + <choice name="control" value="0"/> + <choice name="command" value="1"/> + <choice name="header" value="2"/> + <choice name="body" value="3"/> + </enum> + </domain> + <domain name="track" type="uint8"> + <enum> + <choice name="control" value="0"/> + <choice name="command" value="1"/> + </enum> + </domain> + <domain name="str16-array" type="array"/> + <class name="connection" code="0x1"> + <role name="server" implement="MUST"/> + <role name="client" implement="MUST"/> + <domain name="close-code" type="uint16"> + <enum> + <choice name="normal" value="200"/> + <choice name="connection-forced" value="320"/> + <choice name="invalid-path" value="402"/> + <choice name="framing-error" value="501"/> + </enum> + </domain> + <domain name="amqp-host-url" type="str16"/> + <domain name="amqp-host-array" type="array"/> + <control name="start" code="0x1"> + <rule name="protocol-name"/> + <rule name="client-support"/> + <implement role="client" handle="MUST"/> + <response name="start-ok"/> + <field name="server-properties" type="map"> + <rule name="required-fields"/> + </field> + <field name="mechanisms" type="str16-array" required="true"/> + <field name="locales" type="str16-array" required="true"> + <rule name="required-support"/> + </field> + </control> + <control name="start-ok" code="0x2"> + <implement role="server" handle="MUST"/> + <field name="client-properties" type="map"> + <rule name="required-fields"/> + </field> + <field name="mechanism" type="str8" required="true"> + <rule name="security"/> + <rule name="validity"/> + </field> + <field name="response" type="vbin32" required="true"/> + <field name="locale" type="str8" required="true"/> + </control> + <control name="secure" code="0x3"> + <implement role="client" handle="MUST"/> + <response name="secure-ok"/> + <field name="challenge" type="vbin32" required="true"/> + </control> + <control name="secure-ok" code="0x4"> + <implement role="server" handle="MUST"/> + <field name="response" type="vbin32" required="true"/> + </control> + <control name="tune" code="0x5"> + <implement role="client" handle="MUST"/> + <response name="tune-ok"/> + <field name="channel-max" type="uint16"/> + <field name="max-frame-size" type="uint16"> + <rule name="minimum"/> + </field> + <field name="heartbeat-min" type="uint16"/> + <field name="heartbeat-max" type="uint16"> + <rule name="permitted-range"/> + <rule name="no-heartbeat-min"/> + </field> + </control> + <control name="tune-ok" code="0x6"> + <implement role="server" handle="MUST"/> + <field name="channel-max" type="uint16" required="true"> + <rule name="upper-limit"/> + <rule name="available-channels"/> + </field> + <field name="max-frame-size" type="uint16"> + <rule name="minimum"/> + <rule name="upper-limit"/> + <rule name="max-frame-size"/> + </field> + <field name="heartbeat" type="uint16"> + <rule name="permitted-range"/> + <rule name="no-heartbeat-min"/> + </field> + </control> + <control name="open" code="0x7"> + <implement role="server" handle="MUST"/> + <response name="open-ok"/> + <response name="redirect"/> + <field name="virtual-host" type="str8" required="true"> + <rule name="separation"/> + <rule name="security"/> + </field> + <field name="capabilities" type="str16-array"/> + <field name="insist" type="bit"> + <rule name="behavior"/> + </field> + </control> + <control name="open-ok" code="0x8"> + <implement role="client" handle="MUST"/> + <field name="known-hosts" type="amqp-host-array"/> + </control> + <control name="redirect" code="0x9"> + <rule name="usage"/> + <implement role="client" handle="MUST"/> + <field name="host" type="amqp-host-url" required="true"/> + <field name="known-hosts" type="amqp-host-array"/> + </control> + <control name="heartbeat" code="0xa"> + <implement role="client" handle="MAY"/> + <implement role="server" handle="MAY"/> + </control> + <control name="close" code="0xb"> + <implement role="client" handle="MUST"/> + <implement role="server" handle="MUST"/> + <response name="close-ok"/> + <field name="reply-code" type="close-code" required="true"/> + <field name="reply-text" type="str8"/> + </control> + <control name="close-ok" code="0xc"> + <rule name="reporting"/> + <implement role="client" handle="MUST"/> + <implement role="server" handle="MUST"/> + </control> + </class> + <class name="session" code="0x2"> + <rule name="attachment"/> + <role name="server" implement="MUST"/> + <role name="client" implement="MUST"/> + <role name="sender" implement="MUST"/> + <role name="receiver" implement="MUST"/> + <domain name="name" type="vbin16"/> + <domain name="detach-code" type="uint8"> + <enum> + <choice name="normal" value="0"/> + <choice name="session-busy" value="1"/> + <choice name="transport-busy" value="2"/> + <choice name="not-attached" value="3"/> + <choice name="unknown-ids" value="4"/> + </enum> + </domain> + <domain name="commands" type="sequence-set"/> + <struct name="header" size="1" pack="1"> + <field name="sync" type="bit"/> + </struct> + <struct name="command-fragment" size="0" pack="0"> + <field name="command-id" type="sequence-no" required="true"/> + <field name="byte-ranges" type="byte-ranges" required="true"/> + </struct> + <domain name="command-fragments" type="array"/> + <control name="attach" code="0x1"> + <rule name="one-transport-per-session"/> + <rule name="one-session-per-transport"/> + <rule name="idempotence"/> + <rule name="scoping"/> + <implement role="server" handle="MUST"/> + <implement role="client" handle="MAY"/> + <response name="attached"/> + <response name="detached"/> + <field name="name" type="name" required="true"/> + <field name="force" type="bit"/> + </control> + <control name="attached" code="0x2"> + <implement role="server" handle="MUST"/> + <implement role="client" handle="MUST"/> + <field name="name" type="name" required="true"/> + </control> + <control name="detach" code="0x3"> + <implement role="server" handle="MUST"/> + <implement role="client" handle="MUST"/> + <response name="detached"/> + <field name="name" type="name" required="true"/> + </control> + <control name="detached" code="0x4"> + <implement role="server" handle="MUST"/> + <implement role="client" handle="MUST"/> + <field name="name" type="name" required="true"/> + <field name="code" type="detach-code" required="true"/> + </control> + <control name="request-timeout" code="0x5"> + <rule name="maximum-granted-timeout"/> + <implement role="sender" handle="MUST"/> + <implement role="receiver" handle="MUST"/> + <response name="timeout"/> + <field name="timeout" type="uint32"/> + </control> + <control name="timeout" code="0x6"> + <implement role="sender" handle="MUST"/> + <implement role="receiver" handle="MUST"/> + <field name="timeout" type="uint32"/> + </control> + <control name="command-point" code="0x7"> + <rule name="newly-attached-transports"/> + <rule name="zero-offset"/> + <rule name="nonzero-offset"/> + <implement role="receiver" handle="MUST"/> + <field name="command-id" type="sequence-no" required="true"/> + <field name="command-offset" type="uint64" required="true"/> + </control> + <control name="expected" code="0x8"> + <rule name="include-next-command"/> + <rule name="commands-empty-means-new-session"/> + <rule name="no-overlaps"/> + <rule name="minimal-fragments"/> + <implement role="sender" handle="MUST"/> + <field name="commands" type="commands" required="true"/> + <field name="fragments" type="command-fragments"/> + </control> + <control name="confirmed" code="0x9"> + <rule name="durability"/> + <rule name="no-overlaps"/> + <rule name="minimal-fragments"/> + <implement role="sender" handle="MUST"/> + <field name="commands" type="commands"> + <rule name="exclude-known-complete"/> + </field> + <field name="fragments" type="command-fragments"/> + </control> + <control name="completed" code="0xa"> + <rule name="known-completed-reply"/> + <rule name="delayed-reply"/> + <rule name="merged-reply"/> + <implement role="sender" handle="MUST"/> + <field name="commands" type="commands"> + <rule name="completed-implies-confirmed"/> + <rule name="exclude-known-complete"/> + </field> + <field name="timely-reply" type="bit"/> + </control> + <control name="known-completed" code="0xb"> + <rule name="stateless"/> + <implement role="receiver" handle="MUST"/> + <field name="commands" type="commands"> + <rule name="known-completed-implies-known-confirmed"/> + </field> + </control> + <control name="flush" code="0xc"> + <implement role="receiver" handle="MUST"/> + <field name="expected" type="bit"/> + <field name="confirmed" type="bit"/> + <field name="completed" type="bit"/> + </control> + <control name="gap" code="0xd"> + <rule name="gap-confirmation-and-completion"/> + <rule name="aborted-commands"/> + <rule name="completed-or-confirmed-commands"/> + <implement role="receiver" handle="MUST"/> + <field name="commands" type="commands"/> + </control> + </class> + <class name="execution" code="0x3"> + <role name="server" implement="MUST"/> + <role name="client" implement="MUST"/> + <domain name="error-code" type="uint16"> + <enum> + <choice name="unauthorized-access" value="403"/> + <choice name="not-found" value="404"/> + <choice name="resource-locked" value="405"/> + <choice name="precondition-failed" value="406"/> + <choice name="resource-deleted" value="408"/> + <choice name="illegal-state" value="409"/> + <choice name="command-invalid" value="503"/> + <choice name="resource-limit-exceeded" value="506"/> + <choice name="not-allowed" value="530"/> + <choice name="illegal-argument" value="531"/> + <choice name="not-implemented" value="540"/> + <choice name="internal-error" value="541"/> + <choice name="invalid-argument" value="542"/> + </enum> + </domain> + <command name="sync" code="0x1"> + <implement role="server" handle="MUST"/> + <implement role="client" handle="MUST"/> + </command> + <command name="result" code="0x2"> + <implement role="server" handle="MUST"/> + <implement role="client" handle="MUST"/> + <field name="command-id" type="sequence-no" required="true"/> + <field name="value" type="struct32"/> + </command> + <command name="exception" code="0x3"> + <implement role="client" handle="MUST"/> + <implement role="server" handle="MUST"/> + <field name="error-code" type="error-code" required="true"/> + <field name="command-id" type="sequence-no"/> + <field name="class-code" type="uint8"/> + <field name="command-code" type="uint8"/> + <field name="field-index" type="uint8"/> + <field name="description" type="str16"/> + <field name="error-info" type="map"/> + </command> + </class> + <class name="message" code="0x4"> + <rule name="persistent-message"/> + <rule name="no-persistent-message-discard"/> + <rule name="throttling"/> + <rule name="non-persistent-message-overflow"/> + <rule name="non-persistent-message-discard"/> + <rule name="min-priority-levels"/> + <rule name="priority-level-implementation"/> + <rule name="priority-delivery"/> + <role name="server" implement="MUST"/> + <role name="client" implement="MUST"/> + <domain name="destination" type="str8"/> + <domain name="accept-mode" type="uint8"> + <enum> + <choice name="explicit" value="0"/> + <choice name="none" value="1"/> + </enum> + </domain> + <domain name="acquire-mode" type="uint8"> + <enum> + <choice name="pre-acquired" value="0"/> + <choice name="not-acquired" value="1"/> + </enum> + </domain> + <domain name="reject-code" type="uint16"> + <enum> + <choice name="unspecified" value="0"/> + <choice name="unroutable" value="1"/> + <choice name="immediate" value="2"/> + </enum> + </domain> + <domain name="resume-id" type="str16"/> + <domain name="delivery-mode" type="uint8"> + <enum> + <choice name="non-persistent" value="1"/> + <choice name="persistent" value="2"/> + </enum> + </domain> + <domain name="delivery-priority" type="uint8"> + <enum> + <choice name="lowest" value="0"/> + <choice name="lower" value="1"/> + <choice name="low" value="2"/> + <choice name="below-average" value="3"/> + <choice name="medium" value="4"/> + <choice name="above-average" value="5"/> + <choice name="high" value="6"/> + <choice name="higher" value="7"/> + <choice name="very-high" value="8"/> + <choice name="highest" value="9"/> + </enum> + </domain> + <struct name="delivery-properties" code="0x1" size="4" pack="2"> + <field name="discard-unroutable" type="bit"/> + <field name="immediate" type="bit"/> + <field name="redelivered" type="bit"> + <rule name="implementation"/> + <rule name="hinting"/> + </field> + <field name="priority" type="delivery-priority" required="true"/> + <field name="delivery-mode" type="delivery-mode" required="true"/> + <field name="ttl" type="uint64"> + <rule name="ttl-decrement"/> + </field> + <field name="timestamp" type="datetime"/> + <field name="expiration" type="datetime"/> + <field name="exchange" type="exchange.name"/> + <field name="routing-key" type="str8"/> + <field name="resume-id" type="resume-id"/> + <field name="resume-ttl" type="uint64"/> + </struct> + <struct name="fragment-properties" code="0x2" size="4" pack="2"> + <field name="first" type="bit" default="1"/> + <field name="last" type="bit" default="1"/> + <field name="fragment-size" type="uint64"/> + </struct> + <struct name="reply-to" size="2" pack="2"> + <field name="exchange" type="exchange.name"/> + <field name="routing-key" type="str8"/> + </struct> + <struct name="message-properties" code="0x3" size="4" pack="2"> + <field name="content-length" type="uint64"/> + <field name="message-id" type="uuid"> + <rule name="unique"/> + <rule name="immutable"/> + </field> + <field name="correlation-id" type="vbin16"/> + <field name="reply-to" type="reply-to"/> + <field name="content-type" type="str8"/> + <field name="content-encoding" type="str8"/> + <field name="user-id" type="vbin16"> + <rule name="authentication"/> + </field> + <field name="app-id" type="vbin16"/> + <field name="application-headers" type="map"/> + </struct> + <domain name="flow-mode" type="uint8"> + <enum> + <choice name="credit" value="0"/> + <choice name="window" value="1"/> + </enum> + </domain> + <domain name="credit-unit" type="uint8"> + <enum> + <choice name="message" value="0"/> + <choice name="byte" value="1"/> + </enum> + </domain> + <command name="transfer" code="0x1"> + <rule name="transactional-publish"/> + <implement role="server" handle="MUST"/> + <implement role="client" handle="MUST"/> + <field name="destination" type="destination"> + <rule name="blank-destination"/> + <exception name="nonexistent-exchange" error-code="not-found"/> + </field> + <field name="accept-mode" type="accept-mode" required="true"/> + <field name="acquire-mode" type="acquire-mode" required="true"/> + <segments> + <header> + <entry type="delivery-properties"/> + <entry type="fragment-properties"/> + <entry type="message-properties"/> + </header> + <body/> + </segments> + </command> + <command name="accept" code="0x2"> + <rule name="acquisition"/> + <implement role="server" handle="MUST"/> + <implement role="client" handle="MUST"/> + <field name="transfers" type="session.commands" required="true"/> + </command> + <command name="reject" code="0x3"> + <rule name="alternate-exchange"/> + <rule name="acquisition"/> + <implement role="server" handle="MUST"/> + <implement role="client" handle="MUST"/> + <field name="transfers" type="session.commands" required="true"/> + <field name="code" type="reject-code" required="true"/> + <field name="text" type="str8"/> + </command> + <command name="release" code="0x4"> + <rule name="ordering"/> + <implement role="server" handle="MUST"/> + <implement role="client" handle="MAY"/> + <field name="transfers" type="session.commands" required="true"/> + <field name="set-redelivered" type="bit"/> + </command> + <command name="acquire" code="0x5"> + <rule name="one-to-one"/> + <implement role="server" handle="MUST"/> + <field name="transfers" type="session.commands" required="true"/> + <result> + <struct name="acquired" code="0x4" size="4" pack="2"> + <field name="transfers" type="session.commands" required="true"/> + </struct> + </result> + </command> + <command name="resume" code="0x6"> + <implement role="server" handle="MUST"/> + <implement role="client" handle="MUST"/> + <field name="destination" type="destination"> + <exception name="destination-not-found" error-code="not-found"/> + </field> + <field name="resume-id" type="resume-id" required="true"> + <rule name="unknown-resume-id"/> + </field> + <result> + <struct name="message-resume-result" code="0x5" size="4" pack="2"> + <field name="offset" type="uint64"/> + </struct> + </result> + </command> + <command name="subscribe" code="0x7"> + <rule name="simultaneous-subscriptions"/> + <rule name="default-flow-mode"/> + <exception name="queue-deletion" error-code="resource-deleted"/> + <exception name="queue-not-found" error-code="not-found"/> + <rule name="initial-credit"/> + <implement role="server" handle="MUST"/> + <field name="queue" type="queue.name" required="true"/> + <field name="destination" type="destination"> + <exception name="unique-subscriber-destination" error-code="not-allowed"/> + </field> + <field name="accept-mode" type="accept-mode" required="true"/> + <field name="acquire-mode" type="acquire-mode" required="true"/> + <field name="exclusive" type="bit"> + <exception name="in-use" error-code="resource-locked"/> + </field> + <field name="resume-id" type="resume-id"/> + <field name="resume-ttl" type="uint64"/> + <field name="arguments" type="map"/> + </command> + <command name="cancel" code="0x8"> + <rule name="post-cancel-transfer-resolution"/> + <implement role="server" handle="MUST"/> + <field name="destination" type="destination" required="true"> + <exception name="subscription-not-found" error-code="not-found"/> + </field> + </command> + <command name="set-flow-mode" code="0x9"> + <rule name="byte-accounting"/> + <rule name="mode-switching"/> + <rule name="default-flow-mode"/> + <implement role="server" handle="MUST"/> + <implement role="client" handle="MUST"/> + <field name="destination" type="destination"/> + <field name="flow-mode" type="flow-mode" required="true"/> + </command> + <command name="flow" code="0xa"> + <implement role="server" handle="MUST"/> + <implement role="client" handle="MUST"/> + <field name="destination" type="destination"/> + <field name="unit" type="credit-unit" required="true"/> + <field name="value" type="uint32"/> + </command> + <command name="flush" code="0xb"> + <implement role="server" handle="MUST"/> + <field name="destination" type="destination"/> + </command> + <command name="stop" code="0xc"> + <implement role="server" handle="MUST"/> + <implement role="client" handle="MUST"/> + <field name="destination" type="destination"/> + </command> + </class> + <class name="tx" code="0x5"> + <rule name="duplicate-tracking"/> + <role name="server" implement="SHOULD"/> + <command name="select" code="0x1"> + <exception name="exactly-once" error-code="illegal-state"/> + <exception name="no-dtx" error-code="illegal-state"/> + <exception name="explicit-accepts" error-code="not-allowed"/> + <implement role="server" handle="MUST"/> + </command> + <command name="commit" code="0x2"> + <exception name="select-required" error-code="illegal-state"/> + <implement role="server" handle="MUST"/> + </command> + <command name="rollback" code="0x3"> + <exception name="select-required" error-code="illegal-state"/> + <implement role="server" handle="MUST"/> + </command> + </class> + <class name="dtx" code="0x6"> + <rule name="transactionality"/> + <role name="server" implement="MAY"/> + <role name="client" implement="MAY"/> + <domain name="xa-status" type="uint16"> + <enum> + <choice name="xa-ok" value="0"/> + <choice name="xa-rbrollback" value="1"/> + <choice name="xa-rbtimeout" value="2"/> + <choice name="xa-heurhaz" value="3"/> + <choice name="xa-heurcom" value="4"/> + <choice name="xa-heurrb" value="5"/> + <choice name="xa-heurmix" value="6"/> + <choice name="xa-rdonly" value="7"/> + </enum> + </domain> + <struct name="xa-result" code="0x1" size="4" pack="2"> + <field name="status" type="xa-status" required="true"/> + </struct> + <struct name="xid" code="0x4" size="4" pack="2"> + <field name="format" type="uint32" required="true"/> + <field name="global-id" type="vbin8" required="true"/> + <field name="branch-id" type="vbin8" required="true"/> + </struct> + <command name="select" code="0x1"> + <implement role="server" handle="MAY"/> + </command> + <command name="start" code="0x2"> + <exception name="illegal-state" error-code="illegal-state"/> + <exception name="already-known" error-code="not-allowed"/> + <exception name="join-and-resume" error-code="not-allowed"/> + <implement role="server" handle="MAY"/> + <field name="xid" type="xid" required="true"> + <exception name="unknown-xid" error-code="not-allowed"/> + </field> + <field name="join" type="bit"> + <exception name="unsupported" error-code="not-implemented"/> + </field> + <field name="resume" type="bit"/> + <result type="xa-result"/> + </command> + <command name="end" code="0x3"> + <exception name="illegal-state" error-code="illegal-state"/> + <exception name="suspend-and-fail" error-code="not-allowed"/> + <rule name="success"/> + <rule name="session-closed"/> + <implement role="server" handle="MAY"/> + <field name="xid" type="xid" required="true"> + <exception name="not-associated" error-code="illegal-state"/> + </field> + <field name="fail" type="bit"> + <rule name="failure"/> + </field> + <field name="suspend" type="bit"> + <rule name="resume"/> + </field> + <result type="xa-result"/> + </command> + <command name="commit" code="0x4"> + <exception name="illegal-state" error-code="illegal-state"/> + <implement role="server" handle="MAY"/> + <field name="xid" type="xid" required="true"> + <exception name="unknown-xid" error-code="not-found"/> + <exception name="not-disassociated" error-code="illegal-state"/> + </field> + <field name="one-phase" type="bit"> + <exception name="one-phase" error-code="illegal-state"/> + <exception name="two-phase" error-code="illegal-state"/> + </field> + <result type="xa-result"/> + </command> + <command name="forget" code="0x5"> + <exception name="illegal-state" error-code="illegal-state"/> + <implement role="server" handle="MAY"/> + <field name="xid" type="xid" required="true"> + <exception name="unknown-xid" error-code="not-found"/> + <exception name="not-disassociated" error-code="illegal-state"/> + </field> + </command> + <command name="get-timeout" code="0x6"> + <implement role="server" handle="MAY"/> + <field name="xid" type="xid" required="true"> + <exception name="unknown-xid" error-code="not-found"/> + </field> + <result> + <struct name="get-timeout-result" code="0x2" size="4" pack="2"> + <field name="timeout" type="uint32" required="true"/> + </struct> + </result> + </command> + <command name="prepare" code="0x7"> + <exception name="illegal-state" error-code="illegal-state"/> + <rule name="obligation-1"/> + <rule name="obligation-2"/> + <implement role="server" handle="MAY"/> + <field name="xid" type="xid" required="true"> + <exception name="unknown-xid" error-code="not-found"/> + <exception name="not-disassociated" error-code="illegal-state"/> + </field> + <result type="xa-result"/> + </command> + <command name="recover" code="0x8"> + <implement role="server" handle="MAY"/> + <result> + <struct name="recover-result" code="0x3" size="4" pack="2"> + <field name="in-doubt" type="array" required="true"/> + </struct> + </result> + </command> + <command name="rollback" code="0x9"> + <exception name="illegal-state" error-code="illegal-state"/> + <implement role="server" handle="MAY"/> + <field name="xid" type="xid" required="true"> + <exception name="unknown-xid" error-code="not-found"/> + <exception name="not-disassociated" error-code="illegal-state"/> + </field> + <result type="xa-result"/> + </command> + <command name="set-timeout" code="0xa"> + <rule name="effective"/> + <rule name="reset"/> + <implement role="server" handle="MAY"/> + <field name="xid" type="xid" required="true"> + <exception name="unknown-xid" error-code="not-found"/> + </field> + <field name="timeout" type="uint32" required="true"/> + </command> + </class> + <class name="exchange" code="0x7"> + <rule name="required-types"/> + <rule name="recommended-types"/> + <rule name="required-instances"/> + <rule name="default-exchange"/> + <rule name="default-access"/> + <rule name="extensions"/> + <role name="server" implement="MUST"/> + <role name="client" implement="MUST"/> + <domain name="name" type="str8"/> + <command name="declare" code="0x1"> + <rule name="minimum"/> + <implement role="server" handle="MUST"/> + <field name="exchange" type="name" required="true"> + <exception name="reserved-names" error-code="not-allowed"/> + <exception name="exchange-name-required" error-code="invalid-argument"/> + </field> + <field name="type" type="str8" required="true"> + <exception name="typed" error-code="not-allowed"/> + <exception name="exchange-type-not-found" error-code="not-found"/> + </field> + <field name="alternate-exchange" type="name"> + <rule name="empty-name"/> + <exception name="pre-existing-exchange" error-code="not-allowed"/> + <rule name="double-failure"/> + </field> + <field name="passive" type="bit"> + <exception name="not-found" error-code="not-found"/> + </field> + <field name="durable" type="bit"> + <rule name="support"/> + <rule name="sticky"/> + </field> + <field name="auto-delete" type="bit"> + <rule name="sticky"/> + </field> + <field name="arguments" type="map"> + <exception name="unknown-argument" error-code="not-implemented"/> + </field> + </command> + <command name="delete" code="0x2"> + <implement role="server" handle="MUST"/> + <field name="exchange" type="name" required="true"> + <exception name="exists" error-code="not-found"/> + <exception name="exchange-name-required" error-code="invalid-argument"/> + <exception name="used-as-alternate" error-code="not-allowed"/> + </field> + <field name="if-unused" type="bit"> + <exception name="exchange-in-use" error-code="precondition-failed"/> + </field> + </command> + <command name="query" code="0x3"> + <implement role="server" handle="MUST"/> + <field name="name" type="str8"/> + <result> + <struct name="exchange-query-result" code="0x1" size="4" pack="2"> + <field name="type" type="str8"/> + <field name="durable" type="bit"/> + <field name="not-found" type="bit"/> + <field name="arguments" type="map"/> + </struct> + </result> + </command> + <command name="bind" code="0x4"> + <rule name="duplicates"/> + <rule name="durable-exchange"/> + <rule name="binding-count"/> + <rule name="multiple-bindings"/> + <implement role="server" handle="MUST"/> + <field name="queue" type="queue.name" required="true"> + <exception name="empty-queue" error-code="invalid-argument"/> + <exception name="queue-existence" error-code="not-found"/> + </field> + <field name="exchange" type="name" required="true"> + <exception name="exchange-existence" error-code="not-found"/> + <exception name="exchange-name-required" error-code="invalid-argument"/> + </field> + <field name="binding-key" type="str8" required="true"/> + <field name="arguments" type="map"> + <exception name="unknown-argument" error-code="not-implemented"/> + </field> + </command> + <command name="unbind" code="0x5"> + <implement role="server" handle="MUST"/> + <field name="queue" type="queue.name" required="true"> + <exception name="non-existent-queue" error-code="not-found"/> + </field> + <field name="exchange" type="name" required="true"> + <exception name="non-existent-exchange" error-code="not-found"/> + <exception name="exchange-name-required" error-code="invalid-argument"/> + </field> + <field name="binding-key" type="str8" required="true"> + <exception name="non-existent-binding-key" error-code="not-found"/> + </field> + </command> + <command name="bound" code="0x6"> + <implement role="server" handle="MUST"/> + <field name="exchange" type="str8"/> + <field name="queue" type="str8" required="true"/> + <field name="binding-key" type="str8"/> + <field name="arguments" type="map"/> + <result> + <struct name="exchange-bound-result" code="0x2" size="4" pack="2"> + <field name="exchange-not-found" type="bit"/> + <field name="queue-not-found" type="bit"/> + <field name="queue-not-matched" type="bit"/> + <field name="key-not-matched" type="bit"/> + <field name="args-not-matched" type="bit"/> + </struct> + </result> + </command> + </class> + <class name="queue" code="0x8"> + <rule name="any-content"/> + <role name="server" implement="MUST"/> + <role name="client" implement="MUST"/> + <domain name="name" type="str8"/> + <command name="declare" code="0x1"> + <rule name="default-binding"/> + <rule name="minimum-queues"/> + <implement role="server" handle="MUST"/> + <field name="queue" type="name" required="true"> + <exception name="reserved-prefix" error-code="not-allowed"/> + </field> + <field name="alternate-exchange" type="exchange.name"> + <exception name="pre-existing-exchange" error-code="not-allowed"/> + <exception name="unknown-exchange" error-code="not-found"/> + </field> + <field name="passive" type="bit"> + <exception name="passive" error-code="not-found"/> + </field> + <field name="durable" type="bit"> + <rule name="persistence"/> + <rule name="types"/> + <rule name="pre-existence"/> + </field> + <field name="exclusive" type="bit"> + <rule name="types"/> + <exception name="in-use" error-code="resource-locked"/> + </field> + <field name="auto-delete" type="bit"> + <rule name="pre-existence"/> + </field> + <field name="arguments" type="map"> + <exception name="unknown-argument" error-code="not-implemented"/> + </field> + </command> + <command name="delete" code="0x2"> + <implement role="server" handle="MUST"/> + <field name="queue" type="name" required="true"> + <exception name="empty-name" error-code="invalid-argument"/> + <exception name="queue-exists" error-code="not-found"/> + </field> + <field name="if-unused" type="bit"> + <exception name="if-unused-flag" error-code="precondition-failed"/> + </field> + <field name="if-empty" type="bit"> + <exception name="not-empty" error-code="precondition-failed"/> + </field> + </command> + <command name="purge" code="0x3"> + <rule name="empty"/> + <rule name="pending-messages"/> + <rule name="purge-recovery"/> + <implement role="server" handle="MUST"/> + <field name="queue" type="name" required="true"> + <exception name="empty-name" error-code="invalid-argument"/> + <exception name="queue-exists" error-code="not-found"/> + </field> + </command> + <command name="query" code="0x4"> + <implement role="server" handle="MUST"/> + <field name="queue" type="name" required="true"/> + <result> + <struct name="queue-query-result" code="0x1" size="4" pack="2"> + <field name="queue" type="name" required="true"/> + <field name="alternate-exchange" type="exchange.name"/> + <field name="durable" type="bit"/> + <field name="exclusive" type="bit"/> + <field name="auto-delete" type="bit"/> + <field name="arguments" type="map"/> + <field name="message-count" type="uint32" required="true"/> + <field name="subscriber-count" type="uint32" required="true"/> + </struct> + </result> + </command> + </class> + <class name="file" code="0x9"> + <rule name="reliable-storage"/> + <rule name="no-discard"/> + <rule name="priority-levels"/> + <rule name="acknowledgement-support"/> + <role name="server" implement="MAY"/> + <role name="client" implement="MAY"/> + <struct name="file-properties" code="0x1" size="4" pack="2"> + <field name="content-type" type="str8"/> + <field name="content-encoding" type="str8"/> + <field name="headers" type="map"/> + <field name="priority" type="uint8"/> + <field name="reply-to" type="str8"/> + <field name="message-id" type="str8"/> + <field name="filename" type="str8"/> + <field name="timestamp" type="datetime"/> + <field name="cluster-id" type="str8"/> + </struct> + <domain name="return-code" type="uint16"> + <enum> + <choice name="content-too-large" value="311"/> + <choice name="no-route" value="312"/> + <choice name="no-consumers" value="313"/> + </enum> + </domain> + <command name="qos" code="0x1"> + <implement role="server" handle="MUST"/> + <response name="qos-ok"/> + <field name="prefetch-size" type="uint32"/> + <field name="prefetch-count" type="uint16"> + <rule name="prefetch-discretion"/> + </field> + <field name="global" type="bit"/> + </command> + <command name="qos-ok" code="0x2"> + <implement role="client" handle="MUST"/> + </command> + <command name="consume" code="0x3"> + <rule name="min-consumers"/> + <implement role="server" handle="MUST"/> + <response name="consume-ok"/> + <field name="queue" type="queue.name"> + <exception name="queue-exists-if-empty" error-code="not-allowed"/> + </field> + <field name="consumer-tag" type="str8"> + <exception name="not-existing-consumer" error-code="not-allowed"/> + <exception name="not-empty-consumer-tag" error-code="not-allowed"/> + </field> + <field name="no-local" type="bit"/> + <field name="no-ack" type="bit"/> + <field name="exclusive" type="bit"> + <exception name="in-use" error-code="resource-locked"/> + </field> + <field name="nowait" type="bit"/> + <field name="arguments" type="map"/> + </command> + <command name="consume-ok" code="0x4"> + <implement role="client" handle="MUST"/> + <field name="consumer-tag" type="str8"/> + </command> + <command name="cancel" code="0x5"> + <implement role="server" handle="MUST"/> + <field name="consumer-tag" type="str8"/> + </command> + <command name="open" code="0x6"> + <implement role="server" handle="MUST"/> + <implement role="client" handle="MUST"/> + <response name="open-ok"/> + <field name="identifier" type="str8"/> + <field name="content-size" type="uint64"> + <rule name="content-size"/> + </field> + </command> + <command name="open-ok" code="0x7"> + <implement role="server" handle="MUST"/> + <implement role="client" handle="MUST"/> + <response name="stage"/> + <field name="staged-size" type="uint64"> + <rule name="behavior"/> + <rule name="staging"/> + </field> + </command> + <command name="stage" code="0x8"> + <implement role="server" handle="MUST"/> + <implement role="client" handle="MUST"/> + <segments> + <header required="true"> + <entry type="file-properties"/> + </header> + <body/> + </segments> + </command> + <command name="publish" code="0x9"> + <implement role="server" handle="MUST"/> + <field name="exchange" type="exchange.name"> + <rule name="default"/> + <exception name="refusal" error-code="not-implemented"/> + </field> + <field name="routing-key" type="str8"/> + <field name="mandatory" type="bit"> + <rule name="implementation"/> + </field> + <field name="immediate" type="bit"> + <rule name="implementation"/> + </field> + <field name="identifier" type="str8"/> + </command> + <command name="return" code="0xa"> + <implement role="client" handle="MUST"/> + <field name="reply-code" type="return-code"/> + <field name="reply-text" type="str8"/> + <field name="exchange" type="exchange.name"/> + <field name="routing-key" type="str8"/> + <segments> + <header required="true"> + <entry type="file-properties"/> + </header> + <body/> + </segments> + </command> + <command name="deliver" code="0xb"> + <rule name="redelivery-tracking"/> + <implement role="client" handle="MUST"/> + <field name="consumer-tag" type="str8"/> + <field name="delivery-tag" type="uint64"> + <rule name="non-zero"/> + </field> + <field name="redelivered" type="bit"/> + <field name="exchange" type="exchange.name"/> + <field name="routing-key" type="str8"/> + <field name="identifier" type="str8"/> + </command> + <command name="ack" code="0xc"> + <implement role="server" handle="MUST"/> + <field name="delivery-tag" type="uint64"> + <rule name="session-local"/> + </field> + <field name="multiple" type="bit"> + <rule name="validation"/> + </field> + </command> + <command name="reject" code="0xd"> + <rule name="server-interpretation"/> + <rule name="not-selection"/> + <implement role="server" handle="MUST"/> + <field name="delivery-tag" type="uint64"> + <rule name="session-local"/> + </field> + <field name="requeue" type="bit"> + <rule name="requeue-strategy"/> + </field> + </command> + </class> + <class name="stream" code="0xa"> + <rule name="overflow-discard"/> + <rule name="priority-levels"/> + <rule name="acknowledgement-support"/> + <role name="server" implement="MAY"/> + <role name="client" implement="MAY"/> + <struct name="stream-properties" code="0x1" size="4" pack="2"> + <field name="content-type" type="str8"/> + <field name="content-encoding" type="str8"/> + <field name="headers" type="map"/> + <field name="priority" type="uint8"/> + <field name="timestamp" type="datetime"/> + </struct> + <domain name="return-code" type="uint16"> + <enum> + <choice name="content-too-large" value="311"/> + <choice name="no-route" value="312"/> + <choice name="no-consumers" value="313"/> + </enum> + </domain> + <command name="qos" code="0x1"> + <implement role="server" handle="MUST"/> + <response name="qos-ok"/> + <field name="prefetch-size" type="uint32"/> + <field name="prefetch-count" type="uint16"/> + <field name="consume-rate" type="uint32"> + <rule name="ignore-prefetch"/> + <rule name="drop-by-priority"/> + </field> + <field name="global" type="bit"/> + </command> + <command name="qos-ok" code="0x2"> + <implement role="client" handle="MUST"/> + </command> + <command name="consume" code="0x3"> + <rule name="min-consumers"/> + <rule name="priority-based-delivery"/> + <implement role="server" handle="MUST"/> + <response name="consume-ok"/> + <field name="queue" type="queue.name"> + <exception name="queue-exists-if-empty" error-code="not-allowed"/> + </field> + <field name="consumer-tag" type="str8"> + <exception name="not-existing-consumer" error-code="not-allowed"/> + <exception name="not-empty-consumer-tag" error-code="not-allowed"/> + </field> + <field name="no-local" type="bit"/> + <field name="exclusive" type="bit"> + <exception name="in-use" error-code="resource-locked"/> + </field> + <field name="nowait" type="bit"/> + <field name="arguments" type="map"/> + </command> + <command name="consume-ok" code="0x4"> + <implement role="client" handle="MUST"/> + <field name="consumer-tag" type="str8"/> + </command> + <command name="cancel" code="0x5"> + <implement role="server" handle="MUST"/> + <field name="consumer-tag" type="str8"/> + </command> + <command name="publish" code="0x6"> + <implement role="server" handle="MUST"/> + <field name="exchange" type="exchange.name"> + <rule name="default"/> + <exception name="refusal" error-code="not-implemented"/> + </field> + <field name="routing-key" type="str8"/> + <field name="mandatory" type="bit"> + <rule name="implementation"/> + </field> + <field name="immediate" type="bit"> + <rule name="implementation"/> + </field> + <segments> + <header required="true"> + <entry type="stream-properties"/> + </header> + <body/> + </segments> + </command> + <command name="return" code="0x7"> + <implement role="client" handle="MUST"/> + <field name="reply-code" type="return-code"/> + <field name="reply-text" type="str8"/> + <field name="exchange" type="exchange.name"/> + <field name="routing-key" type="str8"/> + <segments> + <header required="true"> + <entry type="stream-properties"/> + </header> + <body/> + </segments> + </command> + <command name="deliver" code="0x8"> + <implement role="client" handle="MUST"/> + <field name="consumer-tag" type="str8"/> + <field name="delivery-tag" type="uint64"> + <rule name="session-local"/> + </field> + <field name="exchange" type="exchange.name"/> + <field name="queue" type="queue.name" required="true"/> + <segments> + <header required="true"> + <entry type="stream-properties"/> + </header> + <body/> + </segments> + </command> + </class> +</amqp> diff --git a/qpid/cpp/src/CMakeLists.txt b/qpid/cpp/src/CMakeLists.txt index 9e656243fe..19e70eb549 100644 --- a/qpid/cpp/src/CMakeLists.txt +++ b/qpid/cpp/src/CMakeLists.txt @@ -81,68 +81,67 @@ ENDMACRO (add_api_test libname) # rubygen subdir is excluded from stable distributions # If the main AMQP spec is present, then check if ruby and python are # present, and if any sources have changed, forcing a re-gen of source code. - -set(AMQP_SPEC_DIR ${qpid-cpp_SOURCE_DIR}/../specs) -set(AMQP_SPEC ${AMQP_SPEC_DIR}/amqp.0-10-qpid-errata.stripped.xml) -if (EXISTS ${AMQP_SPEC}) - if (NOT RUBY_EXECUTABLE) - message(FATAL_ERROR "Can't locate ruby, needed to generate source files.") - endif (NOT RUBY_EXECUTABLE) - if (NOT PYTHON_EXECUTABLE) - message(FATAL_ERROR "Can't locate python, needed to generate source files.") - endif (NOT PYTHON_EXECUTABLE) - - set(specs ${AMQP_SPEC}) - set(regen_amqp OFF) - set(rgen_dir ${qpid-cpp_SOURCE_DIR}/rubygen) - file(GLOB_RECURSE rgen_progs ${rgen_dir}/*.rb) - # If any of the specs, or any of the sources used to generate code, change - # then regenerate the sources. - foreach (spec_file ${specs} ${rgen_progs}) - if (${spec_file} IS_NEWER_THAN ${CMAKE_CURRENT_BINARY_DIR}/rubygen.cmake) - set(regen_amqp ON) - endif (${spec_file} IS_NEWER_THAN ${CMAKE_CURRENT_BINARY_DIR}/rubygen.cmake) - endforeach (spec_file ${specs}) - if (regen_amqp) - message(STATUS "Regenerating AMQP protocol sources") -execute_process(COMMAND ${RUBY_EXECUTABLE} -I ${rgen_dir} ${rgen_dir}/generate ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_BINARY_DIR}/../include ${specs} all rubygen.cmake - WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) - else (regen_amqp) - message(STATUS "No need to generate AMQP protocol sources") - endif (regen_amqp) - - set(mgmt_specs ${AMQP_SPEC_DIR}/management-schema.xml - ${CMAKE_CURRENT_SOURCE_DIR}/qpid/acl/management-schema.xml - ${CMAKE_CURRENT_SOURCE_DIR}/qpid/ha/management-schema.xml - ${CMAKE_CURRENT_SOURCE_DIR}/qpid/legacystore/management-schema.xml - ${CMAKE_CURRENT_SOURCE_DIR}/qpid/linearstore/management-schema.xml - ) - set(mgen_dir ${qpid-cpp_SOURCE_DIR}/managementgen) - set(regen_mgmt OFF) - foreach (spec_file ${mgmt_specs}) - if (${spec_file} IS_NEWER_THAN ${CMAKE_CURRENT_BINARY_DIR}/managementgen.cmake) - message(STATUS "${spec_file} is newer") - set(regen_mgmt ON) - endif (${spec_file} IS_NEWER_THAN ${CMAKE_CURRENT_BINARY_DIR}/managementgen.cmake) - endforeach (spec_file ${mgmt_specs}) - if (regen_mgmt) - message(STATUS "Regenerating Qpid Management Framework sources") -execute_process(COMMAND ${PYTHON_EXECUTABLE} ${mgen_dir}/qmf-gen -c managementgen.cmake -b -l -q -o ${CMAKE_CURRENT_BINARY_DIR}/qmf ${mgmt_specs} - WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) - else (regen_mgmt) - message(STATUS "No need to generate Qpid Management Framework sources") - endif (regen_mgmt) - - # Pull in the names of the generated files, i.e. ${rgen_framing_srcs} - include (${CMAKE_CURRENT_BINARY_DIR}/rubygen.cmake) - include (${CMAKE_CURRENT_BINARY_DIR}/managementgen.cmake) - -else (EXISTS ${AMQP_SPEC}) - message(STATUS "No AMQP spec... presume generated sources are included") - set(QPID_GENERATED_HEADERS_IN_SOURCE ON) - include (rubygen.cmake) - include (managementgen.cmake) -endif (EXISTS ${AMQP_SPEC}) +find_file(QPID_AMQP_SPEC NAMES amqp.0-10-qpid-errata.stripped.xml PATHS ${qpid-cpp_SOURCE_DIR}/specs ${qpid-cpp_SOURCE_DIR}/../specs NO_DEFAULT_PATH) +mark_as_advanced(QPID_AMQP_SPEC) +if (NOT QPID_AMQP_SPEC) + message(FATAL_ERROR "Can't find amqp 0-10 spec for framing code generation") +endif (NOT QPID_AMQP_SPEC) +if (NOT RUBY_EXECUTABLE) + message(FATAL_ERROR "Can't locate ruby, needed to generate amqp 0-10 framing code.") +endif (NOT RUBY_EXECUTABLE) + +set(specs ${QPID_AMQP_SPEC}) +set(regen_amqp OFF) +set(rgen_dir ${qpid-cpp_SOURCE_DIR}/rubygen) +file(GLOB_RECURSE rgen_progs ${rgen_dir}/*.rb) +# If any of the specs, or any of the sources used to generate code, change +# then regenerate the sources. +foreach (spec_file ${specs} ${rgen_progs}) + if (${spec_file} IS_NEWER_THAN ${CMAKE_CURRENT_BINARY_DIR}/rubygen.cmake) + set(regen_amqp ON) + endif (${spec_file} IS_NEWER_THAN ${CMAKE_CURRENT_BINARY_DIR}/rubygen.cmake) +endforeach (spec_file ${specs}) +if (regen_amqp) + message(STATUS "Regenerating AMQP protocol sources") + execute_process(COMMAND ${RUBY_EXECUTABLE} -I ${rgen_dir} ${rgen_dir}/generate ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_BINARY_DIR}/../include ${specs} all rubygen.cmake + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) +else (regen_amqp) + message(STATUS "No need to generate AMQP protocol sources") +endif (regen_amqp) + +find_file(QPID_BROKER_MANAGEMENT_SPEC NAMES management-schema.xml PATHS ${CMAKE_CURRENT_SOURCE_DIR}/qpid/broker ${qpid-cpp_SOURCE_DIR}/../specs NO_DEFAULT_PATH) +mark_as_advanced(QPID_BROKER_MANAGEMENT_SPEC) +if (NOT QPID_BROKER_MANAGEMENT_SPEC) + message(FATAL_ERROR "Can't find broker management spec for code generation") +endif (NOT QPID_BROKER_MANAGEMENT_SPEC) +if (NOT PYTHON_EXECUTABLE) + message(FATAL_ERROR "Can't locate python, needed to generate broker management code.") +endif (NOT PYTHON_EXECUTABLE) +set(mgmt_specs ${QPID_BROKER_MANAGEMENT_SPEC} + ${CMAKE_CURRENT_SOURCE_DIR}/qpid/acl/management-schema.xml + ${CMAKE_CURRENT_SOURCE_DIR}/qpid/ha/management-schema.xml + ${CMAKE_CURRENT_SOURCE_DIR}/qpid/legacystore/management-schema.xml + ${CMAKE_CURRENT_SOURCE_DIR}/qpid/linearstore/management-schema.xml +) +set(mgen_dir ${qpid-cpp_SOURCE_DIR}/managementgen) +set(regen_mgmt OFF) +foreach (spec_file ${mgmt_specs}) + if (${spec_file} IS_NEWER_THAN ${CMAKE_CURRENT_BINARY_DIR}/managementgen.cmake) + message(STATUS "${spec_file} is newer") + set(regen_mgmt ON) + endif (${spec_file} IS_NEWER_THAN ${CMAKE_CURRENT_BINARY_DIR}/managementgen.cmake) +endforeach (spec_file ${mgmt_specs}) +if (regen_mgmt) + message(STATUS "Regenerating Qpid Management Framework sources") + execute_process(COMMAND ${PYTHON_EXECUTABLE} ${mgen_dir}/qmf-gen -c managementgen.cmake -b -l -q -o ${CMAKE_CURRENT_BINARY_DIR}/qmf ${mgmt_specs} + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) +else (regen_mgmt) + message(STATUS "No need to generate Qpid Management Framework sources") +endif (regen_mgmt) + +# Pull in the names of the generated files, i.e. ${rgen_framing_srcs} +include (${CMAKE_CURRENT_BINARY_DIR}/rubygen.cmake) +include (${CMAKE_CURRENT_BINARY_DIR}/managementgen.cmake) # FindDoxygen module tries to locate doxygen and Graphviz dot if (DOXYGEN_FOUND) diff --git a/qpid/cpp/src/qpid/broker/management-schema.xml b/qpid/cpp/src/qpid/broker/management-schema.xml new file mode 100644 index 0000000000..4d66b72318 --- /dev/null +++ b/qpid/cpp/src/qpid/broker/management-schema.xml @@ -0,0 +1,597 @@ +<schema package="org.apache.qpid.broker"> + +<!-- + 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. +--> + + <!-- Type information: + + Numeric types with "_wm" suffix are watermarked numbers. These are compound + values containing a current value, and a low and high water mark for the reporting + interval. The low and high water marks are set to the current value at the + beginning of each interval and track the minimum and maximum values of the statistic + over the interval respectively. + + Access rights for configuration elements: + + RO => Read Only + RC => Read/Create, can be set at create time only, read-only thereafter + RW => Read/Write + + If access rights are omitted for a property, they are assumed to be RO. + + --> + + <!-- Questions: Does C++ broker round-robin dests on queues? --> + + <!-- + =============================================================== + System + =============================================================== + --> + <class name="System"> + <property name="systemId" index="y" type="uuid" access="RC"/> + + <property name="osName" type="sstr" access="RO" desc="Operating System Name"/> + <property name="nodeName" type="sstr" access="RO" desc="Node Name"/> + <property name="release" type="sstr" access="RO"/> + <property name="version" type="sstr" access="RO"/> + <property name="machine" type="sstr" access="RO"/> + + </class> + + <!-- + =============================================================== + Memory + =============================================================== + --> + <class name="Memory"> + <property name="name" type="sstr" access="RC" index="y" desc="Index for the broker at this agent"/> + <property name="malloc_arena" type="uint64" access="RO" optional="y" desc="Total size of memory allocated with `sbrk' by `malloc', in bytes"/> + <property name="malloc_ordblks" type="uint64" access="RO" optional="y" desc="The number of chunks not in use"/> + <property name="malloc_hblks" type="uint64" access="RO" optional="y" desc="Total number of chunks allocated with `mmap'"/> + <property name="malloc_hblkhd" type="uint64" access="RO" optional="y" desc="Total size of memory allocated with `mmap', in bytes"/> + <property name="malloc_uordblks" type="uint64" access="RO" optional="y" desc="Total size of memory occupied by chunks handed out by `malloc'"/> + <property name="malloc_fordblks" type="uint64" access="RO" optional="y" desc="Total size of memory occupied by free (not in use) chunks"/> + <property name="malloc_keepcost" type="uint64" access="RO" optional="y" desc="The size of the top-most releasable chunk that normally borders the end of the heap"/> + </class> + + <!-- + =============================================================== + Broker + =============================================================== + --> + <class name="Broker"> + <property name="name" type="sstr" access="RC" index="y" desc="Index for the broker at this agent"/> + <property name="systemRef" type="objId" references="System" access="RO" desc="System ID" parentRef="y"/> + <property name="port" type="uint16" access="RO" desc="TCP Port for AMQP Service"/> + <property name="workerThreads" type="uint16" access="RO" desc="Thread pool size"/> + <property name="maxConns" type="uint16" access="RO" desc="Maximum allowed connections"/> + <property name="connBacklog" type="uint16" access="RO" desc="Connection backlog limit for listening socket"/> + <property name="stagingThreshold" type="uint32" access="RO" desc="Broker stages messages over this size to disk"/> + <property name="mgmtPublish" type="bool" access="RO" desc="Broker's management agent sends unsolicited data on the publish interval"/> + <property name="mgmtPubInterval" type="uint16" access="RW" unit="second" min="1" desc="Interval for management broadcasts"/> + <property name="version" type="sstr" access="RO" desc="Running software version"/> + <property name="dataDir" type="lstr" access="RO" optional="y" desc="Persistent configuration storage location"/> + <statistic name="uptime" type="deltaTime"/> + + <statistic name="queueCount" type="count64" unit="queue" desc="Number of queues in the broker"/> + <statistic name="msgTotalEnqueues" type="count64" unit="message" desc="Total messages enqueued to broker"/> + <statistic name="msgTotalDequeues" type="count64" unit="message" desc="Total messages dequeued from broker"/> + <statistic name="byteTotalEnqueues" type="count64" unit="octet" desc="Total bytes enqueued to broker"/> + <statistic name="byteTotalDequeues" type="count64" unit="octet" desc="Total bytes dequeued from broker"/> + <statistic name="msgDepth" type="count64" unit="message" desc="Current number of messages on queues in broker" assign="msgTotalEnqueues - msgTotalDequeues"/> + <statistic name="byteDepth" type="count64" unit="octet" desc="Current number of bytes on queues in broker" assign="byteTotalEnqueues - byteTotalDequeues"/> + <statistic name="msgPersistEnqueues" type="count64" unit="message" desc="Total persistent messages enqueued to broker"/> + <statistic name="msgPersistDequeues" type="count64" unit="message" desc="Total persistent messages dequeued from broker"/> + <statistic name="bytePersistEnqueues" type="count64" unit="octet" desc="Total persistent bytes enqueued to broker"/> + <statistic name="bytePersistDequeues" type="count64" unit="octet" desc="Total persistent bytes dequeued from broker"/> + <statistic name="msgTxnEnqueues" type="count64" unit="message" desc="Total transactional messages enqueued to broker"/> + <statistic name="msgTxnDequeues" type="count64" unit="message" desc="Total transactional messages dequeued from broker"/> + <statistic name="byteTxnEnqueues" type="count64" unit="octet" desc="Total transactional bytes enqueued to broker"/> + <statistic name="byteTxnDequeues" type="count64" unit="octet" desc="Total transactional bytes dequeued from broker"/> + <statistic name="msgFtdEnqueues" type="count64" unit="message" desc="Total message bodies released from memory and flowed-to-disk on broker"/> + <statistic name="msgFtdDequeues" type="count64" unit="message" desc="Total message bodies dequeued from the broker having been flowed-to-disk"/> + <statistic name="byteFtdEnqueues" type="count64" unit="octet" desc="Total bytes released from memory and flowed-to-disk on broker"/> + <statistic name="byteFtdDequeues" type="count64" unit="octet" desc="Total bytes dequeued from the broker having been flowed-to-disk"/> + <statistic name="msgFtdDepth" type="count64" unit="message" desc="Current number of messages flowed-to-disk" assign="msgFtdEnqueues - msgFtdDequeues"/> + <statistic name="byteFtdDepth" type="count64" unit="octet" desc="Current number of bytes flowed-to-disk" assign="byteFtdEnqueues - byteFtdDequeues"/> + <statistic name="releases" type="count64" unit="message" desc="Acquired messages reinserted into the queue"/> + <statistic name="acquires" type="count64" unit="message" desc="Messages acquired from the queue"/> + <statistic name="discardsNoRoute" type="count64" unit="message" desc="Messages discarded due to no-route from exchange"/> + <statistic name="discardsTtl" type="count64" unit="message" desc="Messages discarded due to TTL expiration"/> + <statistic name="discardsRing" type="count64" unit="message" desc="Messages discarded due to ring-queue overflow"/> + <statistic name="discardsLvq" type="count64" unit="message" desc="Messages discarded due to LVQ insert"/> + <statistic name="discardsOverflow" type="count64" unit="message" desc="Messages discarded due to reject-policy overflow"/> + <statistic name="discardsSubscriber" type="count64" unit="message" desc="Messages discarded due to subscriber reject"/> + <statistic name="discardsPurge" type="count64" unit="message" desc="Messages discarded due to management purge"/> + <statistic name="reroutes" type="count64" unit="message" desc="Messages dequeued to management re-route"/> + <statistic name="abandoned" type="count64" unit="message" desc="Messages left in a deleted queue"/> + <statistic name="abandonedViaAlt" type="count64" unit="message" desc="Messages routed to alternate exchange from a deleted queue"/> + + <method name="echo" desc="Request a response to test the path to the management broker"> + <arg name="sequence" dir="IO" type="uint32"/> + <arg name="body" dir="IO" type="lstr"/> + </method> + + <method name="connect" desc="Establish a connection to another broker"> + <arg name="host" dir="I" type="sstr"/> + <arg name="port" dir="I" type="uint32"/> + <arg name="durable" dir="I" type="bool"/> + <arg name="authMechanism" dir="I" type="sstr"/> + <arg name="username" dir="I" type="sstr"/> + <arg name="password" dir="I" type="sstr"/> + <arg name="transport" dir="I" type="sstr"/> + </method> + + <method name="queueMoveMessages" desc="Move messages from one queue to another"> + <arg name="srcQueue" dir="I" type="sstr" desc="Source queue"/> + <arg name="destQueue" dir="I" type="sstr" desc="Destination queue"/> + <arg name="qty" dir="I" type="uint32" desc="# of messages to move. 0 means all messages"/> + <arg name="filter" dir="I" type="map" desc="if specified, move only those messages matching this filter"/> + </method> + + <method name="setLogLevel" desc="Set the log level"> + <arg name="level" dir="I" type="sstr"/> + </method> + + <method name="getLogLevel" desc="Get the current log level"> + <arg name="level" dir="O" type="sstr"/> + </method> + + <method name="getTimestampConfig" desc="Get the message timestamping configuration"> + <arg name="receive" dir="O" type="bool" desc="True if received messages are timestamped."/> + </method> + + <method name="setTimestampConfig" desc="Set the message timestamping configuration"> + <arg name="receive" dir="I" type="bool" desc="Set true to enable timestamping received messages."/> + </method> + + <method name="create" desc="Create an object of the specified type"> + <arg name="type" dir="I" type="sstr" desc="The type of object to create"/> + <arg name="name" dir="I" type="sstr" desc="The name of the object to create"/> + <arg name="properties" dir="I" type="map" desc="Type specific object properties"/> + <arg name="strict" dir="I" type="bool" desc="If specified, treat unrecognised object properties as an error"/> + </method> + + <method name="delete" desc="Delete an object of the specified type"> + <arg name="type" dir="I" type="sstr" desc="The type of object to delete"/> + <arg name="name" dir="I" type="sstr" desc="The name of the object to delete"/> + <arg name="options" dir="I" type="map" desc="Type specific object options for deletion"/> + </method> + + <method name="query" desc="Query the current state of an object."> + <arg name="type" dir="I" type="sstr" desc="The type of object to query."/> + <arg name="name" dir="I" type="sstr" desc="The name of the object to query"/> + <arg name="results" dir="O" type="map" desc="A snapshot of the object's state."/> + </method> + + <method name="getLogHiresTimestamp" desc="Get the high resolution timestamp in logs"> + <arg name="logHires" dir="O" type="bool" desc="True if high resolution timestamp in logs is enabled."/> + </method> + + <method name="setLogHiresTimestamp" desc="Set the high resolution timestamp in logs"> + <arg name="logHires" dir="I" type="bool" desc="True to enable enable high resolution timestamp in logs."/> + </method> + + <method name="queueRedirect" desc="Enable/disable delivery redirect for indicated queues"> + <arg name="sourceQueue" dir="I" type="sstr" desc="Source queue."/> + <arg name="targetQueue" dir="I" type="sstr" desc="Redirect target queue. Blank disables redirect."/> + </method> + + </class> + + <!-- + =============================================================== + Management Agent + =============================================================== + --> + <class name="Agent"> + <property name="connectionRef" type="objId" references="Connection" access="RO" index="y"/> + <property name="label" type="sstr" access="RO" desc="Label for agent"/> + <property name="registeredTo" type="objId" references="Broker" access="RO" desc="Broker agent is registered to"/> + <property name="systemId" type="uuid" access="RO" desc="Identifier of system where agent resides"/> + <property name="brokerBank" type="uint32" access="RO" desc="Assigned object-id broker bank"/> + <property name="agentBank" type="uint32" access="RO" desc="Assigned object-id agent bank"/> + </class> + + <!-- + =============================================================== + Virtual Host + =============================================================== + --> + <class name="Vhost"> + <property name="brokerRef" type="objId" references="Broker" access="RC" index="y" parentRef="y"/> + <property name="name" type="sstr" access="RC" index="y"/> + <property name="federationTag" type="sstr" access="RO"/> + </class> + + <!-- + =============================================================== + Queue + =============================================================== + --> + <class name="Queue"> + <property name="vhostRef" type="objId" references="Vhost" access="RC" index="y" parentRef="y"/> + <property name="name" type="sstr" access="RC" index="y"/> + + <property name="durable" type="bool" access="RC"/> + <property name="autoDelete" type="bool" access="RC"/> + <property name="exclusive" type="bool" access="RO"/> + <property name="arguments" type="map" access="RO" desc="Arguments supplied in queue.declare"/> + <property name="altExchange" type="objId" references="Exchange" access="RO" optional="y"/> + + <statistic name="msgTotalEnqueues" type="count64" unit="message" desc="Total messages enqueued"/> + <statistic name="msgTotalDequeues" type="count64" unit="message" desc="Total messages dequeued"/> + <statistic name="msgTxnEnqueues" type="count64" unit="message" desc="Transactional messages enqueued"/> + <statistic name="msgTxnDequeues" type="count64" unit="message" desc="Transactional messages dequeued"/> + <statistic name="msgPersistEnqueues" type="count64" unit="message" desc="Persistent messages enqueued"/> + <statistic name="msgPersistDequeues" type="count64" unit="message" desc="Persistent messages dequeued"/> + <statistic name="msgDepth" type="count64" unit="message" desc="Current size of queue in messages" assign="msgTotalEnqueues - msgTotalDequeues"/> + <statistic name="byteDepth" type="count64" unit="octet" desc="Current size of queue in bytes" assign="byteTotalEnqueues - byteTotalDequeues"/> + <statistic name="byteTotalEnqueues" type="count64" unit="octet" desc="Total messages enqueued"/> + <statistic name="byteTotalDequeues" type="count64" unit="octet" desc="Total messages dequeued"/> + <statistic name="byteTxnEnqueues" type="count64" unit="octet" desc="Transactional messages enqueued"/> + <statistic name="byteTxnDequeues" type="count64" unit="octet" desc="Transactional messages dequeued"/> + <statistic name="bytePersistEnqueues" type="count64" unit="octet" desc="Persistent messages enqueued"/> + <statistic name="bytePersistDequeues" type="count64" unit="octet" desc="Persistent messages dequeued"/> + + <!-- Flow-to-disk Statistics --> + + <statistic name="msgFtdEnqueues" type="count64" unit="message" desc="Total message bodies released from memory and flowed-to-disk on broker"/> + <statistic name="msgFtdDequeues" type="count64" unit="message" desc="Total message bodies dequeued from the broker having been flowed-to-disk"/> + <statistic name="byteFtdEnqueues" type="count64" unit="octet" desc="Total bytes released from memory and flowed-to-disk on broker"/> + <statistic name="byteFtdDequeues" type="count64" unit="octet" desc="Total bytes dequeued from the broker having been flowed-to-disk"/> + <statistic name="msgFtdDepth" type="count64" unit="message" desc="Current number of messages flowed-to-disk" assign="msgFtdEnqueues - msgFtdDequeues"/> + <statistic name="byteFtdDepth" type="count64" unit="octet" desc="Current number of bytes flowed-to-disk" assign="byteFtdEnqueues - byteFtdDequeues"/> + + <!-- Acquire and Release Statistics - These do not affect msgDepth since msgDepth includes acquired-but-not-completed messages. --> + + <statistic name="releases" type="count64" unit="message" desc="Acquired messages reinserted into the queue"/> + <statistic name="acquires" type="count64" unit="message" desc="Messages acquired from the queue"/> + + <!-- Dequeue Details - all of these are included in msgTotalDequeues --> + + <statistic name="discardsTtl" type="count64" unit="message" desc="Messages discarded due to TTL expiration"/> + <statistic name="discardsRing" type="count64" unit="message" desc="Messages discarded due to ring-queue overflow"/> + <statistic name="discardsLvq" type="count64" unit="message" desc="Messages discarded due to LVQ insert"/> + <statistic name="discardsOverflow" type="count64" unit="message" desc="Messages discarded due to reject-policy overflow"/> + <statistic name="discardsSubscriber" type="count64" unit="message" desc="Messages discarded due to subscriber reject"/> + <statistic name="discardsPurge" type="count64" unit="message" desc="Messages discarded due to management purge"/> + <statistic name="reroutes" type="count64" unit="message" desc="Messages dequeued to management re-route"/> + + <statistic name="consumerCount" type="hilo32" unit="consumer" desc="Current consumers on queue"/> + <statistic name="bindingCount" type="hilo32" unit="binding" desc="Current bindings"/> + <statistic name="unackedMessages" type="hilo32" unit="message" desc="Messages consumed but not yet acked"/> + <statistic name="messageLatency" type="mmaTime" unit="nanosecond" desc="Broker latency through this queue"/> + <statistic name="flowStopped" type="bool" desc="Flow control active."/> + <statistic name="flowStoppedCount" type="count32" desc="Number of times flow control was activated for this queue"/> + + <statistic name="redirectPeer" type="sstr" desc="Partner queue for redirected pair"/> + <statistic name="redirectSource" type="bool" desc="This queue is the redirect source"/> + + <method name="purge" desc="Discard all or some messages on a queue"> + <arg name="request" dir="I" type="uint32" desc="0 for all messages or n>0 for n messages"/> + <arg name="filter" dir="I" type="map" desc="if specified, purge only those messages matching this filter"/> + </method> + + <method name="reroute" desc="Remove all or some messages on this queue and route them to an exchange"> + <arg name="request" dir="I" type="uint32" desc="0 for all messages or n>0 for n messages"/> + <arg name="useAltExchange" dir="I" type="bool" desc="Iff true, use the queue's configured alternate exchange; iff false, use exchange named in the 'exchange' argument"/> + <arg name="exchange" dir="I" type="sstr" desc="Name of the exchange to route the messages through"/> + <arg name="filter" dir="I" type="map" desc="if specified, reroute only those messages matching this filter"/> + </method> + </class> + + <!-- + =============================================================== + Exchange + =============================================================== + --> + <class name="Exchange"> + <property name="vhostRef" type="objId" references="Vhost" access="RC" index="y" parentRef="y"/> + <property name="name" type="sstr" access="RC" index="y"/> + <property name="type" type="sstr" access="RO"/> + <property name="durable" type="bool" access="RO"/> + <property name="autoDelete" type="bool" access="RO"/> + <property name="altExchange" type="objId" references="Exchange" access="RO" optional="y"/> + <property name="arguments" type="map" access="RO" desc="Arguments supplied in exchange.declare"/> + + <statistic name="producerCount" type="hilo32" desc="Current producers on exchange"/> + <statistic name="bindingCount" type="hilo32" desc="Current bindings"/> + <statistic name="msgReceives" type="count64" desc="Total messages received"/> + <statistic name="msgDrops" type="count64" desc="Total messages dropped (no matching key)"/> + <statistic name="msgRoutes" type="count64" desc="Total routed messages"/> + <statistic name="byteReceives" type="count64" desc="Total bytes received"/> + <statistic name="byteDrops" type="count64" desc="Total bytes dropped (no matching key)"/> + <statistic name="byteRoutes" type="count64" desc="Total routed bytes"/> + </class> + + <!-- + =============================================================== + Binding + =============================================================== + --> + <class name="Binding"> + <property name="exchangeRef" type="objId" references="Exchange" access="RC" index="y" parentRef="y"/> + <property name="queueRef" type="objId" references="Queue" access="RC" index="y"/> + <property name="bindingKey" type="lstr" access="RC" index="y"/> + <property name="arguments" type="map" access="RC"/> + <property name="origin" type="sstr" access="RO" optional="y"/> + + <statistic name="msgMatched" type="count64"/> + </class> + + <!-- + =============================================================== + Subscription + =============================================================== + --> + <class name="Subscription"> + <property name="sessionRef" type="objId" references="Session" access="RC" index="y" parentRef="y"/> + <property name="queueRef" type="objId" references="Queue" access="RC" index="y"/> + <property name="name" type="sstr" access="RC" index="y"/> + <property name="browsing" type="bool" access="RC"/> + <property name="acknowledged" type="bool" access="RC"/> + <property name="exclusive" type="bool" access="RC"/> + <property name="creditMode" type="sstr" access="RO" desc="WINDOW or CREDIT"/> + <property name="arguments" type="map" access="RC"/> + <statistic name="delivered" type="count64" unit="message" desc="Messages delivered"/> + </class> + + <!-- + =============================================================== + Connection + =============================================================== + --> + <class name="Connection"> + <property name="vhostRef" type="objId" references="Vhost" access="RC" index="y" parentRef="y"/> + <property name="address" type="sstr" access="RC" index="y"/> + <property name="incoming" type="bool" access="RC"/> + <property name="SystemConnection" type="bool" access="RC" desc="Infrastructure/ Inter-system connection (Cluster, Federation, ...)"/> + <property name="userProxyAuth" type="bool" access="RO" desc="Authorization to proxy for users not on broker"/> + <property name="federationLink" type="bool" access="RO" desc="Is this a federation link"/> + <property name="authIdentity" type="sstr" access="RO" desc="authId of connection if authentication enabled"/> + <property name="remoteProcessName" type="lstr" access="RO" optional="y" desc="Name of executable running as remote client"/> + <property name="remotePid" type="uint32" access="RO" optional="y" desc="Process ID of remote client"/> + <property name="remoteParentPid" type="uint32" access="RO" optional="y" desc="Parent Process ID of remote client"/> + <property name="shadow" type="bool" access="RO" desc="True for shadow connections"/> + <property name="saslMechanism" type="sstr" access="RO" desc="SASL mechanism"/> + <property name="saslSsf" type="uint16" access="RO" desc="SASL security strength factor"/> + <property name="remoteProperties" type="map" access="RO" desc="optional map of identifying information sent by the remote"/> + <property name="protocol" type="sstr" access="RC" desc="protocol in use"/> + <statistic name="closing" type="bool" desc="This client is closing by management request"/> + <statistic name="framesFromClient" type="count64"/> + <statistic name="framesToClient" type="count64"/> + <statistic name="bytesFromClient" type="count64"/> + <statistic name="bytesToClient" type="count64"/> + <statistic name="msgsFromClient" type="count64"/> + <statistic name="msgsToClient" type="count64"/> + + <method name="close"/> + </class> + + + <!-- + =============================================================== + AMQP 1.0 link for incoming transfers + =============================================================== + --> + <class name="Incoming"> + <property name="sessionRef" type="objId" references="Session" access="RC" parentRef="y"/> + <property name="containerid" type="sstr" access="RC" index="y"/> + <property name="name" type="sstr" access="RC" index="y"/> + <property name="source" type="sstr" access="RC"/> + <property name="target" type="sstr" access="RC"/> + <statistic name="transfers" type="count64" unit="message" desc="Messages transfered"/> + </class> + <!-- + =============================================================== + AMQP 1.0 link for outgoing transfers + =============================================================== + --> + <class name="Outgoing"> + <property name="sessionRef" type="objId" references="Session" access="RC" parentRef="y"/> + <property name="containerid" type="sstr" access="RC" index="y"/> + <property name="name" type="sstr" access="RC" index="y"/> + <property name="source" type="sstr" access="RC"/> + <property name="target" type="sstr" access="RC"/> + <statistic name="transfers" type="count64" unit="message" desc="Messages transfered"/> + </class> + <!-- + =============================================================== + AMQP 1.0 Domain + =============================================================== + --> + <class name="Domain"> + <property name="name" type="sstr" access="RC" index="y"/> + <property name="durable" type="bool" access="RC"/> + <property name="url" type="sstr" access="RO"/> + <property name="mechanisms" type="sstr" access="RO"/> + <property name="username" type="sstr" access="RO"/> + <property name="password" type="sstr" access="RO"/> + </class> + <!-- + =============================================================== + AMQP 1.0 Topic + =============================================================== + --> + <class name="Topic"> + <property name="name" type="sstr" access="RC" index="y"/> + <property name="exchangeRef" type="objId" references="Exchange" access="RC"/> + <property name="durable" type="bool" access="RC"/> + <property name="properties" type="map" access="RO"/> + </class> + + + <!-- + =============================================================== + Link + =============================================================== + --> + <class name="Link"> + + This class represents an inter-broker connection. + + <property name="vhostRef" type="objId" references="Vhost" access="RC" index="y" parentRef="y"/> + <property name="name" type="sstr" access="RC" index="y"/> + <property name="host" type="sstr" access="RO"/> + <property name="port" type="uint16" access="RO"/> + <property name="transport" type="sstr" access="RO"/> + <property name="durable" type="bool" access="RC"/> + <property name="connectionRef" type="objId" references="Connection" access="RO"/> + + <statistic name="state" type="sstr" desc="Operational state of the link"/> + <statistic name="lastError" type="lstr" desc="Reason link is not operational"/> + + <method name="close"/> + + <method name="bridge" desc="Bridge messages over the link"> + <arg name="durable" dir="I" type="bool"/> + <arg name="src" dir="I" type="sstr"/> + <arg name="dest" dir="I" type="sstr"/> + <arg name="key" dir="I" type="lstr"/> + <arg name="tag" dir="I" type="sstr"/> + <arg name="excludes" dir="I" type="sstr"/> + <arg name="srcIsQueue" dir="I" type="bool"/> + <arg name="srcIsLocal" dir="I" type="bool"/> + <arg name="dynamic" dir="I" type="bool"/> + <arg name="sync" dir="I" type="uint16"/> + <arg name="credit" dir="I" type="uint32" default="0xFFFFFFFF" desc="granted to peer, 0 = infinite"/> + </method> + </class> + + + <!-- + =============================================================== + Bridge + =============================================================== + --> + <class name="Bridge"> + <property name="linkRef" type="objId" references="Link" access="RC" index="y" parentRef="y"/> + <property name="name" type="sstr" access="RC" index="y"/> + <property name="channelId" type="uint16" access="RO"/> + <property name="durable" type="bool" access="RC"/> + <property name="src" type="sstr" access="RC"/> + <property name="dest" type="sstr" access="RC"/> + <property name="key" type="lstr" access="RC"/> + <property name="srcIsQueue" type="bool" access="RC"/> + <property name="srcIsLocal" type="bool" access="RC"/> + <property name="tag" type="sstr" access="RC"/> + <property name="excludes" type="sstr" access="RC"/> + <property name="dynamic" type="bool" access="RC"/> + <property name="sync" type="uint16" access="RC"/> + <property name="credit" type="uint32" access="RC"/> + <method name="close"/> + </class> + + + <!-- + =============================================================== + Session + =============================================================== + --> + <class name="Session"> + <property name="vhostRef" type="objId" references="Vhost" access="RC" index="y" parentRef="y"/> + <property name="name" type="sstr" access="RC" index="y"/> + <property name="channelId" type="uint16" access="RO"/> + <property name="connectionRef" type="objId" references="Connection" access="RO"/> + <property name="detachedLifespan" type="uint32" access="RO" unit="second"/> + <property name="attached" type="bool" access="RO"/> + <property name="expireTime" type="absTime" access="RO" optional="y"/> + <property name="maxClientRate" type="uint32" access="RO" unit="msgs/sec" optional="y"/> + + <statistic name="unackedMessages" type="uint64" unit="message" desc="Unacknowledged messages in the session"/> + + <statistic name="TxnStarts" type="count64" unit="transaction" desc="Total transactions started "/> + <statistic name="TxnCommits" type="count64" unit="transaction" desc="Total transactions committed"/> + <statistic name="TxnRejects" type="count64" unit="transaction" desc="Total transactions rejected"/> + <statistic name="TxnCount" type="count32" unit="transaction" desc="Current pending transactions"/> + + <statistic name="clientCredit" type="count32" unit="message" desc="Client message credit"/> + + <method name="solicitAck"/> + <method name="detach"/> + <method name="resetLifespan"/> + <method name="close"/> + </class> + + <!-- + =============================================================== + ManagementSetupState + =============================================================== + + This thing is used during cluster recovery operations (and maybe + eventually elsewhere) to transmit assorted state from one broker to + another. At present, the two data propagated are the object number + counter and boot sequence, both of which are used for creating + object ids for newly-created objects. + + --> + <class name="ManagementSetupState"> + <!-- for reasons that aren't clear (to me, anyhow) you have to say + access="RO" to get accessor methods defined. RC or RW don't do + it. Probably this is documented someplace, but I couldn't find + it. -jrd --> + <property name="objectNum" type="uint64" access="RO"/> + <property name="bootSequence" type="uint16" access="RO"/> + </class> + + <eventArguments> + <arg name="altEx" type="sstr" desc="Name of the alternate exchange"/> + <arg name="args" type="map" desc="Supplemental arguments or parameters supplied"/> + <arg name="autoDel" type="bool" desc="Created object is automatically deleted when no longer in use"/> + <arg name="dest" type="sstr" desc="Destination tag for a subscription"/> + <arg name="disp" type="sstr" desc="Disposition of a declaration: 'created' if object was created, 'existing' if object already existed"/> + <arg name="durable" type="bool" desc="Created object is durable"/> + <arg name="exName" type="sstr" desc="Name of an exchange"/> + <arg name="exType" type="sstr" desc="Type of an exchange"/> + <arg name="excl" type="bool" desc="Created object is exclusive for the use of the owner only"/> + <arg name="key" type="lstr" desc="Key text used for routing or binding"/> + <arg name="qName" type="sstr" desc="Name of a queue"/> + <arg name="reason" type="lstr" desc="Reason for a failure"/> + <arg name="rhost" type="sstr" desc="Address (i.e. DNS name, IP address, etc.) of a remotely connected host"/> + <arg name="user" type="sstr" desc="Authentication identity"/> + <arg name="qTarget" type="sstr" desc="Redirect target queue"/> + <arg name="msgDepth" type="count64" desc="Current size of queue in messages"/> + <arg name="byteDepth" type="count64" desc="Current size of queue in bytes"/> + <arg name="properties" type="map" desc="optional identifying information sent by the remote"/> + </eventArguments> + + <event name="clientConnect" sev="inform" args="rhost, user, properties"/> + <event name="clientConnectFail" sev="warn" args="rhost, user, reason, properties"/> + <event name="clientDisconnect" sev="inform" args="rhost, user, properties"/> + <event name="brokerLinkUp" sev="inform" args="rhost"/> + <event name="brokerLinkDown" sev="warn" args="rhost"/> + <event name="queueDeclare" sev="inform" args="rhost, user, qName, durable, excl, autoDel, altEx, args, disp"/> + <event name="queueDelete" sev="inform" args="rhost, user, qName"/> + <event name="exchangeDeclare" sev="inform" args="rhost, user, exName, exType, altEx, durable, autoDel, args, disp"/> + <event name="exchangeDelete" sev="inform" args="rhost, user, exName"/> + <event name="bind" sev="inform" args="rhost, user, exName, qName, key, args"/> + <event name="unbind" sev="inform" args="rhost, user, exName, qName, key"/> + <event name="subscribe" sev="inform" args="rhost, user, qName, dest, excl, args"/> + <event name="unsubscribe" sev="inform" args="rhost, user, dest"/> + <event name="queueThresholdCrossedUpward" sev="inform" args="qName, msgDepth, byteDepth"/> + <event name="queueThresholdCrossedDownward" sev="inform" args="qName, msgDepth, byteDepth"/> + <event name="queueRedirect" sev="inform" args="qName, qTarget"/> + <event name="queueRedirectCancelled" sev="inform" args="qName, qTarget"/> + + <!-- The following are deprecated --> + <event name="queueThresholdExceeded" sev="warn" args="qName, msgDepth, byteDepth"/> +</schema> + |
