Modified: 
qpid/site/docs/releases/qpid-proton-master/proton/python/examples/tx_recv_interactive.py.html
URL: 
http://svn.apache.org/viewvc/qpid/site/docs/releases/qpid-proton-master/proton/python/examples/tx_recv_interactive.py.html?rev=1705923&r1=1705922&r2=1705923&view=diff
==============================================================================
--- 
qpid/site/docs/releases/qpid-proton-master/proton/python/examples/tx_recv_interactive.py.html
 (original)
+++ 
qpid/site/docs/releases/qpid-proton-master/proton/python/examples/tx_recv_interactive.py.html
 Tue Sep 29 20:27:56 2015
@@ -31,65 +31,65 @@
     <!--[if lte IE 8]>
       <link rel="stylesheet" href="/ie.css" type="text/css"/>
       <script type="text/javascript" src="/html5shiv.js"></script>
-      <![endif]-->
-    
+    <![endif]-->
   </head>
   <body>
     <div id="-content">
       <div id="-top" class="panel">
-        <a id="-menu-link"><img width="16" height="16" 
src="data:image/png;base64," alt="Menu"/></a>
+        <a id="-menu-link"><img width="16" height="16" src="" alt="Menu"/></a>
 
-        <a id="-search-link"><img width="22" height="16" 
src="data:image/png;base64," alt="Search"/></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="/download.html">Download</a></li>
           <li><a href="/documentation.html">Documentation</a></li>
-          <li><a href="/components/index.html">Components</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;">
-        <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/java-broker/index.html">Java 
broker</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 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/java-broker/index.html">Java 
broker</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;">
@@ -97,13 +97,15 @@
           <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>
-          <p><a href="/search.html">More ways to search</a></p>
+          <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-proton-master/index.html">Qpid Proton 
Development</a></li><li><a 
href="/releases/qpid-proton-master/proton/python/examples/index.html">Python 
AMQP Examples</a></li><li>tx_recv_interactive.py</li></ul>
-        
+        <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-proton-master/index.html">Qpid Proton 
Master</a></li><li><a 
href="/releases/qpid-proton-master/proton/python/examples/index.html">Python 
AMQP Examples</a></li><li>tx_recv_interactive.py</li></ul>
+
+        <div id="-middle-content">
+          
 <h1>tx_recv_interactive.py</h1>
 <div class="highlight"><pre><span class="kn">from</span> <span 
class="nn">__future__</span> <span class="kn">import</span> <span 
class="n">print_function</span>
 <span class="kn">import</span> <span class="nn">sys</span>
@@ -172,27 +174,28 @@
 <p><a href="tx_recv_interactive.py">Download this file</a></p>
 
 
-        <hr/>
+          <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="http://www.apache.org/security/";>Security</a></li>
-          <li><a href="http://www.apache.org/";><img id="-apache-feather" 
width="48" height="14" src="data:image/png;base64," alt="Apache"/></a></li>
-        </ul>
+          <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="http://www.apache.org/security/";>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; 2013
-          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>
+          <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>

Modified: 
qpid/site/docs/releases/qpid-proton-master/proton/python/examples/tx_send.py.html
URL: 
http://svn.apache.org/viewvc/qpid/site/docs/releases/qpid-proton-master/proton/python/examples/tx_send.py.html?rev=1705923&r1=1705922&r2=1705923&view=diff
==============================================================================
--- 
qpid/site/docs/releases/qpid-proton-master/proton/python/examples/tx_send.py.html
 (original)
+++ 
qpid/site/docs/releases/qpid-proton-master/proton/python/examples/tx_send.py.html
 Tue Sep 29 20:27:56 2015
@@ -31,65 +31,65 @@
     <!--[if lte IE 8]>
       <link rel="stylesheet" href="/ie.css" type="text/css"/>
       <script type="text/javascript" src="/html5shiv.js"></script>
-      <![endif]-->
-    
+    <![endif]-->
   </head>
   <body>
     <div id="-content">
       <div id="-top" class="panel">
-        <a id="-menu-link"><img width="16" height="16" 
src="data:image/png;base64," alt="Menu"/></a>
+        <a id="-menu-link"><img width="16" height="16" src="" alt="Menu"/></a>
 
-        <a id="-search-link"><img width="22" height="16" 
src="data:image/png;base64," alt="Search"/></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="/download.html">Download</a></li>
           <li><a href="/documentation.html">Documentation</a></li>
-          <li><a href="/components/index.html">Components</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;">
-        <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/java-broker/index.html">Java 
broker</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 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/java-broker/index.html">Java 
broker</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;">
@@ -97,13 +97,15 @@
           <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>
-          <p><a href="/search.html">More ways to search</a></p>
+          <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-proton-master/index.html">Qpid Proton 
Development</a></li><li><a 
href="/releases/qpid-proton-master/proton/python/examples/index.html">Python 
AMQP Examples</a></li><li>tx_send.py</li></ul>
-        
+        <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-proton-master/index.html">Qpid Proton 
Master</a></li><li><a 
href="/releases/qpid-proton-master/proton/python/examples/index.html">Python 
AMQP Examples</a></li><li>tx_send.py</li></ul>
+
+        <div id="-middle-content">
+          
 <h1>tx_send.py</h1>
 <div class="highlight"><pre><span class="kn">from</span> <span 
class="nn">__future__</span> <span class="kn">import</span> <span 
class="n">print_function</span><span class="p">,</span> <span 
class="n">unicode_literals</span>
 <span class="kn">import</span> <span class="nn">optparse</span>
@@ -179,27 +181,28 @@
 <p><a href="tx_send.py">Download this file</a></p>
 
 
-        <hr/>
+          <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="http://www.apache.org/security/";>Security</a></li>
-          <li><a href="http://www.apache.org/";><img id="-apache-feather" 
width="48" height="14" src="data:image/png;base64," alt="Apache"/></a></li>
-        </ul>
+          <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="http://www.apache.org/security/";>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; 2013
-          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>
+          <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>

Modified: qpid/site/docs/releases/qpid-proton-master/release-notes.html
URL: 
http://svn.apache.org/viewvc/qpid/site/docs/releases/qpid-proton-master/release-notes.html?rev=1705923&r1=1705922&r2=1705923&view=diff
==============================================================================
--- qpid/site/docs/releases/qpid-proton-master/release-notes.html (original)
+++ qpid/site/docs/releases/qpid-proton-master/release-notes.html Tue Sep 29 
20:27:56 2015
@@ -102,7 +102,7 @@
       </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-proton-master/index.html">Qpid Proton 
Development</a></li><li>Qpid Proton master Release Notes</li></ul>
+        <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-proton-master/index.html">Qpid Proton 
Master</a></li><li>Qpid Proton master Release Notes</li></ul>
 
         <div id="-middle-content">
           <h1 id="qpid-proton-master-release-notes">Qpid Proton master Release 
Notes</h1>

Modified: qpid/site/input/proton/amqp/index.md
URL: 
http://svn.apache.org/viewvc/qpid/site/input/proton/amqp/index.md?rev=1705923&r1=1705922&r2=1705923&view=diff
==============================================================================
--- qpid/site/input/proton/amqp/index.md (original)
+++ qpid/site/input/proton/amqp/index.md Tue Sep 29 20:27:56 2015
@@ -1 +1 @@
-link /home/aconway/svn/qpid-site/input/proton/stub.md
\ No newline at end of file
+link ../stub.md
\ No newline at end of file

Modified: qpid/site/input/proton/concurrent/index.md
URL: 
http://svn.apache.org/viewvc/qpid/site/input/proton/concurrent/index.md?rev=1705923&r1=1705922&r2=1705923&view=diff
==============================================================================
--- qpid/site/input/proton/concurrent/index.md (original)
+++ qpid/site/input/proton/concurrent/index.md Tue Sep 29 20:27:56 2015
@@ -1 +1 @@
-link /home/aconway/svn/qpid-site/input/proton/stub.md
\ No newline at end of file
+link ../stub.md
\ No newline at end of file

Modified: qpid/site/input/releases/index.md
URL: 
http://svn.apache.org/viewvc/qpid/site/input/releases/index.md?rev=1705923&r1=1705922&r2=1705923&view=diff
==============================================================================
--- qpid/site/input/releases/index.md (original)
+++ qpid/site/input/releases/index.md Tue Sep 29 20:27:56 2015
@@ -72,7 +72,9 @@ Still older releases are available in th
 Warning! These are snapshots of work in progress.
 
  - [Qpid C++ trunk](qpid-cpp-trunk/index.html)
+ - [Qpid Dispatch master](qpid-dispatch-master/index.html)
  - [Qpid Java trunk](qpid-java-trunk/index.html)
+ - [Qpid JMS master](qpid-jms-master/index.html)
  - [Qpid Proton master](qpid-proton-master/index.html)
 
 ## More information

Modified: qpid/site/input/releases/qpid-dispatch-master/index.md
URL: 
http://svn.apache.org/viewvc/qpid/site/input/releases/qpid-dispatch-master/index.md?rev=1705923&r1=1705922&r2=1705923&view=diff
==============================================================================
--- qpid/site/input/releases/qpid-dispatch-master/index.md (original)
+++ qpid/site/input/releases/qpid-dispatch-master/index.md Tue Sep 29 20:27:56 
2015
@@ -17,7 +17,7 @@
 ;; under the License.
 ;;
 
-# Qpid Dispatch Development
+# Qpid Dispatch Master
 
 <div class="feature" markdown="1">
 
@@ -27,7 +27,7 @@ Code and documentation found here may be
 incomplete.  For a smoother experience, see the [current stable
 release]({{current_dispatch_release_url}}/index.html).
 
-This content was generated at 12:16  on Tuesday, 29 September 2015.
+This content was generated at 16:25  on Tuesday, 29 September 2015.
 
 </div>
 
@@ -36,7 +36,7 @@ This content was generated at 12:16  on
 
 <div class="two-column" markdown="1">
 
- - [Installing Qpid 
Dispatch](https://git-wip-us.apache.org/repos/asf?p=qpid-dispatch.git;a=blob_plain;f=README;hb={release})
+ - [Installing Qpid 
Dispatch](https://git-wip-us.apache.org/repos/asf?p=qpid-dispatch.git;a=blob_plain;f=README;hb=master)
  - [Dispatch router book](book/book.html)
  - [qdrouterd](man/qdrouterd.html) - Router daemon
  - [qdrouterd.conf](man/qdrouterd.conf.html) - Daemon configuration
@@ -48,4 +48,4 @@ This content was generated at 12:16  on
 
 ## More information
 
-- [Source 
repository](https://git-wip-us.apache.org/repos/asf/qpid-dispatch.git)
\ No newline at end of file
+ - [Source 
repository](https://git-wip-us.apache.org/repos/asf/qpid-dispatch.git)
\ No newline at end of file

Added: qpid/site/input/releases/qpid-jms-master/building.md
URL: 
http://svn.apache.org/viewvc/qpid/site/input/releases/qpid-jms-master/building.md?rev=1705923&view=auto
==============================================================================
--- qpid/site/input/releases/qpid-jms-master/building.md (added)
+++ qpid/site/input/releases/qpid-jms-master/building.md Tue Sep 29 20:27:56 
2015
@@ -0,0 +1,43 @@
+# QpidJMS
+
+The QpidJMS project provides a JMS based client that uses the AMQP v1.0 
protocol.
+
+Below are some quick pointers you might find useful.
+
+## Building the code
+
+The project requires Maven 3. Some example commands follow.
+
+Clean previous builds output and install all modules to local repository 
without
+running the tests:
+
+    mvn clean install -DskipTests
+
+Install all modules to the local repository after running all the tests:
+
+    mvn clean install
+
+Perform a subset tests on the packaged release artifacts without
+installing:
+
+    mvn clean verify -Dtest=TestNamePattern*
+
+Execute the tests and produce code coverage report:
+
+    mvn clean test jacoco:report
+
+## Examples
+
+First build and install all the modules as detailed above (if running against
+a source checkout/release, rather than against released binaries) and then
+consult the README in the qpid-jms-examples module itself.
+
+## Documentation
+
+There is some basic documentation in the qpid-jms-docs module.
+
+## Distribution assemblies
+
+After building the modules, src and binary distribution assemblies can be 
found at:
+
+    apache-qpid-jms/target

Added: qpid/site/input/releases/qpid-jms-master/docs/index.md
URL: 
http://svn.apache.org/viewvc/qpid/site/input/releases/qpid-jms-master/docs/index.md?rev=1705923&view=auto
==============================================================================
--- qpid/site/input/releases/qpid-jms-master/docs/index.md (added)
+++ qpid/site/input/releases/qpid-jms-master/docs/index.md Tue Sep 29 20:27:56 
2015
@@ -0,0 +1,221 @@
+# Client configuration
+
+This file details various configuration options for the client, such as how to 
configure and create a JNDI InitialContext, the syntax for its related 
configuration, and various URI options that can be set when defining a 
ConnectionFactory.
+
+## Configuring a JNDI InitialContext
+
+Applications use a JNDI InitialContext, itself obtained from an 
InitialContextFactory, to look up JMS objects such as ConnectionFactory. The 
Qpid JMS client provides an implementation of the InitialContextFactory in 
class *org.apache.qpid.jms.jndi.JmsInitialContextFactory*. This may be 
configured and used in three main ways:
+
+1.  Via jndi.properties file on the Java Classpath.
+
+    By including a file named jndi.properties on the Classpath and setting the 
*java.naming.factory.initial* property
+    to value *org.apache.qpid.jms.jndi.JmsInitialContextFactory*, the Qpid 
InitialContextFactory implementation will
+    be discovered when instantiating InitialContext object.
+
+        javax.naming.Context ctx = new javax.naming.InitialContext();
+
+    The particular ConnectionFactory, Queue and Topic objects you wish the 
context to contain are configured using
+    properties (the syntax for which is detailed below) either directly within 
the jndi.properties file,
+    or in a separate file which is referenced in jndi.properties using the 
*java.naming.provider.url* property.
+
+2.  Via system properties.
+
+    By setting the *java.naming.factory.initial* system property to value 
*org.apache.qpid.jms.jndi.JmsInitialContextFactory*,
+    the Qpid InitialContextFactory implementation will be discovered when 
instantiating InitialContext object.
+
+         javax.naming.Context ctx = new javax.naming.InitialContext();
+
+    The particular ConnectionFactory, Queue and Topic objects you wish the 
context to contain are configured as properties in
+    a file, which is passed using the *java.naming.provider.url* system 
property. The syntax for these properties is detailed
+    below.
+
+3.  Programmatically using an environment Hashtable.
+
+    The InitialContext may also be configured directly by passing an 
environment during creation:
+
+        Hashtable<Object, Object> env = new Hashtable<Object, Object>();
+        env.put(Context.INITIAL_CONTEXT_FACTORY, 
"org.apache.qpid.jms.jndi.JmsInitialContextFactory");
+        javax.naming.Context context = new javax.naming.InitialContext(env);
+
+    The particular ConnectionFactory, Queue and Topic objects you wish the 
context to contain are configured as properties
+    (the syntax for which is detailed below), either directly within the 
environment Hashtable, or in a
+    separate file which is referenced using the *java.naming.provider.url* 
property within the environment Hashtable.
+
+The property syntax used in the properties file or environment Hashtable is as 
follows:
+
++   To define a ConnectionFactory, use format: *connectionfactory.lookupName = 
URI*
++   To define a Queue, use format: *queue.lookupName = queueName*
++   To define a Topic use format: *topic.lookupName = topicName*
+
+For more details of the Connection URI, see the next section.
+
+As an example, consider the following properties used to define a 
ConnectionFactory, Queue, and Topic:
+
+    connectionfactory.myFactoryLookup = amqp://localhost:5672
+    queue.myQueueLookup = queueA
+    topic.myTopicLookup = topicA
+
+These objects could then be looked up from a Context as follows:
+
+    ConnectionFactory factory = (ConnectionFactory) 
context.lookup("myFactoryLookup");
+    Queue queue = (Queue) context.lookup("myQueueLookup");
+    Topic topic = (Topic) context.lookup("myTopicLookup");
+
+## Connection URI
+
+The basic format of the clients Connection URI is as follows:
+
+      amqp://hostname:port[?option=value[&option2=value...]]
+
+The client can be configured with a number of different settings using the URI 
while defining the ConnectionFactory, these are detailed in the following 
sections.
+
+### JMS Configuration options
+
+The options apply to the behaviour of the JMS objects such as Connection, 
Session, MessageConsumer and MessageProducer.
+
++ **jms.username** User name value used to authenticate the connection
++ **jms.password** The password value used to authenticate the connection
++ **jms.clientID** The ClientID value that is applied to the connection.
++ **jms.forceAsyncSend** Configures whether all Messages sent from a 
MessageProducer are sent asynchronously or only those Message that qualify such 
as Messages inside a transaction or non-persistent messages.
++ **jms.alwaysSyncSend** Override all asynchronous send conditions and always 
sends every Message from a MessageProducer synchronously.
++ **jms.sendAcksAsync** Causes all Message acknowledgments to be sent 
asynchronously.
++ **jms.localMessageExpiry** Controls whether MessageConsumer instances will 
locally filter expired Messages or deliver them.  By default this value is set 
to true and expired messages will be filtered.
++ **jms.localMessagePriority** If enabled prefetched messages are reordered 
locally based on their given Message priority value. Default is false.
++ **jms.validatePropertyNames** If message property names should be validated 
as valid Java identifiers. Default is true.
++ **jms.queuePrefix** Optional prefix value added to the name of any Queue 
created from a JMS Session.
++ **jms.topicPrefix** Optional prefix value added to the name of any Topic 
created from a JMS Session.
++ **jms.closeTimeout** Timeout value that controls how long the client waits 
on Connection close before returning. (By default the client waits 15 seconds 
for a normal close completion event).
++ **jms.connectTimeout** Timeout value that controls how long the client waits 
on Connection establishment before returning with an error. (By default the 
client waits 15 seconds for a connection to be established before failing).
++ **jms.clientIDPrefix** Optional prefix value that is used for generated 
Client ID values when a new Connection is created for the JMS 
ConnectionFactory.  The default prefix is 'ID:'.
++ **jms.connectionIDPrefix** Optional prefix value that is used for generated 
Connection ID values when a new Connection is created for the JMS 
ConnectionFactory.  This connection ID is used when logging some information 
from the JMS Connection object so a configurable prefix can make breadcrumbing 
the logs easier.  The default prefix is 'ID:'.
+
+These values control how many messages the remote peer can send to the client 
and be held in a prefetch buffer for each consumer instance.
+
++ **jms.prefetchPolicy.queuePrefetch** defaults to 1000
++ **jms.prefetchPolicy.topicPrefetch** defaults to 1000
++ **jms.prefetchPolicy.queueBrowserPrefetch** defaults to 1000
++ **jms.prefetchPolicy.durableTopicPrefetch** defaults to 1000
++ **jms.prefetchPolicy.all** used to set all prefetch values at once.
+
+The RedeliveryPolicy controls how redelivered messages are handled on the 
client.
+
++ **jms.redeliveryPolicy.maxRedeliveries** controls when an incoming message 
is rejected based on the number of times it has been redelivered, the default 
value is (-1) disabled.  A value of zero would indicate no message redeliveries 
are accepted, a value of five would allow a message to be redelivered five 
times, etc.
+
+### TCP Transport Configuration options
+
+When connected to a remote using plain TCP these options configure the 
behaviour of the underlying socket.  These options are appended to the 
connection URI along with the other configuration options, for example:
+
+      amqp://localhost:5672?jms.clientID=foo&transport.connectTimeout=30000
+
+The complete set of TCP Transport options is listed below:
+
++ **transport.sendBufferSize** default is 64k
++ **transport.receiveBufferSize** default is 64k
++ **transport.trafficClass** default is 0
++ **transport.connectTimeout** default is 60 seconds
++ **transport.soTimeout** default is -1
++ **transport.soLinger** default is -1
++ **transport.tcpKeepAlive** default is false
++ **transport.tcpNoDelay** default is true
+
+### SSL Transport Configuration options
+
+The SSL Transport extends the TCP Transport and is enabled using the *amqps* 
URI scheme.  Because the SSL Transport extends the functionality of the TCP 
based Transport all the TCP Transport options are valid on an SSL Transport URI.
+
+A simple SSL based client URI is shown below:
+
+    amqps://localhost:5673
+
+The complete set of SSL Transport options is listed below:
+
++ **transport.keyStoreLocation**  default is to read from the system property 
"javax.net.ssl.keyStore"
++ **transport.keyStorePassword**  default is to read from the system property 
"javax.net.ssl.keyStorePassword"
++ **transport.trustStoreLocation**  default is to read from the system 
property "javax.net.ssl.trustStore"
++ **transport.trustStorePassword**  default is to read from the system 
property "javax.net.ssl.keyStorePassword"
++ **transport.storeType** The type of trust store being used. Default is "JKS".
++ **transport.contextProtocol** The protocol argument used when getting an 
SSLContext. Default is "TLS".
++ **transport.enabledCipherSuites** The cipher suites to enable, comma 
separated. No default, meaning the context default ciphers are used. Any 
disabled ciphers are removed from this.
++ **transport.disabledCipherSuites** The cipher suites to disable, comma 
separated. Ciphers listed here are removed from the enabled ciphers. No default.
++ **transport.enabledProtocols** The protocols to enable, comma separated. No 
default, meaning the context default protocols are used. Any disabled protocols 
are removed from this.
++ **transport.disabledProtocols** The protocols to disable, comma separated. 
Protocols listed here are removed from the enabled protocols. Default is 
"SSLv2Hello,SSLv3".
++ **transport.trustAll** Whether to trust the provided server certificate 
implicitly, regardless of any configured trust store. Defaults to false.
++ **transport.verifyHost** Whether to verify that the hostname being connected 
to matches with the provided server certificate. Defaults to true.
++ **transport.keyAlias** The alias to use when selecting a keypair from the 
keystore if required to send a client certificate to the server. No default.
+
+### AMQP Configuration options
+
+These options apply to the behaviour of certain AMQP functionality.
+
++ **amqp.idleTimeout** The idle timeout in milliseconds after which the 
connection will be failed if the peer sends no AMQP frames. Default is 60000.
++ **amqp.vhost** The vhost to connect to. Used to populate the Sasl and Open 
hostname fields. Default is the main hostname from the Connection URI.
++ **amqp.saslLayer** Controls whether connections should use a SASL layer or 
not. Default is true.
++ **amqp.saslMechanisms** Which SASL mechanism(s) the client should allow 
selection of, if offered by the server and usable with the configured 
credentials. Comma separated if specifying more than 1 mechanism. Default is to 
allow selection from all the clients supported mechanisms, which are currently 
EXTERNAL, CRAM-MD5, PLAIN, and ANONYMOUS.
++ **amqp.maxFrameSize** The max-frame-size value in bytes that is advertised 
to the peer. Default is 1048576.
+
+### Failover Configuration options
+
+With failover enabled the client can reconnect to a different broker 
automatically when the connection to the current connection is lost for some 
reason.  The failover URI is always initiated with the *failover* prefix and a 
list of URIs for the brokers is contained inside a set of parentheses. The 
"jms." options are applied to the overall failover URI, outside the 
parentheses, and affect the JMS Connection object for its lifetime.
+
+The URI for failover looks something like the following:
+
+    
failover:(amqp://host1:5672,amqp://host2:5672)?jms.clientID=foo&failover.maxReconnectAttempts=20
+
+The individual broker details within the parentheses can use the "transport." 
or "amqp." options defined earlier, with these being applied as each host is 
connected to:
+
+    
failover:(amqp://host1:5672?amqp.option=value,amqp://host2:5672?transport.option=value)?jms.clientID=foo
+
+The complete set of configuration options for failover is listed below:
+
++ **failover.initialReconnectDelay** The amount of time the client will wait 
before the first attempt to reconnect to a remote peer.  The default value is 
zero, meaning the first attempt happens immediately.
++ **failover.reconnectDelay** Controls the delay between successive 
reconnection attempts, defaults to 10 milliseconds.  If the backoff option is 
not enabled this value remains constant.
++ **failover.maxReconnectDelay** The maximum time that the client will wait 
before attempting a reconnect.  This value is only used when the backoff 
feature is enabled to ensure that the delay doesn't not grow too large.  
Defaults to 30 seconds as the max time between connect attempts.
++ **failover.useReconnectBackOff** Controls whether the time between 
reconnection attempts should grow based on a configured multiplier.  This 
option defaults to true.
++ **failover.reconnectBackOffMultiplier** The multiplier used to grow the 
reconnection delay value, defaults to 2.0d.
++ **failover.maxReconnectAttempts** The number of reconnection attempts 
allowed before reporting the connection as failed to the client.  The default 
is no limit or (-1).
++ **failover.startupMaxReconnectAttempts** For a client that has never 
connected to a remote peer before this option control how many attempts are 
made to connect before reporting the connection as failed.  The default is to 
use the value of maxReconnectAttempts.
++ **failover.warnAfterReconnectAttempts** Controls how often the client will 
log a message indicating that failover reconnection is being attempted.  The 
default is to log every 10 connection attempts.
+
+The failover URI also supports defining 'nested' options as a means of 
specifying AMQP and transport option values applicable to all the individual 
nested broker URI's, which can be useful to avoid repetition. This is 
accomplished using the same "transport." and "amqp." URI options outlined 
earlier for a non-failover broker URI but prefixed with *failover.nested.*. For 
example, to apply the same value for the *amqp.vhost* option to every broker 
connected to you might have a URI like:
+
+    
failover:(amqp://host1:5672,amqp://host2:5672)?jms.clientID=foo&failover.nested.amqp.vhost=myhost
+
+
+
+### Discovery Configuration options
+
+The client has an optional Discovery module, which provides a customised 
failover layer where the broker URIs to connect to are not given in the initial 
URI, but discovered as the client operates via associated discovery agents. 
There are currently two discovery agent implementations, a file watcher that 
loads URIs from a file, and a multicast listener that works with ActiveMQ 5 
brokers which have been configured to broadcast their broker addresses for 
listening clients.
+
+The general set of failover related options when using discovery are the same 
as those detailed earlier, with the main prefix updated from *failover.* to 
*discovery.*, and with the 'nested' options prefix used to supply URI options 
common to all the discovered broker URIs bring updated from *failover.nested.* 
to *discovery.discovered*. For example, without the agent URI details, a 
general discovery URI might look like:
+
+    
discovery:(<agent-uri>)?discovery.maxReconnectAttempts=20&discovery.discovered.jms.clientID=foo
+
+To use the file watcher discovery agent, utilise an agent URI of the form:
+
+    discovery:(file:///path/to/monitored-file?updateInterval=60000)
+
+The URI options for the file watcher discovery agent are listed below:
+
++ **updateInterval** Controls the frequency in milliseconds which the file is 
inspected for change. The default value is 30000.
+
+
+To use the multicast discovery agent with an ActiveMQ 5 broker, utilise an 
agent URI of the form:
+
+    discovery:(multicast://default?group=default)
+
+Note that the use of *default* as the host in the multicast agent URI above is 
a special value (that is substituted by the agent with the default 
"239.255.2.3:6155"). You may change this to specify the actual IP and port in 
use with your multicast configuration.
+
+The URI options for the multicast discovery agent are listed below:
+
++ **group** Controls which multicast group messages are listened for on. The 
default value is "default".
+
+
+## Logging
+
+The client makes use of the SLF4J API, allowing users to select a particular 
logging implementation based on their needs by supplying a SLF4J 'binding', 
such as *slf4j-log4j* in order to use Log4J. More details on SLF4J are 
available from http://www.slf4j.org/.
+
+The client uses Logger names residing within the *org.apache.qpid.jms* 
hierarchy, which you can use to configure a logging implementation based on 
your needs.
+
+When debugging some issues, it may sometimes be useful to enable additional 
protocol trace logging from the Qpid Proton AMQP 1.0 library. There are two 
options to achieve this:
+
++ Set the environment variable (not Java system property) *PN_TRACE_FRM* to 
*true*, which will cause Proton to emit frame logging to stdout.
++ Add the option *amqp.traceFrames=true* to your connection URI to have the 
client add a protocol tracer to Proton, and configure the 
*org.apache.qpid.jms.provider.amqp.FRAMES* Logger to *TRACE* level to include 
the output in your logs.

Added: qpid/site/input/releases/qpid-jms-master/index.md
URL: 
http://svn.apache.org/viewvc/qpid/site/input/releases/qpid-jms-master/index.md?rev=1705923&view=auto
==============================================================================
--- qpid/site/input/releases/qpid-jms-master/index.md (added)
+++ qpid/site/input/releases/qpid-jms-master/index.md Tue Sep 29 20:27:56 2015
@@ -0,0 +1,49 @@
+;;
+;; 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.
+;;
+
+# Qpid JMS Master
+
+<div class="feature" markdown="1">
+
+## Warning! This is a snapshot of work in progress
+
+Code and documentation found here may be unstable, incorrect, or
+incomplete.  For a smoother experience, see the
+[current stable release]({{current_jms_release_url}}/index.html).
+
+This content was generated at 13:50  on Tuesday, 29 September 2015.
+
+</div>
+
+## Documentation
+
+
+<div class="two-column" markdown="1">
+
+ - [API 
reference](http://docs.oracle.com/javaee/1.4/api/javax/jms/package-summary.html)
+ - [Examples](https://github.com/apache/qpid-jms/tree/master/qpid-jms-examples)
+ - [Configuration](docs/index.html)
+ - [Building Qpid JMS](building.html)
+
+</div>
+
+
+## More information
+
+ - [Source repository](https://git-wip-us.apache.org/repos/asf/qpid-jms.git)
\ No newline at end of file

Added: qpid/site/input/releases/qpid-jms-master/release-notes.md
URL: 
http://svn.apache.org/viewvc/qpid/site/input/releases/qpid-jms-master/release-notes.md?rev=1705923&view=auto
==============================================================================
--- qpid/site/input/releases/qpid-jms-master/release-notes.md (added)
+++ qpid/site/input/releases/qpid-jms-master/release-notes.md Tue Sep 29 
20:27:56 2015
@@ -0,0 +1,29 @@
+;;
+;; 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.
+;;
+
+# Qpid JMS master Release Notes
+
+Qpid JMS is a complete [Java Message Service][jms] 1.1 client built
+using the [Qpid Proton]({{site_url}}/proton/index.html) protocol
+engine.
+
+For more information about this release, including download links and
+documentation, see the [release overview](index.html).
+
+[jms]: http://en.wikipedia.org/wiki/Java_Message_Service
\ No newline at end of file

Modified: qpid/site/input/releases/qpid-proton-master/index.md
URL: 
http://svn.apache.org/viewvc/qpid/site/input/releases/qpid-proton-master/index.md?rev=1705923&r1=1705922&r2=1705923&view=diff
==============================================================================
--- qpid/site/input/releases/qpid-proton-master/index.md (original)
+++ qpid/site/input/releases/qpid-proton-master/index.md Tue Sep 29 20:27:56 
2015
@@ -17,32 +17,37 @@
 ;; under the License.
 ;;
 
-# Qpid Proton Development
+# Qpid Proton Master
 
 <div class="feature" markdown="1">
 
 ## Warning! This is a snapshot of work in progress
 
 Code and documentation found here may be unstable, incorrect, or
-incomplete.  For a smoother experience, see the
-[current stable release]({{current_proton_release_url}}/index.html).
+incomplete.  For a smoother experience, see the [current stable
+release]({{current_proton_release_url}}/index.html).
 
-This content was generated at 15:55  on Friday, 04 September 2015.
+This content was generated at 16:07  on Tuesday, 29 September 2015.
 
 </div>
 
 ## Documentation
 
+
 <div class="two-column" markdown="1">
 
  - [C API reference](proton/c/api/files.html)
  - [C++ API reference](proton/cpp/api/index.html)
  - [Java API reference](proton/java/api/index.html)
  - [Python API reference](proton/python/api/index.html)
- - [Installing Qpid 
Proton](https://git-wip-us.apache.org/repos/asf?p=qpid-proton.git;a=blob_plain;f=README;hb=HEAD)
+ - [Python tutorial](proton/python/book/tutorial.html)
+ - [Python examples](proton/python/examples/index.html)
+ - [Go 
binding](https://github.com/apache/qpid-proton/tree/master/proton-c/bindings/go/README.md)
+ - [Installing Qpid 
Proton](https://git-wip-us.apache.org/repos/asf?p=qpid-proton.git;a=blob;f=INSTALL.md;hb=master)
 
 </div>
 
+
 ## More information
 
  - [Source 
repository](https://git-wip-us.apache.org/repos/asf/qpid-proton.git?a=tree)
\ No newline at end of file

Added: 
qpid/site/input/releases/qpid-proton-master/proton/java/api/org/apache/qpid/proton/engine/ExtendableAccessor.html
URL: 
http://svn.apache.org/viewvc/qpid/site/input/releases/qpid-proton-master/proton/java/api/org/apache/qpid/proton/engine/ExtendableAccessor.html?rev=1705923&view=auto
==============================================================================
--- 
qpid/site/input/releases/qpid-proton-master/proton/java/api/org/apache/qpid/proton/engine/ExtendableAccessor.html
 (added)
+++ 
qpid/site/input/releases/qpid-proton-master/proton/java/api/org/apache/qpid/proton/engine/ExtendableAccessor.html
 Tue Sep 29 20:27:56 2015
@@ -0,0 +1,308 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
"http://www.w3.org/TR/html4/loose.dtd";>
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc -->
+<title>ExtendableAccessor (Java AMQP Protocol Engine API)</title>
+<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" 
title="Style">
+<script type="text/javascript" src="../../../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="ExtendableAccessor (Java AMQP Protocol 
Engine API)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+var methods = {"i0":10,"i1":10};
+var tabs = {65535:["t0","All Methods"],2:["t2","Instance 
Methods"],8:["t4","Concrete Methods"]};
+var altColor = "altColor";
+var rowColor = "rowColor";
+var tableTab = "tableTab";
+var activeTableTab = "activeTableTab";
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation 
links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../../org/apache/qpid/proton/engine/Extendable.html" 
title="interface in org.apache.qpid.proton.engine"><span 
class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/qpid/proton/engine/Handler.html" 
title="interface in org.apache.qpid.proton.engine"><span 
class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a 
href="../../../../../index.html?org/apache/qpid/proton/engine/ExtendableAccessor.html"
 target="_top">Frames</a></li>
+<li><a href="ExtendableAccessor.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="subTitle">org.apache.qpid.proton.engine</div>
+<h2 title="Class ExtendableAccessor" class="title">Class 
ExtendableAccessor&lt;E extends <a 
href="../../../../../org/apache/qpid/proton/engine/Extendable.html" 
title="interface in org.apache.qpid.proton.engine">Extendable</a>,T&gt;</h2>
+</div>
+<div class="contentContainer">
+<ul class="inheritance">
+<li>java.lang.Object</li>
+<li>
+<ul class="inheritance">
+<li>org.apache.qpid.proton.engine.ExtendableAccessor&lt;E,T&gt;</li>
+</ul>
+</li>
+</ul>
+<div class="description">
+<ul class="blockList">
+<li class="blockList">
+<dl>
+<dt><span class="paramLabel">Type Parameters:</span></dt>
+<dd><code>E</code> - An <a 
href="../../../../../org/apache/qpid/proton/engine/Extendable.html" 
title="interface in org.apache.qpid.proton.engine"><code>Extendable</code></a> 
type where the data is to be stored</dd>
+<dd><code>T</code> - The type of the data to be stored</dd>
+</dl>
+<hr>
+<br>
+<pre>public final class <span class="typeNameLabel">ExtendableAccessor&lt;E 
extends <a href="../../../../../org/apache/qpid/proton/engine/Extendable.html" 
title="interface in org.apache.qpid.proton.engine">Extendable</a>,T&gt;</span>
+extends java.lang.Object</pre>
+<div class="block">A typesafe convenience class for associating additional 
data with <a 
href="../../../../../org/apache/qpid/proton/engine/Extendable.html" 
title="interface in org.apache.qpid.proton.engine"><code>Extendable</code></a> 
classes.
+ <p>
+ An instance of <code>ExtendableAccessor</code> uses itself as the key in the 
<a 
href="../../../../../org/apache/qpid/proton/engine/Extendable.html#attachments--"><code>Extendable.attachments()</code></a>
+ so it's best instantiated as a static final member.
+ <pre><code>
+   class Foo extends BaseHandler {
+     private static ExtendableAccessor<Link, Bar> LINK_BAR = new 
ExtendableAccessor<>(Bar.class);
+     void onLinkRemoteOpen(Event e) {
+       Bar bar = LINK_BAR.get(e.getLink());
+       if (bar == null) {
+         bar = new Bar();
+         LINK_BAR.set(e.getLink(), bar);
+         }
+       }
+     }
+ </code></pre></div>
+</li>
+</ul>
+</div>
+<div class="summary">
+<ul class="blockList">
+<li class="blockList">
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.summary">
+<!--   -->
+</a>
+<h3>Constructor Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" 
summary="Constructor Summary table, listing constructors, and an explanation">
+<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colOne" scope="col">Constructor and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colOne"><code><span class="memberNameLink"><a 
href="../../../../../org/apache/qpid/proton/engine/ExtendableAccessor.html#ExtendableAccessor-java.lang.Class-">ExtendableAccessor</a></span>(java.lang.Class&lt;<a
 href="../../../../../org/apache/qpid/proton/engine/ExtendableAccessor.html" 
title="type parameter in 
ExtendableAccessor">T</a>&gt;&nbsp;klass)</code>&nbsp;</td>
+</tr>
+</table>
+</li>
+</ul>
+<!-- ========== METHOD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.summary">
+<!--   -->
+</a>
+<h3>Method Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" 
summary="Method Summary table, listing methods, and an explanation">
+<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span 
class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a 
href="javascript:show(2);">Instance Methods</a></span><span 
class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a 
href="javascript:show(8);">Concrete Methods</a></span><span 
class="tabEnd">&nbsp;</span></span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Method and Description</th>
+</tr>
+<tr id="i0" class="altColor">
+<td class="colFirst"><code><a 
href="../../../../../org/apache/qpid/proton/engine/ExtendableAccessor.html" 
title="type parameter in ExtendableAccessor">T</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a 
href="../../../../../org/apache/qpid/proton/engine/ExtendableAccessor.html#get-E-">get</a></span>(<a
 href="../../../../../org/apache/qpid/proton/engine/ExtendableAccessor.html" 
title="type parameter in ExtendableAccessor">E</a>&nbsp;e)</code>&nbsp;</td>
+</tr>
+<tr id="i1" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a 
href="../../../../../org/apache/qpid/proton/engine/ExtendableAccessor.html#set-E-T-">set</a></span>(<a
 href="../../../../../org/apache/qpid/proton/engine/ExtendableAccessor.html" 
title="type parameter in ExtendableAccessor">E</a>&nbsp;e,
+   <a 
href="../../../../../org/apache/qpid/proton/engine/ExtendableAccessor.html" 
title="type parameter in ExtendableAccessor">T</a>&nbsp;value)</code>&nbsp;</td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
+<!--   -->
+</a>
+<h3>Methods inherited from class&nbsp;java.lang.Object</h3>
+<code>clone, equals, finalize, getClass, hashCode, notify, notifyAll, 
toString, wait, wait, wait</code></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="details">
+<ul class="blockList">
+<li class="blockList">
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.detail">
+<!--   -->
+</a>
+<h3>Constructor Detail</h3>
+<a name="ExtendableAccessor-java.lang.Class-">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>ExtendableAccessor</h4>
+<pre>public&nbsp;ExtendableAccessor(java.lang.Class&lt;<a 
href="../../../../../org/apache/qpid/proton/engine/ExtendableAccessor.html" 
title="type parameter in ExtendableAccessor">T</a>&gt;&nbsp;klass)</pre>
+</li>
+</ul>
+</li>
+</ul>
+<!-- ============ METHOD DETAIL ========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.detail">
+<!--   -->
+</a>
+<h3>Method Detail</h3>
+<a name="get-org.apache.qpid.proton.engine.Extendable-">
+<!--   -->
+</a><a name="get-E-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>get</h4>
+<pre>public&nbsp;<a 
href="../../../../../org/apache/qpid/proton/engine/ExtendableAccessor.html" 
title="type parameter in ExtendableAccessor">T</a>&nbsp;get(<a 
href="../../../../../org/apache/qpid/proton/engine/ExtendableAccessor.html" 
title="type parameter in ExtendableAccessor">E</a>&nbsp;e)</pre>
+</li>
+</ul>
+<a name="set-org.apache.qpid.proton.engine.Extendable-java.lang.Object-">
+<!--   -->
+</a><a name="set-E-T-">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>set</h4>
+<pre>public&nbsp;void&nbsp;set(<a 
href="../../../../../org/apache/qpid/proton/engine/ExtendableAccessor.html" 
title="type parameter in ExtendableAccessor">E</a>&nbsp;e,
+                <a 
href="../../../../../org/apache/qpid/proton/engine/ExtendableAccessor.html" 
title="type parameter in ExtendableAccessor">T</a>&nbsp;value)</pre>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+</div>
+<!-- ========= END OF CLASS DATA ========= -->
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation 
links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../../org/apache/qpid/proton/engine/Extendable.html" 
title="interface in org.apache.qpid.proton.engine"><span 
class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/qpid/proton/engine/Handler.html" 
title="interface in org.apache.qpid.proton.engine"><span 
class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a 
href="../../../../../index.html?org/apache/qpid/proton/engine/ExtendableAccessor.html"
 target="_top">Frames</a></li>
+<li><a href="ExtendableAccessor.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+</body>
+</html>

Added: 
qpid/site/input/releases/qpid-proton-master/proton/python/api/proton.EventType-class.html
URL: 
http://svn.apache.org/viewvc/qpid/site/input/releases/qpid-proton-master/proton/python/api/proton.EventType-class.html?rev=1705923&view=auto
==============================================================================
Binary file - no diff available.

Propchange: 
qpid/site/input/releases/qpid-proton-master/proton/python/api/proton.EventType-class.html
------------------------------------------------------------------------------
    svn:mime-type = application/xml

Added: 
qpid/site/input/releases/qpid-proton-master/proton/python/api/uml_class_diagram_for_proton_e_3.png
URL: 
http://svn.apache.org/viewvc/qpid/site/input/releases/qpid-proton-master/proton/python/api/uml_class_diagram_for_proton_e_3.png?rev=1705923&view=auto
==============================================================================
Binary file - no diff available.

Propchange: 
qpid/site/input/releases/qpid-proton-master/proton/python/api/uml_class_diagram_for_proton_e_3.png
------------------------------------------------------------------------------
    svn:mime-type = image/png

Added: qpid/site/input/releases/qpid-proton-master/proton/python/book/.buildinfo
URL: 
http://svn.apache.org/viewvc/qpid/site/input/releases/qpid-proton-master/proton/python/book/.buildinfo?rev=1705923&view=auto
==============================================================================
--- qpid/site/input/releases/qpid-proton-master/proton/python/book/.buildinfo 
(added)
+++ qpid/site/input/releases/qpid-proton-master/proton/python/book/.buildinfo 
Tue Sep 29 20:27:56 2015
@@ -0,0 +1,4 @@
+# Sphinx build info version 1
+# This file hashes the configuration used when building these files. When it 
is not found, a full rebuild will be done.
+config: b7c6c5e39e824de995733c5a6e1a6cfa
+tags: 645f666f9bcd5a90fca523b33c5a78b7

Added: 
qpid/site/input/releases/qpid-proton-master/proton/python/book/_sources/index.txt
URL: 
http://svn.apache.org/viewvc/qpid/site/input/releases/qpid-proton-master/proton/python/book/_sources/index.txt?rev=1705923&view=auto
==============================================================================
--- 
qpid/site/input/releases/qpid-proton-master/proton/python/book/_sources/index.txt
 (added)
+++ 
qpid/site/input/releases/qpid-proton-master/proton/python/book/_sources/index.txt
 Tue Sep 29 20:27:56 2015
@@ -0,0 +1,11 @@
+Apache Qpid Proton: python documentation
+========================================
+
+Contents:
+
+.. toctree::
+   :maxdepth: 2
+
+   tutorial
+   overview
+

Added: 
qpid/site/input/releases/qpid-proton-master/proton/python/book/_sources/overview.txt
URL: 
http://svn.apache.org/viewvc/qpid/site/input/releases/qpid-proton-master/proton/python/book/_sources/overview.txt?rev=1705923&view=auto
==============================================================================
--- 
qpid/site/input/releases/qpid-proton-master/proton/python/book/_sources/overview.txt
 (added)
+++ 
qpid/site/input/releases/qpid-proton-master/proton/python/book/_sources/overview.txt
 Tue Sep 29 20:27:56 2015
@@ -0,0 +1,160 @@
+############
+API Overview
+############
+
+=========================
+An overview of the model
+=========================
+
+Messages are transferred between connected peers over 'links'. At the
+sending peer the link is called a sender. At the receiving peer it is
+called a receiver. Messages are sent by senders and received by
+receivers. Links may have named 'source' and 'target' addresses (for
+example to identify the queue from which message were to be received
+or to which they were to be sent).
+
+Links are established over sessions. Sessions are established over
+connections. Connections are (generally) established between two
+uniquely identified containers. Though a connection can have multiple
+sessions, often this is not needed. The container API allows you to
+ignore sessions unless you actually require them.
+
+The sending of a message over a link is called a delivery. The message
+is the content sent, including all meta-data such as headers and
+annotations. The delivery is the protocol exchange associated with the
+transfer of that content.
+
+To indicate that a delivery is complete, either the sender or the
+receiver 'settles' it. When the other side learns that it has been
+settled, they will no longer communicate about that delivery. The
+receiver can also indicate whether they accept or reject the
+message.
+
+Three different delivery levels or 'guarantees' can be achieved:
+at-most-once, at-least-once or exactly-once. See
+:ref:`delivery-guarantees` for more detail.
+
+=======================================================
+A summary of the most commonly used classes and members
+=======================================================
+
+A brief summary of some of the key classes follows.
+
+The :py:class:`~proton.reactor.Container` class is a convenient entry
+point into the API, allowing connections and links to be
+established. Applications are structured as one or more event
+handlers. Handlers can be set at Container, Connection, or Link
+scope. Messages are sent by establishing an approprate sender and
+invoking its :py:meth:`~proton.Sender.send()` method. This is
+typically done when the sender is sendable, a condition indicated by
+the :py:meth:`~proton.handlers.MessagingHandler.on_sendable()` event, to
+avoid execessive build up of messages. Messages can be received by
+establishing an appropriate receiver and handling the
+:py:meth:`~proton.handlers.MessagingHandler.on_message()` event.
+
+.. autoclass:: proton.reactor.Container
+    :show-inheritance: proton.reactor.Reactor
+    :members: connect, create_receiver, create_sender, run, schedule
+    :undoc-members:
+
+    .. py:attribute:: container_id
+
+       The identifier used to identify this container in any
+       connections it establishes. Container names should be
+       unique. By default a UUID will be used.
+
+    The :py:meth:`~proton.reactor.Container.connect()` method returns
+    an instance of :py:class:`~proton.Connection`, the
+    :py:meth:`~proton.reactor.Container.create_receiver()` method
+    returns an instance of :py:class:`~proton.Receiver` and the
+    :py:meth:`~proton.reactor.Container.create_sender()` method
+    returns an instance of :py:class:`~proton.Sender`.
+
+.. autoclass:: proton.Connection
+    :members: open, close, state, session, hostname, container,
+              remote_container, remote_desired_capabilities, remote_hostname, 
remote_offered_capabilities , remote_properties
+    :undoc-members:
+
+.. autoclass:: proton.Receiver
+    :show-inheritance: proton.Link
+    :members: flow, recv, drain, draining
+    :undoc-members:
+
+.. autoclass:: proton.Sender
+    :show-inheritance: proton.Link
+    :members: offered, send
+    :undoc-members:
+
+.. autoclass:: proton.Link
+    :members: name, state, is_sender, is_receiver,
+              credit, queued, session, connection,
+              source, target, remote_source, remote_target
+    :undoc-members:
+
+    The :py:meth:`~proton.Link.source()`,
+    :py:meth:`~proton.Link.target()`,
+    :py:meth:`~proton.Link.remote_source()` and
+    :py:meth:`~proton.Link.remote_target()` methods all return an
+    instance of :py:class:`~proton.Terminus`.
+
+
+.. autoclass:: proton.Delivery
+    :members: update, settle, settled, remote_state, local_state, partial, 
readable, writable,
+              link, session, connection
+    :undoc-members:
+
+.. autoclass:: proton.handlers.MessagingHandler
+    :members: on_start, on_reactor_init,
+              on_message,
+              on_accepted,
+              on_rejected,
+              on_settled,
+              on_sendable,
+              on_connection_error,
+              on_link_error,
+              on_session_error,
+              on_disconnected,
+              accept, reject, release, settle
+    :undoc-members:
+
+.. autoclass:: proton.Event
+    :members: delivery, link, receiver, sender, session, connection, reactor, 
context
+    :undoc-members:
+
+.. autoclass:: proton.Message
+    :members: address, id, priority, subject, ttl, reply_to, correlation_id, 
durable, user_id,
+              content_type, content_encoding, creation_time, expiry_time, 
delivery_count, first_acquirer,
+              group_id, group_sequence, reply_to_group_id,
+              send, recv, encode, decode
+    :undoc-members:
+
+.. autoclass:: proton.Terminus
+    :members: address, dynamic, properties, capabilities, filter
+    :undoc-members:
+
+.. _delivery-guarantees:
+
+===================
+Delivery guarantees
+===================
+
+For at-most-once, the sender settles the message as soon as it sends
+it. If the connection is lost before the message is received by the
+receiver, the message will not be delivered.
+
+For at-least-once, the receiver accepts and settles the message on
+receipt. If the connection is lost before the sender is informed of
+the settlement, then the delivery is considered in-doubt and should be
+retried. This will ensure it eventually gets delivered (provided of
+course the connection and link can be reestablished). It may mean that
+it is delivered multiple times though.
+
+Finally, for exactly-once, the receiver accepts the message but
+doesn't settle it. The sender settles once it is aware that the
+receiver accepted it. In this way the receiver retains knowledge of an
+accepted message until it is sure the sender knows it has been
+accepted. If the connection is lost before settlement, the receiver
+informs the sender of all the unsettled deliveries it knows about, and
+from this the sender can deduce which need to be redelivered. The
+sender likewise informs the receiver which deliveries it knows about,
+from which the receiver can deduce which have already been settled.

Added: 
qpid/site/input/releases/qpid-proton-master/proton/python/book/_sources/tutorial.txt
URL: 
http://svn.apache.org/viewvc/qpid/site/input/releases/qpid-proton-master/proton/python/book/_sources/tutorial.txt?rev=1705923&view=auto
==============================================================================
--- 
qpid/site/input/releases/qpid-proton-master/proton/python/book/_sources/tutorial.txt
 (added)
+++ 
qpid/site/input/releases/qpid-proton-master/proton/python/book/_sources/tutorial.txt
 Tue Sep 29 20:27:56 2015
@@ -0,0 +1,301 @@
+########
+Tutorial
+########
+
+============
+Hello World!
+============
+
+Tradition dictates that we start with hello world! However rather than
+simply striving for the shortest program possible, we'll aim for a
+more illustrative example while still restricting the functionality to
+sending and receiving a single message.
+
+.. literalinclude:: ../../../../examples/python/helloworld.py
+   :lines: 21-
+   :linenos:
+
+You can see the import of :py:class:`~proton.reactor.Container` from 
``proton.reactor`` on the
+second line. This is a class that makes programming with proton a
+little easier for the common cases. It includes within it an event
+loop, and programs written using this utility are generally structured
+to react to various events. This reactive style is particularly suited
+to messaging applications.
+
+To be notified of a particular event, you define a class with the
+appropriately name method on it. That method is then called by the
+event loop when the event occurs.
+
+We define a class here, ``HelloWorld``, which handles the key events of
+interest in sending and receiving a message.
+
+The ``on_start()`` method is called when the event loop first
+starts. We handle that by establishing our connection (line 12), a
+sender over which to send the message (line 13) and a receiver over
+which to receive it back again (line 14).
+
+The ``on_sendable()`` method is called when message can be transferred
+over the associated sender link to the remote peer. We send out our
+``Hello World!`` message (line 17), then close the sender (line 18) as
+we only want to send one message. The closing of the sender will
+prevent further calls to ``on_sendable()``.
+
+The ``on_message()`` method is called when a message is
+received. Within that we simply print the body of the message (line
+21) and then close the connection (line 22).
+
+Now that we have defined the logic for handling these events, we
+create an instance of a :py:class:`~proton.reactor.Container`, pass it
+our handler and then enter the event loop by calling
+:py:meth:`~proton.reactor.Container.run()`. At this point control
+passes to the container instance, which will make the appropriate
+callbacks to any defined handlers.
+
+To run the example you will need to have a broker (or similar)
+accepting connections on that url either with a queue (or topic)
+matching the given address or else configured to create such a queue
+(or topic) dynamically. There is a simple broker.py script included
+alongside the examples that can be used for this purpose if
+desired. (It is also written using the API described here, and as such
+gives an example of a slightly more involved application).
+
+====================
+Hello World, Direct!
+====================
+
+Though often used in conjunction with a broker, AMQP does not
+*require* this. It also allows senders and receivers can communicate
+directly if desired.
+
+Let's modify our example to demonstrate this.
+
+.. literalinclude:: ../../../../examples/python/helloworld_direct.py
+   :lines: 21-
+   :emphasize-lines: 11,21-22,24-25
+   :linenos:
+
+The first difference, on line 11, is that rather than creating a
+receiver on the same connection as our sender, we listen for incoming
+connections by invoking the
+:py:meth:`~proton.reactor.Container.listen()` method on the
+container.
+
+As we only need then to initiate one link, the sender, we can do that
+by passing in a url rather than an existing connection, and the
+connection will also be automatically established for us.
+
+We send the message in response to the ``on_sendable()`` callback and
+print the message out in response to the ``on_message()`` callback
+exactly as before.
+
+However we also handle two new events. We now close the connection
+from the senders side once the message has been accepted (line
+22). The acceptance of the message is an indication of successful
+transfer to the peer. We are notified of that event through the
+``on_accepted()`` callback. Then, once the connection has been closed,
+of which we are notified through the ``on_closed()`` callback, we stop
+accepting incoming connections (line 25) at which point there is no
+work to be done and the event loop exits, and the run() method will
+return.
+
+So now we have our example working without a broker involved!
+
+=============================
+Asynchronous Send and Receive
+=============================
+
+Of course, these ``HelloWorld!`` examples are very artificial,
+communicating as they do over a network connection but with the same
+process. A more realistic example involves communication between
+separate processes (which could indeed be running on completely
+separate machines).
+
+Let's separate the sender from the receiver, and let's transfer more than
+a single message between them.
+
+We'll start with a simple sender.
+
+.. literalinclude:: ../../../../examples/python/simple_send.py
+   :lines: 21-
+   :linenos:
+
+As with the previous example, we define the application logic in a
+class that handles various events. As before, we use the
+``on_start()`` event to establish our sender link over which we will
+transfer messages and the ``on_sendable()`` event to know when we can
+transfer our messages.
+
+Because we are transferring more than one message, we need to keep
+track of how many we have sent. We'll use a ``sent`` member variable
+for that. The ``total`` member variable will hold the number of
+messages we want to send.
+
+AMQP defines a credit-based flow control mechanism. Flow control
+allows the receiver to control how many messages it is prepared to
+receive at a given time and thus prevents any component being
+overwhelmed by the number of messages it is sent.
+
+In the ``on_sendable()`` callback, we check that our sender has credit
+before sending messages. We also check that we haven't already sent
+the required number of messages.
+
+The ``send()`` call on line 20 is of course asynchronous. When it
+returns the message has not yet actually been transferred across the
+network to the receiver. By handling the ``on_accepted()`` event, we
+can get notified when the receiver has received and accepted the
+message. In our example we use this event to track the confirmation of
+the messages we have sent. We only close the connection and exit when
+the receiver has received all the messages we wanted to send.
+
+If we are disconnected after a message is sent and before it has been
+confirmed by the receiver, it is said to be ``in doubt``. We don't
+know whether or not it was received. In this example, we will handle
+that by resending any in-doubt messages. This is known as an
+'at-least-once' guarantee, since each message should eventually be
+received at least once, though a given message may be received more
+than once (i.e. duplicates are possible). In the ``on_disconnected()``
+callback, we reset the sent count to reflect only those that have been
+confirmed. The library will automatically try to reconnect for us, and
+when our sender is sendable again, we can restart from the point we
+know the receiver got to.
+
+Now let's look at the corresponding receiver:
+
+.. literalinclude:: ../../../../examples/python/simple_recv.py
+   :lines: 21-
+   :linenos:
+
+Here we handle the ``on_start()`` by creating our receiver, much like
+we did for the sender. We also handle the ``on_message()`` event for
+received messages and print the message out as in the ``Hello World!``
+examples. However we add some logic to allow the receiver to wait for
+a given number of messages, then to close the connection and exit. We
+also add some logic to check for and ignore duplicates, using a simple
+sequential id scheme.
+
+Again, though sending between these two examples requires some sort of
+intermediary process (e.g. a broker), AMQP allows us to send messages
+directly between two processes without this if we so wish. In that
+case one or other of the processes needs to accept incoming socket
+connections. Let's create a modified version of the receiving example
+that does this:
+
+.. literalinclude:: ../../../../examples/python/direct_recv.py
+   :lines: 21-
+   :emphasize-lines: 13,25
+   :linenos:
+
+There are only two differences here. On line 13, instead of initiating
+a link (and implicitly a connection), we listen for incoming
+connections. On line 25, when we have received all the expected
+messages, we then stop listening for incoming connections by closing
+the acceptor object.
+
+You can use the original send example now to send to this receiver
+directly. (Note: you will need to stop any broker that is listening on
+the 5672 port, or else change the port used by specifying a different
+address to each example via the -a command line switch).
+
+We could equally well modify the original sender to allow the original
+receiver to connect to it. Again that just requires two modifications:
+
+.. literalinclude:: ../../../../examples/python/direct_send.py
+   :lines: 21-
+   :emphasize-lines: 15,28
+   :linenos:
+
+As with the modified receiver, instead of initiating establishment of
+a link, we listen for incoming connections on line 15 and then on line
+28, when we have received confirmation of all the messages we sent, we
+can close the acceptor in order to exit. The symmetry in the
+underlying AMQP that enables this is quite unique and elegant, and in
+reflecting this the proton API provides a flexible toolkit for
+implementing all sorts of interesting intermediaries (the broker.py
+script provided as a simple broker for testing purposes provides an
+example of this).
+
+To try this modified sender, run the original receiver against it.
+
+================
+Request/Response
+================
+
+A common pattern is to send a request message and expect a response
+message in return. AMQP has special support for this pattern. Let's
+have a look at a simple example. We'll start with the 'server',
+i.e. the program that will process the request and send the
+response. Note that we are still using a broker in this example.
+
+Our server will provide a very simple service: it will respond with
+the body of the request converted to uppercase.
+
+.. literalinclude:: ../../../../examples/python/server.py
+   :lines: 21-
+   :linenos:
+
+The code here is not too different from the simple receiver
+example. When we receive a request however, we look at the
+:py:attr:`~proton.Message.reply_to` address on the
+:py:class:`~proton.Message` and create a sender for that over which to
+send the response. We'll cache the senders incase we get further
+requests with the same reply_to.
+
+Now let's create a simple client to test this service out.
+
+.. literalinclude:: ../../../../examples/python/client.py
+   :lines: 21-
+   :linenos:
+
+As well as sending requests, we need to be able to get back the
+responses. We create a receiver for that (see line 14), but we don't
+specify an address, we set the dynamic option which tells the broker
+we are connected to to create a temporary address over which we can
+receive our responses.
+
+We need to use the address allocated by the broker as the reply_to
+address of our requests, so we can't send them until the broker has
+confirmed our receiving link has been set up (at which point we will
+have our allocated address). To do that, we add an
+``on_link_opened()`` method to our handler class, and if the link
+associated with event is the receiver, we use that as the trigger to
+send our first request.
+
+Again, we could avoid having any intermediary process here if we
+wished. The following code implementas a server to which the client
+above could connect directly without any need for a broker or similar.
+
+.. literalinclude:: ../../../../examples/python/server_direct.py
+   :lines: 21-
+   :linenos:
+
+Though this requires some more extensive changes than the simple
+sending and receiving examples, the essence of the program is still
+the same. Here though, rather than the server establishing a link for
+the response, it relies on the link that the client established, since
+that now comes in directly to the server process.
+
+Miscellaneous
+=============
+
+Many brokers offer the ability to consume messages based on a
+'selector' that defines which messages are of interest based on
+particular values of the headers. The following example shows how that
+can be achieved:
+
+.. literalinclude:: ../../../../examples/python/selected_recv.py
+   :lines: 21-
+   :emphasize-lines: 10
+   :linenos:
+
+When creating the receiver, we specify a Selector object as an
+option. The options argument can take a single object or a
+list. Another option that is sometimes of interest when using a broker
+is the ability to 'browse' the messages on a queue, rather than
+consumig them. This is done in AMQP by specifying a distribution mode
+of 'copy' (instead of 'move' which is the expected default for
+queues). An example of that is shown next:
+
+.. literalinclude:: ../../../../examples/python/queue_browser.py
+   :lines: 21-
+   :emphasize-lines: 10
+   :linenos:

Added: 
qpid/site/input/releases/qpid-proton-master/proton/python/book/_static/ajax-loader.gif
URL: 
http://svn.apache.org/viewvc/qpid/site/input/releases/qpid-proton-master/proton/python/book/_static/ajax-loader.gif?rev=1705923&view=auto
==============================================================================
Binary file - no diff available.

Propchange: 
qpid/site/input/releases/qpid-proton-master/proton/python/book/_static/ajax-loader.gif
------------------------------------------------------------------------------
    svn:mime-type = image/gif



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to