You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by jr...@apache.org on 2018/04/03 22:58:18 UTC

[39/51] [partial] qpid-site git commit: QPID-8048: Update the site for the Qpid C++ 1.38.0 release

http://git-wip-us.apache.org/repos/asf/qpid-site/blob/4dd03dd3/content/releases/qpid-cpp-1.38.0/messaging-api/book/prefetch.html
----------------------------------------------------------------------
diff --git a/content/releases/qpid-cpp-1.38.0/messaging-api/book/prefetch.html b/content/releases/qpid-cpp-1.38.0/messaging-api/book/prefetch.html
new file mode 100644
index 0000000..44e4395
--- /dev/null
+++ b/content/releases/qpid-cpp-1.38.0/messaging-api/book/prefetch.html
@@ -0,0 +1,152 @@
+<!DOCTYPE html>
+<!--
+ -
+ - 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.
+ -
+-->
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
+  <head>
+    <title>1.6.&#160;Receiver Capacity (Prefetch) - Apache Qpid&#8482;</title>
+    <meta http-equiv="X-UA-Compatible" content="IE=edge"/>
+    <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
+    <link rel="stylesheet" href="/site.css" type="text/css" async="async"/>
+    <link rel="stylesheet" href="/deferred.css" type="text/css" defer="defer"/>
+    <script type="text/javascript">var _deferredFunctions = [];</script>
+    <script type="text/javascript" src="/deferred.js" defer="defer"></script>
+    <!--[if lte IE 8]>
+      <link rel="stylesheet" href="/ie.css" type="text/css"/>
+      <script type="text/javascript" src="/html5shiv.js"></script>
+    <![endif]-->
+
+    <!-- Redirects for `go get` and godoc.org -->
+    <meta name="go-import"
+          content="qpid.apache.org git https://git-wip-us.apache.org/repos/asf/qpid-proton.git"/>
+    <meta name="go-source"
+          content="qpid.apache.org
+https://github.com/apache/qpid-proton/blob/go1/README.md
+https://github.com/apache/qpid-proton/tree/go1{/dir}
+https://github.com/apache/qpid-proton/blob/go1{/dir}/{file}#L{line}"/>
+  </head>
+  <body>
+    <div id="-content">
+      <div id="-top" class="panel">
+        <a id="-menu-link"><img width="16" height="16" src="" alt="Menu"/></a>
+
+        <a id="-search-link"><img width="22" height="16" src="" alt="Search"/></a>
+
+        <ul id="-global-navigation">
+          <li><a id="-logotype" href="/index.html">Apache Qpid<sup>&#8482;</sup></a></li>
+          <li><a href="/documentation.html">Documentation</a></li>
+          <li><a href="/download.html">Download</a></li>
+          <li><a href="/discussion.html">Discussion</a></li>
+        </ul>
+      </div>
+
+      <div id="-menu" class="panel" style="display: none;">
+        <div class="flex">
+          <section>
+            <h3>Project</h3>
+
+            <ul>
+              <li><a href="/overview.html">Overview</a></li>
+              <li><a href="/components/index.html">Components</a></li>
+              <li><a href="/releases/index.html">Releases</a></li>
+            </ul>
+          </section>
+
+          <section>
+            <h3>Messaging APIs</h3>
+
+            <ul>
+              <li><a href="/proton/index.html">Qpid Proton</a></li>
+              <li><a href="/components/jms/index.html">Qpid JMS</a></li>
+              <li><a href="/components/messaging-api/index.html">Qpid Messaging API</a></li>
+            </ul>
+          </section>
+
+          <section>
+            <h3>Servers and tools</h3>
+
+            <ul>
+              <li><a href="/components/broker-j/index.html">Broker-J</a></li>
+              <li><a href="/components/cpp-broker/index.html">C++ broker</a></li>
+              <li><a href="/components/dispatch-router/index.html">Dispatch router</a></li>
+            </ul>
+          </section>
+
+          <section>
+            <h3>Resources</h3>
+
+            <ul>
+              <li><a href="/dashboard.html">Dashboard</a></li>
+              <li><a href="https://cwiki.apache.org/confluence/display/qpid/Index">Wiki</a></li>
+              <li><a href="/resources.html">More resources</a></li>
+            </ul>
+          </section>
+        </div>
+      </div>
+
+      <div id="-search" class="panel" style="display: none;">
+        <form action="http://www.google.com/search" method="get">
+          <input type="hidden" name="sitesearch" value="qpid.apache.org"/>
+          <input type="text" name="q" maxlength="255" autofocus="autofocus" tabindex="1"/>
+          <button type="submit">Search</button>
+          <a href="/search.html">More ways to search</a>
+        </form>
+      </div>
+
+      <div id="-middle" class="panel">
+        <ul id="-path-navigation"><li><a href="/index.html">Home</a></li><li><a href="/releases/index.html">Releases</a></li><li><a href="/releases/qpid-cpp-1.38.0/index.html">Qpid C++ 1.38.0</a></li><li><a href="/releases/qpid-cpp-1.38.0/messaging-api/book/index.html">Using the Qpid Messaging API</a></li><li>1.6.&#160;Receiver Capacity (Prefetch)</li></ul>
+
+        <div id="-middle-content">
+          <div class="docbook"><div class="navheader"><table summary="Navigation header" width="100%"><tr><th align="center" colspan="3">1.6.&#160;Receiver Capacity (Prefetch)</th></tr><tr><td align="left" width="20%"><a accesskey="p" href="replay.html">Prev</a>&#160;</td><th align="center" width="60%">Chapter&#160;1.&#160;Using the Qpid Messaging API</th><td align="right" width="20%">&#160;<a accesskey="n" href="acknowledgements.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title"><a id="prefetch"></a>1.6.&#160;Receiver Capacity (Prefetch)</h2></div></div></div><p>By default, a receiver requests the next message from the
+      server in response to each fetch call, resulting in messages being
+      sent to the receiver one at a time. As in the case of sending, it
+      is often desirable to avoid this roundtrip for each message. This
+      can be achieved by allowing the receiver
+      to <em class="firstterm">prefetch</em> messages in anticipation of
+      fetch calls being made. The receiver needs to be able to store
+      these prefetched messages, the number it can hold is controlled by
+      the receivers capacity.</p></div><div class="navfooter"><hr /><table summary="Navigation footer" width="100%"><tr><td align="left" width="40%"><a accesskey="p" href="replay.html">Prev</a>&#160;</td><td align="center" width="20%"><a accesskey="u" href="using-the-qpid-messaging-api.html">Up</a></td><td align="right" width="40%">&#160;<a accesskey="n" href="acknowledgements.html">Next</a></td></tr><tr><td align="left" valign="top" width="40%">1.5.&#160;Sender Capacity and Replay&#160;</td><td align="center" width="20%"><a accesskey="h" href="index.html">Home</a></td><td align="right" valign="top" width="40%">&#160;1.7.&#160;Acknowledging Received Messages</td></tr></table></div></div>
+
+          <hr/>
+
+          <ul id="-apache-navigation">
+            <li><a href="http://www.apache.org/">Apache</a></li>
+            <li><a href="http://www.apache.org/licenses/">License</a></li>
+            <li><a href="http://www.apache.org/foundation/sponsorship.html">Sponsorship</a></li>
+            <li><a href="http://www.apache.org/foundation/thanks.html">Thanks!</a></li>
+            <li><a href="/security.html">Security</a></li>
+            <li><a href="http://www.apache.org/"><img id="-apache-feather" width="48" height="14" src="" alt="Apache"/></a></li>
+          </ul>
+
+          <p id="-legal">
+            Apache Qpid, Messaging built on AMQP; Copyright &#169; 2015
+            The Apache Software Foundation; Licensed under
+            the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache
+            License, Version 2.0</a>; Apache Qpid, Qpid, Qpid Proton,
+            Proton, Apache, the Apache feather logo, and the Apache Qpid
+            project logo are trademarks of The Apache Software
+            Foundation; All other marks mentioned may be trademarks or
+            registered trademarks of their respective owners
+          </p>
+        </div>
+      </div>
+    </div>
+  </body>
+</html>

http://git-wip-us.apache.org/repos/asf/qpid-site/blob/4dd03dd3/content/releases/qpid-cpp-1.38.0/messaging-api/book/replay.html
----------------------------------------------------------------------
diff --git a/content/releases/qpid-cpp-1.38.0/messaging-api/book/replay.html b/content/releases/qpid-cpp-1.38.0/messaging-api/book/replay.html
new file mode 100644
index 0000000..16375fb
--- /dev/null
+++ b/content/releases/qpid-cpp-1.38.0/messaging-api/book/replay.html
@@ -0,0 +1,168 @@
+<!DOCTYPE html>
+<!--
+ -
+ - 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.
+ -
+-->
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
+  <head>
+    <title>1.5.&#160;Sender Capacity and Replay - Apache Qpid&#8482;</title>
+    <meta http-equiv="X-UA-Compatible" content="IE=edge"/>
+    <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
+    <link rel="stylesheet" href="/site.css" type="text/css" async="async"/>
+    <link rel="stylesheet" href="/deferred.css" type="text/css" defer="defer"/>
+    <script type="text/javascript">var _deferredFunctions = [];</script>
+    <script type="text/javascript" src="/deferred.js" defer="defer"></script>
+    <!--[if lte IE 8]>
+      <link rel="stylesheet" href="/ie.css" type="text/css"/>
+      <script type="text/javascript" src="/html5shiv.js"></script>
+    <![endif]-->
+
+    <!-- Redirects for `go get` and godoc.org -->
+    <meta name="go-import"
+          content="qpid.apache.org git https://git-wip-us.apache.org/repos/asf/qpid-proton.git"/>
+    <meta name="go-source"
+          content="qpid.apache.org
+https://github.com/apache/qpid-proton/blob/go1/README.md
+https://github.com/apache/qpid-proton/tree/go1{/dir}
+https://github.com/apache/qpid-proton/blob/go1{/dir}/{file}#L{line}"/>
+  </head>
+  <body>
+    <div id="-content">
+      <div id="-top" class="panel">
+        <a id="-menu-link"><img width="16" height="16" src="" alt="Menu"/></a>
+
+        <a id="-search-link"><img width="22" height="16" src="" alt="Search"/></a>
+
+        <ul id="-global-navigation">
+          <li><a id="-logotype" href="/index.html">Apache Qpid<sup>&#8482;</sup></a></li>
+          <li><a href="/documentation.html">Documentation</a></li>
+          <li><a href="/download.html">Download</a></li>
+          <li><a href="/discussion.html">Discussion</a></li>
+        </ul>
+      </div>
+
+      <div id="-menu" class="panel" style="display: none;">
+        <div class="flex">
+          <section>
+            <h3>Project</h3>
+
+            <ul>
+              <li><a href="/overview.html">Overview</a></li>
+              <li><a href="/components/index.html">Components</a></li>
+              <li><a href="/releases/index.html">Releases</a></li>
+            </ul>
+          </section>
+
+          <section>
+            <h3>Messaging APIs</h3>
+
+            <ul>
+              <li><a href="/proton/index.html">Qpid Proton</a></li>
+              <li><a href="/components/jms/index.html">Qpid JMS</a></li>
+              <li><a href="/components/messaging-api/index.html">Qpid Messaging API</a></li>
+            </ul>
+          </section>
+
+          <section>
+            <h3>Servers and tools</h3>
+
+            <ul>
+              <li><a href="/components/broker-j/index.html">Broker-J</a></li>
+              <li><a href="/components/cpp-broker/index.html">C++ broker</a></li>
+              <li><a href="/components/dispatch-router/index.html">Dispatch router</a></li>
+            </ul>
+          </section>
+
+          <section>
+            <h3>Resources</h3>
+
+            <ul>
+              <li><a href="/dashboard.html">Dashboard</a></li>
+              <li><a href="https://cwiki.apache.org/confluence/display/qpid/Index">Wiki</a></li>
+              <li><a href="/resources.html">More resources</a></li>
+            </ul>
+          </section>
+        </div>
+      </div>
+
+      <div id="-search" class="panel" style="display: none;">
+        <form action="http://www.google.com/search" method="get">
+          <input type="hidden" name="sitesearch" value="qpid.apache.org"/>
+          <input type="text" name="q" maxlength="255" autofocus="autofocus" tabindex="1"/>
+          <button type="submit">Search</button>
+          <a href="/search.html">More ways to search</a>
+        </form>
+      </div>
+
+      <div id="-middle" class="panel">
+        <ul id="-path-navigation"><li><a href="/index.html">Home</a></li><li><a href="/releases/index.html">Releases</a></li><li><a href="/releases/qpid-cpp-1.38.0/index.html">Qpid C++ 1.38.0</a></li><li><a href="/releases/qpid-cpp-1.38.0/messaging-api/book/index.html">Using the Qpid Messaging API</a></li><li>1.5.&#160;Sender Capacity and Replay</li></ul>
+
+        <div id="-middle-content">
+          <div class="docbook"><div class="navheader"><table summary="Navigation header" width="100%"><tr><th align="center" colspan="3">1.5.&#160;Sender Capacity and Replay</th></tr><tr><td align="left" width="20%"><a accesskey="p" href="section-addresses.html">Prev</a>&#160;</td><th align="center" width="60%">Chapter&#160;1.&#160;Using the Qpid Messaging API</th><td align="right" width="20%">&#160;<a accesskey="n" href="prefetch.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title"><a id="replay"></a>1.5.&#160;Sender Capacity and Replay</h2></div></div></div><p>The send method of a sender has an optional second parameter
+      that controls whether the send call is synchronous or not. A
+      synchronous send call will block until the broker has confirmed
+      receipt of the message. An asynchronous send call will return
+      before the broker confirms receipt of the message, allowing for
+      example further send calls to be made without waiting for a
+      roundtrip to the broker for each message. This is desirable where
+      increased throughput is important.</p><p>The sender maintains a list of sent messages whose receipt
+      has yet to be confirmed by the broker. The maximum number of such
+      messages that it will hold is defined by the capacity of the
+      sender, which can be set by the application. If an application
+      tries to send with a sender whose capacity is already fully used
+      up, the send call will block waiting for capacity regardless of
+      the value of the sync flag.</p><p>The sender can be queried for the available space (i.e. the
+      unused capacity), and for the current count of unsettled messages
+      (i.e. those held in the replay list pending confirmation by the
+      server). When the unsettled count is zero, all messages on that
+      sender have been successfully sent.</p><p>If the connection fails and is transparently reconnected
+      (see <a class="xref" href="connections.html#connection-options" title="1.10.2.&#160;Connection Options">Section&#160;1.10.2, &#8220;Connection Options&#8221;</a> for details on how to control
+      this feature), the unsettled messages for each sender over that
+      connection will be re-transmitted. This provides a transparent
+      level of reliability. This feature can be controlled through the
+      link's reliability as defined in the address (see
+      <a class="xref" href="section-addresses.html#table-link-properties" title="Table&#160;1.3.&#160;Link Properties">Table&#160;1.3, &#8220;Link Properties&#8221;</a>). At present only
+      at-least-once guarantees are offered. </p></div><div class="navfooter"><hr /><table summary="Navigation footer" width="100%"><tr><td align="left" width="40%"><a accesskey="p" href="section-addresses.html">Prev</a>&#160;</td><td align="center" width="20%"><a accesskey="u" href="using-the-qpid-messaging-api.html">Up</a></td><td align="right" width="40%">&#160;<a accesskey="n" href="prefetch.html">Next</a></td></tr><tr><td align="left" valign="top" width="40%">1.4.&#160;Addresses&#160;</td><td align="center" width="20%"><a accesskey="h" href="index.html">Home</a></td><td align="right" valign="top" width="40%">&#160;1.6.&#160;Receiver Capacity (Prefetch)</td></tr></table></div></div>
+
+          <hr/>
+
+          <ul id="-apache-navigation">
+            <li><a href="http://www.apache.org/">Apache</a></li>
+            <li><a href="http://www.apache.org/licenses/">License</a></li>
+            <li><a href="http://www.apache.org/foundation/sponsorship.html">Sponsorship</a></li>
+            <li><a href="http://www.apache.org/foundation/thanks.html">Thanks!</a></li>
+            <li><a href="/security.html">Security</a></li>
+            <li><a href="http://www.apache.org/"><img id="-apache-feather" width="48" height="14" src="" alt="Apache"/></a></li>
+          </ul>
+
+          <p id="-legal">
+            Apache Qpid, Messaging built on AMQP; Copyright &#169; 2015
+            The Apache Software Foundation; Licensed under
+            the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache
+            License, Version 2.0</a>; Apache Qpid, Qpid, Qpid Proton,
+            Proton, Apache, the Apache feather logo, and the Apache Qpid
+            project logo are trademarks of The Apache Software
+            Foundation; All other marks mentioned may be trademarks or
+            registered trademarks of their respective owners
+          </p>
+        </div>
+      </div>
+    </div>
+  </body>
+</html>

http://git-wip-us.apache.org/repos/asf/qpid-site/blob/4dd03dd3/content/releases/qpid-cpp-1.38.0/messaging-api/book/section-Maps.html
----------------------------------------------------------------------
diff --git a/content/releases/qpid-cpp-1.38.0/messaging-api/book/section-Maps.html b/content/releases/qpid-cpp-1.38.0/messaging-api/book/section-Maps.html
new file mode 100644
index 0000000..cdf5153
--- /dev/null
+++ b/content/releases/qpid-cpp-1.38.0/messaging-api/book/section-Maps.html
@@ -0,0 +1,300 @@
+<!DOCTYPE html>
+<!--
+ -
+ - 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.
+ -
+-->
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
+  <head>
+    <title>1.11.&#160;Maps and Lists in Message Content - Apache Qpid&#8482;</title>
+    <meta http-equiv="X-UA-Compatible" content="IE=edge"/>
+    <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
+    <link rel="stylesheet" href="/site.css" type="text/css" async="async"/>
+    <link rel="stylesheet" href="/deferred.css" type="text/css" defer="defer"/>
+    <script type="text/javascript">var _deferredFunctions = [];</script>
+    <script type="text/javascript" src="/deferred.js" defer="defer"></script>
+    <!--[if lte IE 8]>
+      <link rel="stylesheet" href="/ie.css" type="text/css"/>
+      <script type="text/javascript" src="/html5shiv.js"></script>
+    <![endif]-->
+
+    <!-- Redirects for `go get` and godoc.org -->
+    <meta name="go-import"
+          content="qpid.apache.org git https://git-wip-us.apache.org/repos/asf/qpid-proton.git"/>
+    <meta name="go-source"
+          content="qpid.apache.org
+https://github.com/apache/qpid-proton/blob/go1/README.md
+https://github.com/apache/qpid-proton/tree/go1{/dir}
+https://github.com/apache/qpid-proton/blob/go1{/dir}/{file}#L{line}"/>
+  </head>
+  <body>
+    <div id="-content">
+      <div id="-top" class="panel">
+        <a id="-menu-link"><img width="16" height="16" src="" alt="Menu"/></a>
+
+        <a id="-search-link"><img width="22" height="16" src="" alt="Search"/></a>
+
+        <ul id="-global-navigation">
+          <li><a id="-logotype" href="/index.html">Apache Qpid<sup>&#8482;</sup></a></li>
+          <li><a href="/documentation.html">Documentation</a></li>
+          <li><a href="/download.html">Download</a></li>
+          <li><a href="/discussion.html">Discussion</a></li>
+        </ul>
+      </div>
+
+      <div id="-menu" class="panel" style="display: none;">
+        <div class="flex">
+          <section>
+            <h3>Project</h3>
+
+            <ul>
+              <li><a href="/overview.html">Overview</a></li>
+              <li><a href="/components/index.html">Components</a></li>
+              <li><a href="/releases/index.html">Releases</a></li>
+            </ul>
+          </section>
+
+          <section>
+            <h3>Messaging APIs</h3>
+
+            <ul>
+              <li><a href="/proton/index.html">Qpid Proton</a></li>
+              <li><a href="/components/jms/index.html">Qpid JMS</a></li>
+              <li><a href="/components/messaging-api/index.html">Qpid Messaging API</a></li>
+            </ul>
+          </section>
+
+          <section>
+            <h3>Servers and tools</h3>
+
+            <ul>
+              <li><a href="/components/broker-j/index.html">Broker-J</a></li>
+              <li><a href="/components/cpp-broker/index.html">C++ broker</a></li>
+              <li><a href="/components/dispatch-router/index.html">Dispatch router</a></li>
+            </ul>
+          </section>
+
+          <section>
+            <h3>Resources</h3>
+
+            <ul>
+              <li><a href="/dashboard.html">Dashboard</a></li>
+              <li><a href="https://cwiki.apache.org/confluence/display/qpid/Index">Wiki</a></li>
+              <li><a href="/resources.html">More resources</a></li>
+            </ul>
+          </section>
+        </div>
+      </div>
+
+      <div id="-search" class="panel" style="display: none;">
+        <form action="http://www.google.com/search" method="get">
+          <input type="hidden" name="sitesearch" value="qpid.apache.org"/>
+          <input type="text" name="q" maxlength="255" autofocus="autofocus" tabindex="1"/>
+          <button type="submit">Search</button>
+          <a href="/search.html">More ways to search</a>
+        </form>
+      </div>
+
+      <div id="-middle" class="panel">
+        <ul id="-path-navigation"><li><a href="/index.html">Home</a></li><li><a href="/releases/index.html">Releases</a></li><li><a href="/releases/qpid-cpp-1.38.0/index.html">Qpid C++ 1.38.0</a></li><li><a href="/releases/qpid-cpp-1.38.0/messaging-api/book/index.html">Using the Qpid Messaging API</a></li><li>1.11.&#160;Maps and Lists in Message Content</li></ul>
+
+        <div id="-middle-content">
+          <div class="docbook"><div class="navheader"><table summary="Navigation header" width="100%"><tr><th align="center" colspan="3">1.11.&#160;Maps and Lists in Message Content</th></tr><tr><td align="left" width="20%"><a accesskey="p" href="connections.html">Prev</a>&#160;</td><th align="center" width="60%">Chapter&#160;1.&#160;Using the Qpid Messaging API</th><td align="right" width="20%">&#160;<a accesskey="n" href="ch01s12.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title"><a id="section-Maps"></a>1.11.&#160;Maps and Lists in Message Content</h2></div></div></div><p>Many messaging applications need to exchange data across
+      languages and platforms, using the native datatypes of each
+      programming language.</p><p>The Qpid Messaging API supports <code class="classname">map</code> and <code class="classname">list</code> in message content.
+
+      <a class="footnote" href="#ftn.idm140160709003760" id="idm140160709003760"><sup class="footnote">[9]</sup></a>
+
+      <a class="footnote" href="#ftn.idm140160709003152" id="idm140160709003152"><sup class="footnote">[10]</sup></a>
+      Specific language support for <code class="classname">map</code> and <code class="classname">list</code> objects are shown in the following table.
+      </p><div class="table"><a id="tabl-Programming_in_Apache_Qpid-Qpid_Maps_in_Message_Content"></a><p class="title"><strong>Table&#160;1.5.&#160;Map and List Representation in Supported Languages</strong></p><div class="table-contents"><table border="1" class="table" summary="Map and List Representation in Supported Languages"><colgroup><col /><col /><col /></colgroup><thead><tr><th>Language</th><th>map</th><th>list</th></tr></thead><tbody><tr><td>Python</td><td><code class="classname">dict</code></td><td><code class="classname">list</code></td></tr><tr><td>C++</td><td><code class="classname">Variant::Map</code></td><td><code class="classname">Variant::List</code></td></tr><tr><td>Java</td><td><code class="classname">MapMessage</code></td><td><code class="classname">&#160;</code></td></tr><tr><td>.NET</td><td><code class="classname">Dictionary&lt;string, object&gt;</code></td><td><code class="classname">Collection&lt;object&gt;</code></td></tr></tbody></table></div></div><br clas
 s="table-break" /><p>
+	In all languages, messages are encoded using AMQP's portable datatypes.
+      </p><div class="tip" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Tip</h3><p>Because of the differences in type systems among
+	languages, the simplest way to provide portable messages is to
+	rely on maps, lists, strings, 64 bit signed integers, and
+	doubles for messages that need to be exchanged across languages
+	and platforms.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="section-Python-Maps"></a>1.11.1.&#160;Qpid Maps and Lists in Python</h3></div></div></div><p>In Python, Qpid supports the <code class="classname">dict</code> and <code class="classname">list</code> types directly in message content. The following code shows how to send these structures in a message:</p><div class="example"><a id="idm140160708985376"></a><p class="title"><strong>Example&#160;1.15.&#160;Sending Qpid Maps and Lists in Python</strong></p><div class="example-contents"><pre class="programlisting">
+	  from qpid.messaging import *
+	  # !!! SNIP !!!
+
+	  content = {'Id' : 987654321, 'name' : 'Widget', 'percent' : 0.99}
+	  content['colours'] = ['red', 'green', 'white']
+	  content['dimensions'] = {'length' : 10.2, 'width' : 5.1,'depth' : 2.0};
+	  content['parts'] = [ [1,2,5], [8,2,5] ]
+	  content['specs'] = {'colors' : content['colours'],
+	  'dimensions' : content['dimensions'],
+	  'parts' : content['parts'] }
+	  message = Message(content=content)
+	  sender.send(message)
+	     </pre></div></div><br class="example-break" /><p>The following table shows the datatypes that can be sent in a Python map message,
+	and the corresponding datatypes that will be received by clients in Java or C++.</p><div class="table"><a id="table-Python-Maps"></a><p class="title"><strong>Table&#160;1.6.&#160;Python Datatypes in Maps</strong></p><div class="table-contents"><table border="1" class="table" summary="Python Datatypes in Maps"><colgroup><col /><col /><col /></colgroup><thead><tr><th>Python Datatype</th><th>&#8594; C++</th><th>&#8594; Java</th></tr></thead><tbody><tr><td>bool</td><td>bool</td><td>boolean</td></tr><tr><td>int</td><td>int64</td><td>long</td></tr><tr><td>long</td><td>int64</td><td>long</td></tr><tr><td>float</td><td>double</td><td>double</td></tr><tr><td>unicode</td><td>string</td><td>java.lang.String</td></tr><tr><td>uuid</td><td>qpid::types::Uuid</td><td>java.util.UUID</td></tr><tr><td>dict</td><td>Variant::Map</td><td>java.util.Map</td></tr><tr><td>list</td><td>Variant::List</td><td>java.util.List</td></tr></tbody></table></div></div><br class="table-break" /></div><div class="sectio
 n"><div class="titlepage"><div><div><h3 class="title"><a id="section-cpp-Maps"></a>1.11.2.&#160;Qpid Maps and Lists in C++</h3></div></div></div><p>In C++, Qpid defines the the
+	<code class="classname">Variant::Map</code> and
+	<code class="classname">Variant::List</code> types, which can be
+	encoded into message content. The following code shows how to
+	send these structures in a message:</p><div class="example"><a id="idm140160708966464"></a><p class="title"><strong>Example&#160;1.16.&#160;Sending Qpid Maps and Lists in C++</strong></p><div class="example-contents"><pre class="programlisting">
+	  using namespace qpid::types;
+
+	  // !!! SNIP !!!
+
+	  Message message;
+	  Variant::Map content;
+	  content["id"] = 987654321;
+	  content["name"] = "Widget";
+	  content["percent"] = 0.99;
+	  Variant::List colours;
+	  colours.push_back(Variant("red"));
+	  colours.push_back(Variant("green"));
+	  colours.push_back(Variant("white"));
+	  content["colours"] = colours;
+
+	  Variant::Map dimensions;
+	  dimensions["length"] = 10.2;
+	  dimensions["width"] = 5.1;
+	  dimensions["depth"] = 2.0;
+	  content["dimensions"]= dimensions;
+
+	  Variant::List part1;
+	  part1.push_back(Variant(1));
+	  part1.push_back(Variant(2));
+	  part1.push_back(Variant(5));
+
+	  Variant::List part2;
+	  part2.push_back(Variant(8));
+	  part2.push_back(Variant(2));
+	  part2.push_back(Variant(5));
+
+	  Variant::List parts;
+	  parts.push_back(part1);
+	  parts.push_back(part2);
+	  content["parts"]= parts;
+
+	  Variant::Map specs;
+	  specs["colours"] = colours;
+	  specs["dimensions"] = dimensions;
+	  specs["parts"] = parts;
+	  content["specs"] = specs;
+
+	  encode(content, message);
+	  sender.send(message, true);
+	       </pre></div></div><br class="example-break" /><p>The following table shows the datatypes that can be sent
+	in a C++ map message, and the corresponding datatypes that
+	will be received by clients in Java and Python.</p><div class="table"><a id="table-cpp-Maps"></a><p class="title"><strong>Table&#160;1.7.&#160;C++ Datatypes in Maps</strong></p><div class="table-contents"><table border="1" class="table" summary="C++ Datatypes in Maps"><colgroup><col /><col /><col /></colgroup><thead><tr><th>C++ Datatype</th><th>&#8594; Python</th><th>&#8594; Java</th></tr></thead><tbody><tr><td>bool</td><td>bool</td><td>boolean</td></tr><tr><td>uint16</td><td>int | long</td><td>short</td></tr><tr><td>uint32</td><td>int | long</td><td>int</td></tr><tr><td>uint64</td><td>int | long</td><td>long</td></tr><tr><td>int16</td><td>int | long</td><td>short</td></tr><tr><td>int32</td><td>int | long</td><td>int</td></tr><tr><td>int64</td><td>int | long</td><td>long</td></tr><tr><td>float</td><td>float</td><td>float</td></tr><tr><td>double</td><td>float</td><td>double</td></tr><tr><td>string</td><td>unicode</td><td>java.lang.String</td></tr><tr><td>qpid::types::Uuid</td><td>uu
 id</td><td>java.util.UUID</td></tr><tr><td>Variant::Map</td><td>dict</td><td>java.util.Map</td></tr><tr><td>Variant::List</td><td>list</td><td>java.util.List</td></tr></tbody></table></div></div><br class="table-break" /></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="section-dotnet-Maps"></a>1.11.3.&#160;Qpid Maps and Lists in .NET</h3></div></div></div><p>
+	  The .NET binding for the Qpid Messaging API binds .NET managed data types
+	  to C++ <code class="classname">Variant</code> data types.  The following code shows how to
+	  send Map and List structures in a message:
+	</p><div class="example"><a id="idm140160708943120"></a><p class="title"><strong>Example&#160;1.17.&#160;Sending Qpid Maps and Lists in .NET C#</strong></p><div class="example-contents"><pre class="programlisting">
+	  using System;
+	  using Org.Apache.Qpid.Messaging;
+
+	  // !!! SNIP !!!
+
+	  Dictionary&lt;string, object&gt; content = new Dictionary&lt;string, object&gt;();
+	  Dictionary&lt;string, object&gt; subMap = new Dictionary&lt;string, object&gt;();
+	  Collection&lt;object&gt; colors = new Collection&lt;object&gt;();
+
+	  // add simple types
+	  content["id"] = 987654321;
+	  content["name"] = "Widget";
+	  content["percent"] = 0.99;
+
+	  // add nested amqp/map
+	  subMap["name"] = "Smith";
+	  subMap["number"] = 354;
+	  content["nestedMap"] = subMap;
+
+	  // add an amqp/list
+	  colors.Add("red");
+	  colors.Add("green");
+	  colors.Add("white");
+	  content["colorsList"] = colors;
+
+	  // add one of each supported amqp data type
+	  bool mybool = true;
+	  content["mybool"] = mybool;
+
+	  byte mybyte = 4;
+	  content["mybyte"] = mybyte;
+
+	  UInt16 myUInt16 = 5;
+	  content["myUInt16"] = myUInt16;
+
+	  UInt32 myUInt32 = 6;
+	  content["myUInt32"] = myUInt32;
+
+	  UInt64 myUInt64 = 7;
+	  content["myUInt64"] = myUInt64;
+
+	  char mychar = 'h';
+	  content["mychar"] = mychar;
+
+	  Int16 myInt16 = 9;
+	  content["myInt16"] = myInt16;
+
+	  Int32 myInt32 = 10;
+	  content["myInt32"] = myInt32;
+
+	  Int64 myInt64 = 11;
+	  content["myInt64"] = myInt64;
+
+	  Single mySingle = (Single)12.12;
+	  content["mySingle"] = mySingle;
+
+	  Double myDouble = 13.13;
+	  content["myDouble"] = myDouble;
+
+	  Guid myGuid = new Guid("000102030405060708090a0b0c0d0e0f");
+	  content["myGuid"] = myGuid;
+
+	  Message message = new Message(content);
+	  Send(message, true);
+	       </pre></div></div><br class="example-break" /><p>
+	  The following table shows the mapping between datatypes in .NET and C++.
+	</p><div class="table"><a id="table-dotnet-Maps"></a><p class="title"><strong>Table&#160;1.8.&#160;Datatype Mapping between C++ and .NET binding</strong></p><div class="table-contents"><table border="1" class="table" summary="Datatype Mapping between C++ and .NET binding"><colgroup><col /><col /></colgroup><thead><tr><th>C++ Datatype</th><th>&#8594; .NET binding</th></tr></thead><tbody><tr><td>void</td><td>nullptr</td></tr><tr><td>bool</td><td>bool</td></tr><tr><td>uint8</td><td>byte</td></tr><tr><td>uint16</td><td>UInt16</td></tr><tr><td>uint32</td><td>UInt32</td></tr><tr><td>uint64</td><td>UInt64</td></tr><tr><td>uint8</td><td>char</td></tr><tr><td>int16</td><td>Int16</td></tr><tr><td>int32</td><td>Int32</td></tr><tr><td>int64</td><td>Int64</td></tr><tr><td>float</td><td>Single</td></tr><tr><td>double</td><td>Double</td></tr><tr><td>string</td><td>string
+	      <a class="footnote" href="#ftn.callout-dotnet-string" id="callout-dotnet-string"><sup class="footnote">[a]</sup></a></td></tr><tr><td>qpid::types::Uuid</td><td>Guid</td></tr><tr><td>Variant::Map</td><td>Dictionary&lt;string, object&gt;
+	      <a class="footnoteref" href="section-Maps.html#ftn.callout-dotnet-string"><sup class="footnoteref">[a]</sup></a></td></tr><tr><td>Variant::List</td><td>Collection&lt;object&gt;
+	      <a class="footnoteref" href="section-Maps.html#ftn.callout-dotnet-string"><sup class="footnoteref">[a]</sup></a></td></tr></tbody><tbody class="footnotes"><tr><td colspan="2"><div class="footnote" id="ftn.callout-dotnet-string"><p><a class="para" href="#callout-dotnet-string"><sup class="para">[a] </sup></a>Strings are currently interpreted only with UTF-8 encoding.</p></div></td></tr></tbody></table></div></div><br class="table-break" /></div><div class="footnotes"><br /><hr align="left" width="100" /><div class="footnote" id="ftn.idm140160709003760"><p><a class="para" href="#idm140160709003760"><sup class="para">[9] </sup></a>Unlike JMS, there is not a specific message type for
+      map messages.</p></div><div class="footnote" id="ftn.idm140160709003152"><p><a class="para" href="#idm140160709003152"><sup class="para">[10] </sup></a>
+	  Note that the Qpid JMS client supports MapMessages whose values can be nested maps or lists. This is not standard JMS behaviour.
+	</p></div></div></div><div class="navfooter"><hr /><table summary="Navigation footer" width="100%"><tr><td align="left" width="40%"><a accesskey="p" href="connections.html">Prev</a>&#160;</td><td align="center" width="20%"><a accesskey="u" href="using-the-qpid-messaging-api.html">Up</a></td><td align="right" width="40%">&#160;<a accesskey="n" href="ch01s12.html">Next</a></td></tr><tr><td align="left" valign="top" width="40%">1.10.&#160;Connections&#160;</td><td align="center" width="20%"><a accesskey="h" href="index.html">Home</a></td><td align="right" valign="top" width="40%">&#160;1.12.&#160;The Request / Response Pattern</td></tr></table></div></div>
+
+          <hr/>
+
+          <ul id="-apache-navigation">
+            <li><a href="http://www.apache.org/">Apache</a></li>
+            <li><a href="http://www.apache.org/licenses/">License</a></li>
+            <li><a href="http://www.apache.org/foundation/sponsorship.html">Sponsorship</a></li>
+            <li><a href="http://www.apache.org/foundation/thanks.html">Thanks!</a></li>
+            <li><a href="/security.html">Security</a></li>
+            <li><a href="http://www.apache.org/"><img id="-apache-feather" width="48" height="14" src="" alt="Apache"/></a></li>
+          </ul>
+
+          <p id="-legal">
+            Apache Qpid, Messaging built on AMQP; Copyright &#169; 2015
+            The Apache Software Foundation; Licensed under
+            the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache
+            License, Version 2.0</a>; Apache Qpid, Qpid, Qpid Proton,
+            Proton, Apache, the Apache feather logo, and the Apache Qpid
+            project logo are trademarks of The Apache Software
+            Foundation; All other marks mentioned may be trademarks or
+            registered trademarks of their respective owners
+          </p>
+        </div>
+      </div>
+    </div>
+  </body>
+</html>

http://git-wip-us.apache.org/repos/asf/qpid-site/blob/4dd03dd3/content/releases/qpid-cpp-1.38.0/messaging-api/book/section-addresses.html
----------------------------------------------------------------------
diff --git a/content/releases/qpid-cpp-1.38.0/messaging-api/book/section-addresses.html b/content/releases/qpid-cpp-1.38.0/messaging-api/book/section-addresses.html
new file mode 100644
index 0000000..4873fb7
--- /dev/null
+++ b/content/releases/qpid-cpp-1.38.0/messaging-api/book/section-addresses.html
@@ -0,0 +1,720 @@
+<!DOCTYPE html>
+<!--
+ -
+ - 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.
+ -
+-->
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
+  <head>
+    <title>1.4.&#160;Addresses - Apache Qpid&#8482;</title>
+    <meta http-equiv="X-UA-Compatible" content="IE=edge"/>
+    <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
+    <link rel="stylesheet" href="/site.css" type="text/css" async="async"/>
+    <link rel="stylesheet" href="/deferred.css" type="text/css" defer="defer"/>
+    <script type="text/javascript">var _deferredFunctions = [];</script>
+    <script type="text/javascript" src="/deferred.js" defer="defer"></script>
+    <!--[if lte IE 8]>
+      <link rel="stylesheet" href="/ie.css" type="text/css"/>
+      <script type="text/javascript" src="/html5shiv.js"></script>
+    <![endif]-->
+
+    <!-- Redirects for `go get` and godoc.org -->
+    <meta name="go-import"
+          content="qpid.apache.org git https://git-wip-us.apache.org/repos/asf/qpid-proton.git"/>
+    <meta name="go-source"
+          content="qpid.apache.org
+https://github.com/apache/qpid-proton/blob/go1/README.md
+https://github.com/apache/qpid-proton/tree/go1{/dir}
+https://github.com/apache/qpid-proton/blob/go1{/dir}/{file}#L{line}"/>
+  </head>
+  <body>
+    <div id="-content">
+      <div id="-top" class="panel">
+        <a id="-menu-link"><img width="16" height="16" src="" alt="Menu"/></a>
+
+        <a id="-search-link"><img width="22" height="16" src="" alt="Search"/></a>
+
+        <ul id="-global-navigation">
+          <li><a id="-logotype" href="/index.html">Apache Qpid<sup>&#8482;</sup></a></li>
+          <li><a href="/documentation.html">Documentation</a></li>
+          <li><a href="/download.html">Download</a></li>
+          <li><a href="/discussion.html">Discussion</a></li>
+        </ul>
+      </div>
+
+      <div id="-menu" class="panel" style="display: none;">
+        <div class="flex">
+          <section>
+            <h3>Project</h3>
+
+            <ul>
+              <li><a href="/overview.html">Overview</a></li>
+              <li><a href="/components/index.html">Components</a></li>
+              <li><a href="/releases/index.html">Releases</a></li>
+            </ul>
+          </section>
+
+          <section>
+            <h3>Messaging APIs</h3>
+
+            <ul>
+              <li><a href="/proton/index.html">Qpid Proton</a></li>
+              <li><a href="/components/jms/index.html">Qpid JMS</a></li>
+              <li><a href="/components/messaging-api/index.html">Qpid Messaging API</a></li>
+            </ul>
+          </section>
+
+          <section>
+            <h3>Servers and tools</h3>
+
+            <ul>
+              <li><a href="/components/broker-j/index.html">Broker-J</a></li>
+              <li><a href="/components/cpp-broker/index.html">C++ broker</a></li>
+              <li><a href="/components/dispatch-router/index.html">Dispatch router</a></li>
+            </ul>
+          </section>
+
+          <section>
+            <h3>Resources</h3>
+
+            <ul>
+              <li><a href="/dashboard.html">Dashboard</a></li>
+              <li><a href="https://cwiki.apache.org/confluence/display/qpid/Index">Wiki</a></li>
+              <li><a href="/resources.html">More resources</a></li>
+            </ul>
+          </section>
+        </div>
+      </div>
+
+      <div id="-search" class="panel" style="display: none;">
+        <form action="http://www.google.com/search" method="get">
+          <input type="hidden" name="sitesearch" value="qpid.apache.org"/>
+          <input type="text" name="q" maxlength="255" autofocus="autofocus" tabindex="1"/>
+          <button type="submit">Search</button>
+          <a href="/search.html">More ways to search</a>
+        </form>
+      </div>
+
+      <div id="-middle" class="panel">
+        <ul id="-path-navigation"><li><a href="/index.html">Home</a></li><li><a href="/releases/index.html">Releases</a></li><li><a href="/releases/qpid-cpp-1.38.0/index.html">Qpid C++ 1.38.0</a></li><li><a href="/releases/qpid-cpp-1.38.0/messaging-api/book/index.html">Using the Qpid Messaging API</a></li><li>1.4.&#160;Addresses</li></ul>
+
+        <div id="-middle-content">
+          <div class="docbook"><div class="navheader"><table summary="Navigation header" width="100%"><tr><th align="center" colspan="3">1.4.&#160;Addresses</th></tr><tr><td align="left" width="20%"><a accesskey="p" href="ch01s03.html">Prev</a>&#160;</td><th align="center" width="60%">Chapter&#160;1.&#160;Using the Qpid Messaging API</th><td align="right" width="20%">&#160;<a accesskey="n" href="replay.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title"><a id="section-addresses"></a>1.4.&#160;Addresses</h2></div></div></div><p>An <em class="firstterm">address</em> is the name of a message
+      target or message source.
+
+      <a class="footnote" href="#ftn.idm140160709302048" id="idm140160709302048"><sup class="footnote">[2]</sup></a>
+
+      The methods that create senders and receivers require an
+      address. The details of sending to a particular target or
+      receiving from a particular source are then handled by the
+      sender or receiver. A different target or source can be used
+      simply by using a different address.
+      </p><p>An address resolves to a <em class="firstterm">node</em>. The
+      Qpid Messaging API recognises two kinds of nodes,
+      <em class="firstterm">queues</em> and <em class="firstterm">topics</em>
+
+      <a class="footnote" href="#ftn.idm140160709298896" id="idm140160709298896"><sup class="footnote">[3]</sup></a>.
+
+      A queue stores each message until it has been received and
+      acknowledged, and only one receiver can receive a given message
+
+      <a class="footnote" href="#ftn.idm140160709296352" id="idm140160709296352"><sup class="footnote">[4]</sup></a>.
+
+      A topic immediately delivers a message to all eligible
+      receivers; if there are no eligible receivers, it discards the
+      message.  In the AMQP 0-10 implementation of the API,
+
+      <a class="footnote" href="#ftn.idm140160709294800" id="idm140160709294800"><sup class="footnote">[5]</sup></a>
+
+      queues map to AMQP queues, and topics map to AMQP exchanges.
+
+      <a class="footnote" href="#ftn.idm140160709294096" id="idm140160709294096"><sup class="footnote">[6]</sup></a>
+      </p><p>In the rest of this tutorial, we present many examples
+      using two programs that take an address as a command line
+      parameter.  <span class="command"><strong>spout</strong></span> sends messages to the
+      target address, <span class="command"><strong>drain</strong></span> receives messages from
+      the source address.  The source code is available in C++, Python, and
+      .NET C# and can be found in the examples directory for each
+      language. These programs can use any address string as a source
+      or a destination, and have many command line options to
+      configure behavior&#8212;use the <span class="command"><strong>-h</strong></span> option
+      for documentation on these options.
+
+      <a class="footnote" href="#ftn.idm140160709290432" id="idm140160709290432"><sup class="footnote">[7]</sup></a>
+
+
+      The examples in this tutorial also use the
+      <span class="command"><strong>qpid-config</strong></span> utility to configure AMQP 0-10
+      queues and exchanges on a Qpid broker.
+      </p><div class="example"><a id="idm140160709287200"></a><p class="title"><strong>Example&#160;1.4.&#160;Queues</strong></p><div class="example-contents"><p>Create a queue with <span class="command"><strong>qpid-config</strong></span>, send a message using
+	<span class="command"><strong>spout</strong></span>, and read it using <span class="command"><strong>drain</strong></span>:</p><pre class="screen">
+	  $ qpid-config add queue hello-world
+	  $ ./spout hello-world
+	  $ ./drain hello-world
+
+	  Message(properties={spout-id:c877e622-d57b-4df2-bf3e-6014c68da0ea:0}, content='')
+        </pre><p>The queue stored the message sent by <span class="command"><strong>spout</strong></span> and delivered
+        it to <span class="command"><strong>drain</strong></span> when requested.</p><p>Once the message has been delivered and and acknowledged
+	by <span class="command"><strong>drain</strong></span>, it is no longer available on the queue. If we run
+	<span class="command"><strong>drain</strong></span> one more time, no messages will be retrieved.</p><pre class="screen">
+	  $ ./drain hello-world
+	  $
+	</pre></div></div><br class="example-break" /><div class="example"><a id="idm140160709278352"></a><p class="title"><strong>Example&#160;1.5.&#160;Topics</strong></p><div class="example-contents"><p>This example is similar to the previous example, but it
+	uses a topic instead of a queue.</p><p>First, use <span class="command"><strong>qpid-config</strong></span> to remove the queue
+	and create an exchange with the same name:</p><pre class="screen">
+	  $ qpid-config del queue hello-world
+	  $ qpid-config add exchange topic hello-world
+        </pre><p>Now run <span class="command"><strong>drain</strong></span> and <span class="command"><strong>spout</strong></span> the same way we did in the previous example:</p><pre class="screen">
+	  $ ./spout hello-world
+	  $ ./drain hello-world
+	  $
+        </pre><p>Topics deliver messages immediately to any interested
+        receiver, and do not store messages. Because there were no
+        receivers at the time <span class="command"><strong>spout</strong></span> sent the
+        message, it was simply discarded. When we ran
+        <span class="command"><strong>drain</strong></span>, there were no messages to
+        receive.</p><p>Now let's run <span class="command"><strong>drain</strong></span> first, using the
+	<code class="literal">-t</code> option to specify a timeout in seconds.
+	While <span class="command"><strong>drain</strong></span> is waiting for messages,
+	run <span class="command"><strong>spout</strong></span> in another window.</p><p><span class="emphasis"><em>First Window:</em></span></p><pre class="screen">
+	  $ ./drain -t 30 hello-word
+        </pre><p><span class="emphasis"><em>Second Window:</em></span></p><pre class="screen">
+	  $ ./spout hello-word
+        </pre><p>Once <span class="command"><strong>spout</strong></span> has sent a message, return
+	to the first window to see the output from
+	<span class="command"><strong>drain</strong></span>:</p><pre class="screen">
+	  Message(properties={spout-id:7da2d27d-93e6-4803-8a61-536d87b8d93f:0}, content='')
+        </pre><p>You can run <span class="command"><strong>drain</strong></span> in several separate
+	windows; each creates a subscription for the exchange, and
+	each receives all messages sent to the exchange.</p></div></div><br class="example-break" /><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="idm140160709262208"></a>1.4.1.&#160;Address Strings</h3></div></div></div><p>So far, our examples have used address strings that
+	contain only the name of a node. An <em class="firstterm">address
+	string</em> can also contain a
+	<em class="firstterm">subject</em> and
+	<em class="firstterm">options</em>.</p><p>The syntax for an address string is:</p><pre class="programlisting">
+	address_string ::=  &lt;address&gt; [ / &lt;subject&gt; ] [ ; &lt;options&gt; ]
+	options ::=  { &lt;key&gt; : &lt;value&gt;, ... }
+	</pre><p>Addresses, subjects, and keys are strings.  Values can
+	be numbers, strings (with optional single or double quotes),
+	maps, or lists. A complete BNF for address strings appears in
+	<a class="xref" href="section-addresses.html#section-address-string-bnf" title="1.4.4.&#160;Address String Grammar">Section&#160;1.4.4, &#8220;Address String Grammar&#8221;</a>.</p><p>So far, the address strings in this tutorial have only
+	used simple names. The following sections show how to use
+	subjects and options.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="idm140160709256960"></a>1.4.2.&#160;Subjects</h3></div></div></div><p>Every message has a property called
+	<em class="firstterm">subject</em>, which is analogous to the
+	subject on an email message. If no subject is specified, the
+	message's subject is null. For convenience, address strings
+	also allow a subject. If a sender's address contains a
+	subject, it is used as the default subject for the messages
+	it sends.
+
+	If a receiver's address contains a subject, it is used to
+	select only messages that match the subject&#8212;the matching
+	algorithm depends on the message source.
+	</p><p>
+	  In AMQP 0-10, each exchange type has its own matching
+	  algorithm. This is discussed in
+	  <a class="xref" href="section-amqp0-10-mapping.html" title="1.16.&#160;The AMQP 0-10 mapping">Section&#160;1.16, &#8220;The AMQP 0-10 mapping&#8221;</a>.
+	</p><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3><p>
+	    Currently, a receiver bound to a queue ignores subjects,
+	    receiving messages from the queue without filtering. Support
+	    for subject filtering on queues will be implemented soon.
+	  </p></div><div class="example"><a id="idm140160709253088"></a><p class="title"><strong>Example&#160;1.6.&#160;Using subjects</strong></p><div class="example-contents"><p>In this example we show how subjects affect message
+	  flow.</p><p>First, let's use <span class="command"><strong>qpid-config</strong></span> to create a topic exchange.</p><pre class="screen">
+	    $ qpid-config add exchange topic news-service
+	  </pre><p>Now we use drain to receive messages from <code class="literal">news-service</code> that match the subject <code class="literal">sports</code>.</p><p><span class="emphasis"><em>First Window:</em></span></p><pre class="screen">
+	    $ ./drain -t 30 news-service/sports
+	  </pre><p>In a second window, let's send messages to <code class="literal">news-service</code> using two different subjects:</p><p><span class="emphasis"><em>Second Window:</em></span></p><pre class="screen">
+	    $ ./spout news-service/sports
+	    $ ./spout news-service/news
+	  </pre><p>Now look at the first window, the message with the
+	  subject <code class="literal">sports</code> has been received, but not
+	  the message with the subject <code class="literal">news</code>:</p><pre class="screen">
+	    Message(properties={qpid.subject:sports, spout-id:9441674e-a157-4780-a78e-f7ccea998291:0}, content='')
+	  </pre><p>If you run <span class="command"><strong>drain</strong></span> in multiple
+          windows using the same subject, all instances of
+          <span class="command"><strong>drain</strong></span> receive the messages for that
+          subject.</p></div></div><br class="example-break" /><p>The AMQP exchange type we are using here,
+        <code class="literal">amq.topic</code>, can also do more sophisticated
+        matching.
+
+	A sender's subject can contain multiple words separated by a
+	<span class="quote">&#8220;<span class="quote">.</span>&#8221;</span> delimiter. For instance, in a news
+	application, the sender might use subjects like
+	<code class="literal">usa.news</code>, <code class="literal">usa.weather</code>,
+	<code class="literal">europe.news</code>, or
+	<code class="literal">europe.weather</code>.
+
+	The receiver's subject can include wildcard characters&#8212;
+	<span class="quote">&#8220;<span class="quote">#</span>&#8221;</span> matches one or more words in the message's
+	subject, <span class="quote">&#8220;<span class="quote">*</span>&#8221;</span> matches a single word.
+
+	For instance, if the subject in the source address is
+	<code class="literal">*.news</code>, it matches messages with the
+	subject <code class="literal">europe.news</code> or
+	<code class="literal">usa.news</code>; if it is
+	<code class="literal">europe.#</code>, it matches messages with subjects
+	like <code class="literal">europe.news</code> or
+	<code class="literal">europe.pseudo.news</code>.</p><div class="example"><a id="idm140160709232224"></a><p class="title"><strong>Example&#160;1.7.&#160;Subjects with multi-word keys</strong></p><div class="example-contents"><p>This example uses drain and spout to demonstrate the
+	  use of subjects with two-word keys.</p><p>Let's use <span class="command"><strong>drain</strong></span> with the subject
+	  <code class="literal">*.news</code> to listen for messages in which
+	  the second word of the key is
+	  <code class="literal">news</code>.</p><p><span class="emphasis"><em>First Window:</em></span></p><pre class="screen">
+	    $ ./drain -t 30 news-service/*.news
+	  </pre><p>Now let's send messages using several different
+	  two-word keys:</p><p><span class="emphasis"><em>Second Window:</em></span></p><pre class="screen">
+	    $ ./spout news-service/usa.news
+	    $ ./spout news-service/usa.sports
+	    $ ./spout news-service/europe.sports
+	    $ ./spout news-service/europe.news
+	  </pre><p>In the first window, the messages with
+	  <code class="literal">news</code> in the second word of the key have
+	  been received:</p><pre class="screen">
+	    Message(properties={qpid.subject:usa.news, spout-id:73fc8058-5af6-407c-9166-b49a9076097a:0}, content='')
+	    Message(properties={qpid.subject:europe.news, spout-id:f72815aa-7be4-4944-99fd-c64c9747a876:0}, content='')
+	  </pre><p>Next, let's use <span class="command"><strong>drain</strong></span> with the
+	  subject <code class="literal">#.news</code> to match any sequence of
+	  words that ends with <code class="literal">news</code>.</p><p><span class="emphasis"><em>First Window:</em></span></p><pre class="screen">
+	    $ ./drain -t 30 news-service/#.news
+	  </pre><p>In the second window, let's send messages using a
+	  variety of different multi-word keys:</p><p><span class="emphasis"><em>Second Window:</em></span></p><pre class="screen">
+	    $ ./spout news-service/news
+	    $ ./spout news-service/sports
+	    $ ./spout news-service/usa.news
+	    $ ./spout news-service/usa.sports
+	    $ ./spout news-service/usa.faux.news
+	    $ ./spout news-service/usa.faux.sports
+	  </pre><p>In the first window, messages with
+	  <code class="literal">news</code> in the last word of the key have been
+	  received:</p><pre class="screen">
+	    Message(properties={qpid.subject:news, spout-id:cbd42b0f-c87b-4088-8206-26d7627c9640:0}, content='')
+	    Message(properties={qpid.subject:usa.news, spout-id:234a78d7-daeb-4826-90e1-1c6540781eac:0}, content='')
+	    Message(properties={qpid.subject:usa.faux.news, spout-id:6029430a-cfcb-4700-8e9b-cbe4a81fca5f:0}, content='')
+	  </pre></div></div><br class="example-break" /></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="idm140160709216448"></a>1.4.3.&#160;Address String Options</h3></div></div></div><p>
+	  The options in an address string can contain additional
+	  information for the senders or receivers created for it,
+	  including:
+	</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>
+	      Policies for assertions about the node to which an address
+	      refers.
+	    </p><p>
+	      For instance, in the address string <code class="literal">my-queue;
+	      {assert: always, node:{ type: queue }}</code>, the node
+	      named <code class="literal">my-queue</code> must be a queue; if not,
+	      the address does not resolve to a node, and an exception
+	      is raised.
+	    </p></li><li class="listitem"><p>
+	      Policies for automatically creating or deleting the node to which an address refers.
+	    </p><p>
+	      For instance, in the address string <code class="literal">xoxox ; {create: always}</code>,
+	      the queue <code class="literal">xoxox</code> is created, if it does
+	      not exist, before the address is resolved.
+	    </p></li><li class="listitem"><p>
+	      Extension points that can be used for sender/receiver configuration.
+	    </p><p>
+	      For instance, if the address for a receiver is
+	      <code class="literal">my-queue; {mode: browse}</code>, the receiver
+	      works in <code class="literal">browse</code> mode, leaving messages
+	      on the queue so other receivers can receive them.
+	    </p></li><li class="listitem"><p>
+	      Extension points providing more direct control over the underlying protocol.
+	    </p><p>
+	      For instance, the <code class="literal">x-bindings</code> property
+	      allows greater control over the AMQP 0-10 binding process
+	      when an address is resolved.
+	    </p></li></ul></div><p>
+	  Let's use some examples to show how these different kinds of
+	  address string options affect the behavior of senders and
+	  receives.
+	</p><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="idm140160709204432"></a>1.4.3.1.&#160;assert</h4></div></div></div><p>
+	    In this section, we use the <code class="literal">assert</code> option
+	    to ensure that the address resolves to a node of the required
+	    type.
+	  </p><div class="example"><a id="idm140160709202672"></a><p class="title"><strong>Example&#160;1.8.&#160;Assertions on Nodes</strong></p><div class="example-contents"><p>Let's use <span class="command"><strong>qpid-config</strong></span> to create a
+	    queue and a topic.</p><pre class="screen">
+	      $ qpid-config add queue my-queue
+	      $ qpid-config add exchange topic my-topic
+	    </pre><p>
+	      We can now use the address specified to drain to assert that it is
+	      of a particular type:
+	    </p><pre class="screen">
+	      $ ./drain 'my-queue; {assert: always, node:{ type: queue }}'
+	      $ ./drain 'my-queue; {assert: always, node:{ type: topic }}'
+	      2010-04-20 17:30:46 warning Exception received from broker: not-found: not-found: Exchange not found: my-queue (../../src/qpid/broker/ExchangeRegistry.cpp:92) [caused by 2 \x07:\x01]
+	      Exchange my-queue does not exist
+	    </pre><p>
+	      The first attempt passed without error as my-queue is indeed a
+	      queue. The second attempt however failed; my-queue is not a
+	      topic.
+	    </p><p>
+	      We can do the same thing for my-topic:
+	    </p><pre class="screen">
+	      $ ./drain 'my-topic; {assert: always, node:{ type: topic }}'
+	      $ ./drain 'my-topic; {assert: always, node:{ type: queue }}'
+	      2010-04-20 17:31:01 warning Exception received from broker: not-found: not-found: Queue not found: my-topic (../../src/qpid/broker/SessionAdapter.cpp:754) [caused by 1 \x08:\x01]
+	      Queue my-topic does not exist
+	    </pre></div></div><br class="example-break" /><p>Now let's use the <code class="literal">create</code> option to
+	  create the queue <code class="literal">xoxox</code> if it does not already
+	  exist:</p></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="idm140160709194928"></a>1.4.3.2.&#160;create</h4></div></div></div><p>In previous examples, we created the queue before
+	  listening for messages on it. Using <code class="literal">create:
+	  always</code>, the queue is automatically created if it
+	  does not exist.</p><div class="example"><a id="idm140160709193088"></a><p class="title"><strong>Example&#160;1.9.&#160;Creating a Queue Automatically</strong></p><div class="example-contents"><p><span class="emphasis"><em>First Window:</em></span></p><pre class="screen">$ ./drain -t 30 "xoxox ; {create: always}"</pre><p>Now we can send messages to this queue:</p><p><span class="emphasis"><em>Second Window:</em></span></p><pre class="screen">$ ./spout "xoxox ; {create: always}"</pre><p>Returning to the first window, we see that <span class="command"><strong>drain</strong></span> has received this message:</p><pre class="screen">Message(properties={spout-id:1a1a3842-1a8b-4f88-8940-b4096e615a7d:0}, content='')</pre></div></div><br class="example-break" /><p>The details of the node thus created can be controlled by further options within the node. See <a class="xref" href="section-addresses.html#table-node-properties" title="Table&#160;1.2.&#160;Node Properties">Table&#160;1.2, &#822
 0;Node Properties&#8221;</a> for details.</p></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="idm140160709186816"></a>1.4.3.3.&#160;browse</h4></div></div></div><p>Some options specify message transfer semantics; for
+	  instance, they may state whether messages should be consumed or
+	  read in browsing mode, or specify reliability
+	  characteristics. The following example uses the
+	  <code class="literal">browse</code> option to receive messages without
+	  removing them from a queue.</p><div class="example"><a id="idm140160709184848"></a><p class="title"><strong>Example&#160;1.10.&#160;Browsing a Queue</strong></p><div class="example-contents"><p>
+	      Let's use the browse mode to receive messages without
+	      removing them from the queue. First we send three messages to the
+	      queue:
+	    </p><pre class="screen">
+	      $ ./spout my-queue --content one
+	      $ ./spout my-queue --content two
+	      $ ./spout my-queue --content three
+	    </pre><p>Now we use drain to get those messages, using the browse option:</p><pre class="screen">
+	      $ ./drain 'my-queue; {mode: browse}'
+	      Message(properties={spout-id:fbb93f30-0e82-4b6d-8c1d-be60eb132530:0}, content='one')
+	      Message(properties={spout-id:ab9e7c31-19b0-4455-8976-34abe83edc5f:0}, content='two')
+	      Message(properties={spout-id:ea75d64d-ea37-47f9-96a9-d38e01c97925:0}, content='three')
+	    </pre><p>We can confirm the messages are still on the queue by repeating the drain:</p><pre class="screen">
+	      $ ./drain 'my-queue; {mode: browse}'
+	      Message(properties={spout-id:fbb93f30-0e82-4b6d-8c1d-be60eb132530:0}, content='one')
+	      Message(properties={spout-id:ab9e7c31-19b0-4455-8976-34abe83edc5f:0}, content='two')
+	      Message(properties={spout-id:ea75d64d-ea37-47f9-96a9-d38e01c97925:0}, content='three')
+	    </pre></div></div><br class="example-break" /></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="idm140160709179728"></a>1.4.3.4.&#160;x-bindings</h4></div></div></div><p>Greater control over the AMQP 0-10 binding process can
+	  be achieved by including an <code class="literal">x-bindings</code>
+	  option in an address string.
+
+	  For instance, the XML Exchange is an AMQP 0-10 custom exchange
+	  provided by the Apache Qpid C++ broker. It allows messages to
+	  be filtered using XQuery; queries can address either message
+	  properties or XML content in the body of the message. The
+	  xquery is specified in the arguments field of the AMQP 0-10
+	  command. When using the messaging API an xquery can be
+	  specified in and address that resolves to an XML exchange by
+	  using the x-bindings property.</p><p>An instance of the XML Exchange must be added before it
+	  can be used:</p><pre class="programlisting">
+	    $ qpid-config add exchange xml xml
+	  </pre><p>When using the XML Exchange, a receiver provides an
+	  XQuery as an x-binding argument. If the query contains a
+	  context item (a path starting with <span class="quote">&#8220;<span class="quote">.</span>&#8221;</span>), then it
+	  is applied to the content of the message, which must be
+	  well-formed XML. For instance, <code class="literal">./weather</code> is
+	  a valid XQuery, which matches any message in which the root
+	  element is named <code class="literal">weather</code>. Here is an
+	  address string that contains this query:</p><pre class="programlisting">
+	  xml; {
+	  link: {
+	  x-bindings: [{exchange:xml, key:weather, arguments:{xquery:"./weather"} }]
+	  }
+	  }
+	  </pre><p>When using longer queries with <span class="command"><strong>drain</strong></span>,
+	  it is often useful to place the query in a file, and use
+	  <span class="command"><strong>cat</strong></span> in the command line. We do this in the
+	  following example.</p><div class="example"><a id="idm140160709171344"></a><p class="title"><strong>Example&#160;1.11.&#160;Using the XML Exchange</strong></p><div class="example-contents"><p>This example uses an x-binding that contains queries, which filter based on the content of XML messages. Here is an XQuery that we will use in this example:</p><pre class="programlisting">
+	      
+		       let $w := ./weather
+		       return $w/station = 'Raleigh-Durham International Airport (KRDU)'
+		       and $w/temperature_f &gt; 50
+		       and $w/temperature_f - $w/dewpoint &gt; 5
+		       and $w/wind_speed_mph &gt; 7
+		       and $w/wind_speed_mph &lt; 20 
+	    </pre><p>We can specify this query in an x-binding to listen to messages that meet the criteria specified by the query:</p><p><span class="emphasis"><em>First Window:</em></span></p><pre class="screen">
+	      $ ./drain -f "xml; {link:{x-bindings:[{key:'weather',
+	      arguments:{xquery:\"$(cat rdu.xquery )\"}}]}}"
+	    </pre><p>In another window, let's create an XML message that meets the criteria in the query, and place it in the file <code class="filename">rdu.xml</code>:</p><pre class="programlisting">
+	      
+		       &lt;weather&gt;
+		       &lt;station&gt;Raleigh-Durham International Airport (KRDU)&lt;/station&gt;
+		       &lt;wind_speed_mph&gt;16&lt;/wind_speed_mph&gt;
+		       &lt;temperature_f&gt;70&lt;/temperature_f&gt;
+		       &lt;dewpoint&gt;35&lt;/dewpoint&gt;
+		       &lt;/weather&gt;
+	      </pre><p>Now let's use <span class="command"><strong>spout</strong></span> to send this message to the XML exchange:</p><p><span class="emphasis"><em>Second Window:</em></span></p><pre class="screen">
+		spout --content "$(cat rdu.xml)" xml/weather
+	      </pre><p>Returning to the first window, we see that the message has been received:</p><pre class="screen">$ ./drain -f "xml; {link:{x-bindings:[{exchange:'xml', key:'weather', arguments:{xquery:\"$(cat rdu.xquery )\"}}]}}"
+	      Message(properties={qpid.subject:weather, spout-id:31c431de-593f-4bec-a3dd-29717bd945d3:0},
+	      content='&lt;weather&gt;
+	      &lt;station&gt;Raleigh-Durham International Airport (KRDU)&lt;/station&gt;
+	      &lt;wind_speed_mph&gt;16&lt;/wind_speed_mph&gt;
+	      &lt;temperature_f&gt;40&lt;/temperature_f&gt;
+	      &lt;dewpoint&gt;35&lt;/dewpoint&gt;
+	      &lt;/weather&gt;') 
+	      </pre></div></div><br class="example-break" /></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="idm140160709159344"></a>1.4.3.5.&#160;Address String Options - Reference</h4></div></div></div><div class="table"><a id="idm140160709158704"></a><p class="title"><strong>Table&#160;1.1.&#160;Address String Options</strong></p><div class="table-contents"><table border="1" class="table" summary="Address String Options" width="100%"><colgroup><col /><col /><col /></colgroup><thead><tr><th>option</th><th>value</th><th>semantics</th></tr></thead><tbody><tr><td>
+		    assert
+		  </td><td>
+		    one of: always, never, sender or receiver
+		  </td><td>
+		    Asserts that the properties specified in the node option
+		    match whatever the address resolves to. If they do not,
+		    resolution fails and an exception is raised. 
+		  </td></tr><tr><td>
+		    create
+		  </td><td>
+		    one of: always, never, sender or receiver
+		  </td><td>
+		    Creates the node to which an address refers if it does
+		    not exist. No error is raised if the node does
+		    exist. The details of the node may be specified in the
+		    node option.
+		  </td></tr><tr><td>
+		    delete
+		  </td><td>
+		    one of: always, never, sender or receiver
+		  </td><td>
+		    Delete the node when the sender or receiver is closed.
+		  </td></tr><tr><td>
+		    node
+		  </td><td>
+		    A nested map containing the entries shown in <a class="xref" href="section-addresses.html#table-node-properties" title="Table&#160;1.2.&#160;Node Properties">Table&#160;1.2, &#8220;Node Properties&#8221;</a>.
+		  </td><td>
+		    Specifies properties of the node to which the address
+		    refers. These are used in conjunction with the assert or
+		    create options.
+		  </td></tr><tr><td>
+		    link
+		  </td><td>
+		    A nested map containing the entries shown in <a class="xref" href="section-addresses.html#table-link-properties" title="Table&#160;1.3.&#160;Link Properties">Table&#160;1.3, &#8220;Link Properties&#8221;</a>.
+		  </td><td>
+		    Used to control the establishment of a conceptual link
+		    from the client application to or from the target/source
+		    address.
+		  </td></tr><tr><td>
+		    mode
+		  </td><td>
+		    one of: browse, consume
+		  </td><td>
+		    This option is only of relevance for source addresses
+		    that resolve to a queue. If browse is specified the
+		    messages delivered to the receiver are left on the queue
+		    rather than being removed. If consume is specified the
+		    normal behaviour applies; messages are removed from the
+		    queue once the client acknowledges their receipt.
+		  </td></tr></tbody></table></div></div><br class="table-break" /><div class="table"><a id="table-node-properties"></a><p class="title"><strong>Table&#160;1.2.&#160;Node Properties</strong></p><div class="table-contents"><table border="1" class="table" summary="Node Properties" width="100%"><colgroup><col /><col /><col /></colgroup><thead><tr><th>property</th><th>value</th><th>semantics</th></tr></thead><tbody><tr><td>
+		    type
+		  </td><td>
+		    topic, queue
+		  </td><td>
+		    Indicates the type of the node.
+		  </td></tr><tr><td>
+		    durable
+		  </td><td>
+		    True, False
+		  </td><td>
+		    Indicates whether the node survives a loss of
+		    volatile storage e.g. if the broker is restarted.
+		  </td></tr><tr><td>
+		    x-declare
+		  </td><td>
+		    A nested map whose values correspond to the valid fields
+		    on an AMQP 0-10 queue-declare or exchange-declare
+		    command.
+		  </td><td>
+		    These values are used to fine tune the creation or
+		    assertion process. Note however that they are protocol
+		    specific.
+		  </td></tr><tr><td>
+		    x-bindings
+		  </td><td>
+		    A nested list in which each binding is represented by
+		    a map. The entries of the map for a binding contain
+		    the fields that describe an AMQP 0-10 binding. Here is
+		    the format for x-bindings:
+
+		    <pre class="programlisting">
+		    [
+		    {
+		    exchange: &lt;exchange&gt;,
+		    queue: &lt;queue&gt;,
+		    key: &lt;key&gt;,
+		    arguments: {
+		    &lt;key_1&gt;: &lt;value_1&gt;,
+		    ...,
+		    &lt;key_n&gt;: &lt;value_n&gt; }
+		    },
+		    ...
+		    ]
+		    </pre>
+		  </td><td>
+		    In conjunction with the create option, each of these
+		    bindings is established as the address is resolved. In
+		    conjunction with the assert option, the existence of
+		    each of these bindings is verified during
+		    resolution. Again, these are protocol specific.
+		  </td></tr></tbody></table></div></div><br class="table-break" /><div class="table"><a id="table-link-properties"></a><p class="title"><strong>Table&#160;1.3.&#160;Link Properties</strong></p><div class="table-contents"><table border="1" class="table" summary="Link Properties" width="100%"><colgroup><col /><col /><col /></colgroup><thead><tr><th>option</th><th>value</th><th>semantics</th></tr></thead><tbody><tr><td>
+		    reliability
+		  </td><td>
+		    one of: unreliable, at-least-once, at-most-once, exactly-once
+		  </td><td>
+		    Reliability indicates the level of reliability that
+		    the sender or receiver.  <code class="literal">unreliable</code>
+		    and <code class="literal">at-most-once</code> are currently
+		    treated as synonyms, and allow messages to be lost if
+		    a broker crashes or the connection to a broker is
+		    lost. <code class="literal">at-least-once</code> guarantees that
+		    a message is not lost, but duplicates may be
+		    received. <code class="literal">exactly-once</code> guarantees
+		    that a message is not lost, and is delivered precisely
+		    once. Currently only <code class="literal">unreliable</code>
+		    and <code class="literal">at-least-once</code> are supported.
+		    <a class="footnote" href="#ftn.idm140160709114736" id="idm140160709114736"><sup class="footnote">[a]</sup></a>
+		  </td></tr><tr><td>
+		    durable
+		  </td><td>
+		    True, False
+		  </td><td>
+		    Indicates whether the link survives a loss of
+		    volatile storage e.g. if the broker is restarted.
+		  </td></tr><tr><td>
+		    x-declare
+		  </td><td>
+		    A nested map whose values correspond to the valid fields
+		    of an AMQP 0-10 queue-declare command.
+		  </td><td>
+		    These values can be used to customise the subscription
+		    queue in the case of receiving from an exchange. Note
+		    however that they are protocol specific.
+		  </td></tr><tr><td>
+		    x-subscribe
+		  </td><td>
+		    A nested map whose values correspond to the valid fields
+		    of an AMQP 0-10 message-subscribe command.
+		  </td><td>
+		    These values can be used to customise the subscription.
+		  </td></tr><tr><td>
+		    x-bindings
+		  </td><td>
+		    A nested list each of whose entries is a map that may
+		    contain fields (queue, exchange, key and arguments)
+		    describing an AMQP 0-10 binding.
+		  </td><td>
+		    These bindings are established during resolution
+		    independent of the create option. They are considered
+		    logically part of the linking process rather than of
+		    node creation.
+		  </td></tr></tbody><tbody class="footnotes"><tr><td colspan="3"><div class="footnote" id="ftn.idm140160709114736"><p><a class="para" href="#idm140160709114736"><sup class="para">[a] </sup></a>If at-most-once is requested,
+		    unreliable will be used and for durable messages on
+		    durable queues there is the possibility that messages
+		    will be redelivered; if exactly-once is requested,
+		    at-least-once will be used and the application needs to
+		    be able to deal with duplicates.</p></div></td></tr></tbody></table></div></div><br class="table-break" /></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="section-address-string-bnf"></a>1.4.4.&#160;Address String Grammar</h3></div></div></div><p>This section provides a formal grammar for address strings.</p><p><strong>Tokens.&#160;</strong>The following regular expressions define the tokens used
+	to parse address strings:</p><pre class="programlisting">
+	LBRACE: \\{
+	RBRACE: \\}
+	LBRACK: \\[
+	RBRACK: \\]
+	COLON:  :
+	SEMI:   ;
+	SLASH:  /
+	COMMA:  ,
+	NUMBER: [+-]?[0-9]*\\.?[0-9]+
+	ID:     [a-zA-Z_](?:[a-zA-Z0-9_-]*[a-zA-Z0-9_])?
+	STRING: "(?:[^\\\\"]|\\\\.)*"|\'(?:[^\\\\\']|\\\\.)*\'
+	ESC:    \\\\[^ux]|\\\\x[0-9a-fA-F][0-9a-fA-F]|\\\\u[0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F]
+	SYM:    [.#*%@$^!+-]
+	WSPACE: [ \\n\\r\\t]+
+	</pre><p><strong>Grammar.&#160;</strong>The formal grammar for addresses is given below:</p><pre class="programlisting">
+	address := name [ SLASH subject ] [ ";" options ]
+	name := ( part | quoted )+
+	subject := ( part | quoted | SLASH )*
+	quoted := STRING / ESC
+	part := LBRACE / RBRACE / COLON / COMMA / NUMBER / ID / SYM
+	options := map
+	map := "{" ( keyval ( "," keyval )* )? "}"
+	keyval "= ID ":" value
+	value := NUMBER / STRING / ID / map / list
+	list := "[" ( value ( "," value )* )? "]"
+	</pre><p><strong>Address String Options.&#160;</strong>The address string options map supports the following parameters:</p><pre class="programlisting">
+	&lt;name&gt; [ / &lt;subject&gt; ] ; {
+	create: always | sender | receiver | never,
+	delete: always | sender | receiver | never,
+	assert: always | sender | receiver | never,
+	mode: browse | consume,
+	node: {
+	type: queue | topic,
+	durable: True | False,
+	x-declare: { ... &lt;declare-overrides&gt; ... },
+	x-bindings: [&lt;binding_1&gt;, ... &lt;binding_n&gt;]
+	},
+	link: {
+	name: &lt;link-name&gt;,
+	durable: True | False,
+	reliability: unreliable | at-most-once | at-least-once | exactly-once,
+	x-declare: { ... &lt;declare-overrides&gt; ... },
+	x-bindings: [&lt;binding_1&gt;, ... &lt;binding_n&gt;],
+	x-subscribe: { ... &lt;subscribe-overrides&gt; ... }
+	}
+	}
+	</pre><div class="itemizedlist"><p class="title"><strong>Create, Delete, and Assert Policies</strong></p><p>The create, delete, and assert policies specify who should
+	  perfom the associated action:</p><ul class="itemizedlist" type="disc"><li class="listitem"><p><span class="emphasis"><em>always</em></span>: the action is performed by any messaging client</p></li><li class="listitem"><p><span class="emphasis"><em>sender</em></span>: the action is only performed by a sender</p></li><li class="listitem"><p><span class="emphasis"><em>receiver</em></span>: the action is only performed by a receiver</p></li><li class="listitem"><p><span class="emphasis"><em>never</em></span>: the action is never performed (this is the default)</p></li></ul></div><div class="itemizedlist"><p class="title"><strong>Node-Type</strong></p><p>The node-type is one of:</p><ul class="itemizedlist" type="disc"><li class="listitem"><p><span class="emphasis"><em>topic</em></span>: in the AMQP 0-10
+	  mapping, a topic node defaults to the topic exchange, x-declare
+	  may be used to specify other exchange types</p></li><li class="listitem"><p><span class="emphasis"><em>queue</em></span>: this is the default node-type</p></li></ul></div></div><div class="footnotes"><br /><hr align="left" width="100" /><div class="footnote" id="ftn.idm140160709302048"><p><a class="para" href="#idm140160709302048"><sup class="para">[2] </sup></a>In the programs we have just seen, we used
+      <code class="literal">amq.topic</code> as the default address if none is
+      passed in. This is the name of a standard exchange that always
+      exists on an AMQP 0-10 messaging broker.</p></div><div class="footnote" id="ftn.idm140160709298896"><p><a class="para" href="#idm140160709298896"><sup class="para">[3] </sup></a>The terms <span class="emphasis"><em>queue</em></span> and
+      <span class="emphasis"><em>topic</em></span> here were chosen to align with
+      their meaning in JMS. These two addressing 'patterns',
+      queue and topic, are sometimes refered as point-to-point
+      and publish-subscribe. AMQP 0-10 has an exchange type
+      called a <span class="emphasis"><em>topic exchange</em></span>. When the term
+      <span class="emphasis"><em>topic</em></span> occurs alone, it refers to a
+      Messaging API topic, not the topic
+      exchange.</p></div><div class="footnote" id="ftn.idm140160709296352"><p><a class="para" href="#idm140160709296352"><sup class="para">[4] </sup></a>There are exceptions to this rule; for instance,
+      a receiver can use <code class="literal">browse</code> mode, which leaves
+      messages on the queue for other receivers to
+      read.</p></div><div class="footnote" id="ftn.idm140160709294800"><p><a class="para" href="#idm140160709294800"><sup class="para">[5] </sup></a>The AMQP 0-10 implementation is the only one
+      that currently exists.</p></div><div class="footnote" id="ftn.idm140160709294096"><p><a class="para" href="#idm140160709294096"><sup class="para">[6] </sup></a>In AMQP 0-10, messages are sent to
+      exchanges, and read from queues. The Messaging API also
+      allows a sender to send messages to a queue; internally,
+      Qpid implements this by sending the message to the default
+      exchange, with the name of the queue as the routing key. The
+      Messaging API also allows a receiver to receive messages
+      from a topic; internally, Qpid implements this by setting up
+      a private subscription queue for the receiver and binding
+      the subscription queue to the exchange that corresponds to
+      the topic.</p></div><div class="footnote" id="ftn.idm140160709290432"><p><a class="para" href="#idm140160709290432"><sup class="para">[7] </sup></a>Currently, the C++, Python, and .NET C#
+      implementations of <span class="command"><strong>drain</strong></span> and
+      <span class="command"><strong>spout</strong></span> have slightly different
+      options. This tutorial uses the C++ implementation. The
+      options will be reconciled in the near
+      future.</p></div></div></div><div class="navfooter"><hr /><table summary="Navigation footer" width="100%"><tr><td align="left" width="40%"><a accesskey="p" href="ch01s03.html">Prev</a>&#160;</td><td align="center" width="20%"><a accesskey="u" href="using-the-qpid-messaging-api.html">Up</a></td><td align="right" width="40%">&#160;<a accesskey="n" href="replay.html">Next</a></td></tr><tr><td align="left" valign="top" width="40%">1.3.&#160;A Simple Messaging Program in .NET C#&#160;</td><td align="center" width="20%"><a accesskey="h" href="index.html">Home</a></td><td align="right" valign="top" width="40%">&#160;1.5.&#160;Sender Capacity and Replay</td></tr></table></div></div>
+
+          <hr/>
+
+          <ul id="-apache-navigation">
+            <li><a href="http://www.apache.org/">Apache</a></li>
+            <li><a href="http://www.apache.org/licenses/">License</a></li>
+            <li><a href="http://www.apache.org/foundation/sponsorship.html">Sponsorship</a></li>
+            <li><a href="http://www.apache.org/foundation/thanks.html">Thanks!</a></li>
+            <li><a href="/security.html">Security</a></li>
+            <li><a href="http://www.apache.org/"><img id="-apache-feather" width="48" height="14" src="" alt="Apache"/></a></li>
+          </ul>
+
+          <p id="-legal">
+            Apache Qpid, Messaging built on AMQP; Copyright &#169; 2015
+            The Apache Software Foundation; Licensed under
+            the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache
+            License, Version 2.0</a>; Apache Qpid, Qpid, Qpid Proton,
+            Proton, Apache, the Apache feather logo, and the Apache Qpid
+            project logo are trademarks of The Apache Software
+            Foundation; All other marks mentioned may be trademarks or
+            registered trademarks of their respective owners
+          </p>
+        </div>
+      </div>
+    </div>
+  </body>
+</html>


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org