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 2016/07/13 09:54:46 UTC

[01/26] qpid-site git commit: QPID-7350: Examples that should have gone with the previous commit

Repository: qpid-site
Updated Branches:
  refs/heads/asf-site 59433afd5 -> 75ca8b144


http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/input/releases/qpid-proton-0.13.0/proton/python/examples/test_examples.py.html.in
----------------------------------------------------------------------
diff --git a/input/releases/qpid-proton-0.13.0/proton/python/examples/test_examples.py.html.in b/input/releases/qpid-proton-0.13.0/proton/python/examples/test_examples.py.html.in
new file mode 100644
index 0000000..3012861
--- /dev/null
+++ b/input/releases/qpid-proton-0.13.0/proton/python/examples/test_examples.py.html.in
@@ -0,0 +1,137 @@
+
+<h1>test_examples.py</h1>
+<div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">sys</span>
+<span class="kn">import</span> <span class="nn">subprocess</span>
+<span class="kn">import</span> <span class="nn">time</span>
+<span class="kn">import</span> <span class="nn">unittest</span>
+
+<span class="k">if</span> <span class="n">sys</span><span class="o">.</span><span class="n">version_info</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">==</span> <span class="mi">2</span><span class="p">:</span>
+    <span class="n">_unicode_prefix</span> <span class="o">=</span> <span class="s1">&#39;u&#39;</span>
+<span class="k">else</span><span class="p">:</span>
+    <span class="n">_unicode_prefix</span> <span class="o">=</span> <span class="s1">&#39;&#39;</span>
+
+
+<span class="k">class</span> <span class="nc">ExamplesTest</span><span class="p">(</span><span class="n">unittest</span><span class="o">.</span><span class="n">TestCase</span><span class="p">):</span>
+    <span class="k">def</span> <span class="nf">test_helloworld</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">example</span><span class="o">=</span><span class="s2">&quot;helloworld.py&quot;</span><span class="p">):</span>
+        <span class="n">p</span> <span class="o">=</span> <span class="n">subprocess</span><span class="o">.</span><span class="n">Popen</span><span class="p">([</span><span class="n">example</span><span class="p">],</span> <span class="n">stderr</span><span class="o">=</span><span class="n">subprocess</span><span class="o">.</span><span class="n">STDOUT</span><span class="p">,</span> <span class="n">stdout</span><span class="o">=</span><span class="n">subprocess</span><span class="o">.</span><span class="n">PIPE</span><span class="p">,</span>
+                             <span class="n">universal_newlines</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
+        <span class="n">p</span><span class="o">.</span><span class="n">wait</span><span class="p">()</span>
+        <span class="n">output</span> <span class="o">=</span> <span class="p">[</span><span class="n">l</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> <span class="k">for</span> <span class="n">l</span> <span class="ow">in</span> <span class="n">p</span><span class="o">.</span><span class="n">stdout</span><span class="p">]</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">assertEqual</span><span class="p">(</span><span class="n">output</span><span class="p">,</span> <span class="p">[</span><span class="s1">&#39;Hello World!&#39;</span><span class="p">])</span>
+
+    <span class="k">def</span> <span class="nf">test_helloworld_direct</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">test_helloworld</span><span class="p">(</span><span class="s1">&#39;helloworld_direct.py&#39;</span><span class="p">)</span>
+
+    <span class="k">def</span> <span class="nf">test_helloworld_blocking</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">test_helloworld</span><span class="p">(</span><span class="s1">&#39;helloworld_blocking.py&#39;</span><span class="p">)</span>
+
+    <span class="k">def</span> <span class="nf">test_helloworld_tornado</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">test_helloworld</span><span class="p">(</span><span class="s1">&#39;helloworld_tornado.py&#39;</span><span class="p">)</span>
+
+    <span class="k">def</span> <span class="nf">test_helloworld_direct_tornado</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">test_helloworld</span><span class="p">(</span><span class="s1">&#39;helloworld_direct_tornado.py&#39;</span><span class="p">)</span>
+
+    <span class="k">def</span> <span class="nf">test_simple_send_recv</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">recv</span><span class="o">=</span><span class="s1">&#39;simple_recv.py&#39;</span><span class="p">,</span> <span class="n">send</span><span class="o">=</span><span class="s1">&#39;simple_send.py&#39;</span><span class="p">):</span>
+        <span class="n">r</span> <span class="o">=</span> <span class="n">subprocess</span><span class="o">.</span><span class="n">Popen</span><span class="p">([</span><span class="n">recv</span><span class="p">],</span> <span class="n">stderr</span><span class="o">=</span><span class="n">subprocess</span><span class="o">.</span><span class="n">STDOUT</span><span class="p">,</span> <span class="n">stdout</span><span class="o">=</span><span class="n">subprocess</span><span class="o">.</span><span class="n">PIPE</span><span class="p">,</span>
+                             <span class="n">universal_newlines</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
+        <span class="n">s</span> <span class="o">=</span> <span class="n">subprocess</span><span class="o">.</span><span class="n">Popen</span><span class="p">([</span><span class="n">send</span><span class="p">],</span> <span class="n">stderr</span><span class="o">=</span><span class="n">subprocess</span><span class="o">.</span><span class="n">STDOUT</span><span class="p">,</span> <span class="n">stdout</span><span class="o">=</span><span class="n">subprocess</span><span class="o">.</span><span class="n">PIPE</span><span class="p">,</span>
+                             <span class="n">universal_newlines</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
+        <span class="n">s</span><span class="o">.</span><span class="n">wait</span><span class="p">()</span>
+        <span class="n">r</span><span class="o">.</span><span class="n">wait</span><span class="p">()</span>
+        <span class="n">actual</span> <span class="o">=</span> <span class="p">[</span><span class="n">l</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> <span class="k">for</span> <span class="n">l</span> <span class="ow">in</span> <span class="n">r</span><span class="o">.</span><span class="n">stdout</span><span class="p">]</span>
+        <span class="n">expected</span> <span class="o">=</span> <span class="p">[</span><span class="s2">&quot;{</span><span class="si">%s</span><span class="s2">&#39;sequence&#39;: </span><span class="si">%i</span><span class="s2">}&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">_unicode_prefix</span><span class="p">,</span> <span class="p">(</span><span class="n">i</span><span class="o">+</span><span class="mi">1</span><span class="p">))</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">100</span><span class="p">)]</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">assertEqual</span><span class="p">(</span><span class="n">actual</span><span class="p">,</span> <span class="n">expected</span><span class="p">)</span>
+
+    <span class="k">def</span> <span class="nf">test_client_server</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">client</span><span class="o">=</span><span class="p">[</span><span class="s1">&#39;client.py&#39;</span><span class="p">],</span> <span class="n">server</span><span class="o">=</span><span class="p">[</span><span class="s1">&#39;server.py&#39;</span><span class="p">],</span> <span class="n">sleep</span><span class="o">=</span><span class="mi">0</span><span class="p">):</span>
+        <span class="n">s</span> <span class="o">=</span> <span class="n">subprocess</span><span class="o">.</span><span class="n">Popen</span><span class="p">(</span><span class="n">server</span><span class="p">,</span> <span class="n">stderr</span><span class="o">=</span><span class="n">subprocess</span><span class="o">.</span><span class="n">STDOUT</span><span class="p">,</span> <span class="n">stdout</span><span class="o">=</span><span class="n">subprocess</span><span class="o">.</span><span class="n">PIPE</span><span class="p">,</span>
+                             <span class="n">universal_newlines</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
+        <span class="k">if</span> <span class="n">sleep</span><span class="p">:</span>
+            <span class="n">time</span><span class="o">.</span><span class="n">sleep</span><span class="p">(</span><span class="n">sleep</span><span class="p">)</span>
+        <span class="n">c</span> <span class="o">=</span> <span class="n">subprocess</span><span class="o">.</span><span class="n">Popen</span><span class="p">(</span><span class="n">client</span><span class="p">,</span> <span class="n">stderr</span><span class="o">=</span><span class="n">subprocess</span><span class="o">.</span><span class="n">STDOUT</span><span class="p">,</span> <span class="n">stdout</span><span class="o">=</span><span class="n">subprocess</span><span class="o">.</span><span class="n">PIPE</span><span class="p">,</span>
+                             <span class="n">universal_newlines</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
+        <span class="n">c</span><span class="o">.</span><span class="n">wait</span><span class="p">()</span>
+        <span class="n">s</span><span class="o">.</span><span class="n">terminate</span><span class="p">()</span>
+        <span class="n">actual</span> <span class="o">=</span> <span class="p">[</span><span class="n">l</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> <span class="k">for</span> <span class="n">l</span> <span class="ow">in</span> <span class="n">c</span><span class="o">.</span><span class="n">stdout</span><span class="p">]</span>
+        <span class="n">inputs</span> <span class="o">=</span> <span class="p">[</span><span class="s2">&quot;Twas brillig, and the slithy toves&quot;</span><span class="p">,</span>
+                    <span class="s2">&quot;Did gire and gymble in the wabe.&quot;</span><span class="p">,</span>
+                    <span class="s2">&quot;All mimsy were the borogroves,&quot;</span><span class="p">,</span>
+                    <span class="s2">&quot;And the mome raths outgrabe.&quot;</span><span class="p">]</span>
+        <span class="n">expected</span> <span class="o">=</span> <span class="p">[</span><span class="s2">&quot;</span><span class="si">%s</span><span class="s2"> =&gt; </span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">l</span><span class="p">,</span> <span class="n">l</span><span class="o">.</span><span class="n">upper</span><span class="p">())</span> <span class="k">for</span> <span class="n">l</span> <span class="ow">in</span> <span class="n">inputs</span><span class="p">]</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">assertEqual</span><span class="p">(</span><span class="n">actual</span><span class="p">,</span> <span class="n">expected</span><span class="p">)</span>
+
+    <span class="k">def</span> <span class="nf">test_sync_client_server</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">test_client_server</span><span class="p">(</span><span class="n">client</span><span class="o">=</span><span class="p">[</span><span class="s1">&#39;sync_client.py&#39;</span><span class="p">])</span>
+
+    <span class="k">def</span> <span class="nf">test_client_server_tx</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">test_client_server</span><span class="p">(</span><span class="n">server</span><span class="o">=</span><span class="p">[</span><span class="s1">&#39;server_tx.py&#39;</span><span class="p">])</span>
+
+    <span class="k">def</span> <span class="nf">test_sync_client_server_tx</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">test_client_server</span><span class="p">(</span><span class="n">client</span><span class="o">=</span><span class="p">[</span><span class="s1">&#39;sync_client.py&#39;</span><span class="p">],</span> <span class="n">server</span><span class="o">=</span><span class="p">[</span><span class="s1">&#39;server_tx.py&#39;</span><span class="p">])</span>
+
+    <span class="k">def</span> <span class="nf">test_client_server_direct</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">test_client_server</span><span class="p">(</span><span class="n">client</span><span class="o">=</span><span class="p">[</span><span class="s1">&#39;client.py&#39;</span><span class="p">,</span> <span class="s1">&#39;-a&#39;</span><span class="p">,</span> <span class="s1">&#39;localhost:8888/examples&#39;</span><span class="p">],</span> <span class="n">server</span><span class="o">=</span><span class="p">[</span><span class="s1">&#39;server_direct.py&#39;</span><span class="p">],</span> <span class="n">sleep</span><span class="o">=</span><span class="mf">0.5</span><span class="p">)</span>
+
+    <span class="k">def</span> <span class="nf">test_sync_client_server_direct</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">test_client_server</span><span class="p">(</span><span class="n">client</span><span class="o">=</span><span class="p">[</span><span class="s1">&#39;sync_client.py&#39;</span><span class="p">,</span> <span class="s1">&#39;-a&#39;</span><span class="p">,</span> <span class="s1">&#39;localhost:8888/examples&#39;</span><span class="p">],</span> <span class="n">server</span><span class="o">=</span><span class="p">[</span><span class="s1">&#39;server_direct.py&#39;</span><span class="p">],</span> <span class="n">sleep</span><span class="o">=</span><span class="mf">0.5</span><span class="p">)</span>
+
+    <span class="k">def</span> <span class="nf">test_db_send_recv</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">maxDiff</span> <span class="o">=</span> <span class="bp">None</span>
+        <span class="c1"># setup databases</span>
+        <span class="n">subprocess</span><span class="o">.</span><span class="n">check_call</span><span class="p">([</span><span class="s1">&#39;db_ctrl.py&#39;</span><span class="p">,</span> <span class="s1">&#39;init&#39;</span><span class="p">,</span> <span class="s1">&#39;./src_db&#39;</span><span class="p">])</span>
+        <span class="n">subprocess</span><span class="o">.</span><span class="n">check_call</span><span class="p">([</span><span class="s1">&#39;db_ctrl.py&#39;</span><span class="p">,</span> <span class="s1">&#39;init&#39;</span><span class="p">,</span> <span class="s1">&#39;./dst_db&#39;</span><span class="p">])</span>
+        <span class="n">fill</span> <span class="o">=</span> <span class="n">subprocess</span><span class="o">.</span><span class="n">Popen</span><span class="p">([</span><span class="s1">&#39;db_ctrl.py&#39;</span><span class="p">,</span> <span class="s1">&#39;insert&#39;</span><span class="p">,</span> <span class="s1">&#39;./src_db&#39;</span><span class="p">],</span>
+                                <span class="n">stdin</span><span class="o">=</span><span class="n">subprocess</span><span class="o">.</span><span class="n">PIPE</span><span class="p">,</span> <span class="n">stderr</span><span class="o">=</span><span class="n">subprocess</span><span class="o">.</span><span class="n">STDOUT</span><span class="p">,</span> <span class="n">stdout</span><span class="o">=</span><span class="n">subprocess</span><span class="o">.</span><span class="n">PIPE</span><span class="p">,</span>
+                                <span class="n">universal_newlines</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
+        <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">100</span><span class="p">):</span>
+            <span class="n">fill</span><span class="o">.</span><span class="n">stdin</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="s2">&quot;Message-</span><span class="si">%i</span><span class="se">\n</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">i</span><span class="o">+</span><span class="mi">1</span><span class="p">))</span>
+        <span class="n">fill</span><span class="o">.</span><span class="n">stdin</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
+        <span class="n">fill</span><span class="o">.</span><span class="n">wait</span><span class="p">()</span>
+        <span class="c1"># run send and recv</span>
+        <span class="n">r</span> <span class="o">=</span> <span class="n">subprocess</span><span class="o">.</span><span class="n">Popen</span><span class="p">([</span><span class="s1">&#39;db_recv.py&#39;</span><span class="p">,</span> <span class="s1">&#39;-m&#39;</span><span class="p">,</span> <span class="s1">&#39;100&#39;</span><span class="p">],</span> <span class="n">stderr</span><span class="o">=</span><span class="n">subprocess</span><span class="o">.</span><span class="n">STDOUT</span><span class="p">,</span> <span class="n">stdout</span><span class="o">=</span><span class="n">subprocess</span><span class="o">.</span><span class="n">PIPE</span><span class="p">,</span>
+                             <span class="n">universal_newlines</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
+        <span class="n">s</span> <span class="o">=</span> <span class="n">subprocess</span><span class="o">.</span><span class="n">Popen</span><span class="p">([</span><span class="s1">&#39;db_send.py&#39;</span><span class="p">,</span> <span class="s1">&#39;-m&#39;</span><span class="p">,</span> <span class="s1">&#39;100&#39;</span><span class="p">],</span> <span class="n">stderr</span><span class="o">=</span><span class="n">subprocess</span><span class="o">.</span><span class="n">STDOUT</span><span class="p">,</span> <span class="n">stdout</span><span class="o">=</span><span class="n">subprocess</span><span class="o">.</span><span class="n">PIPE</span><span class="p">,</span>
+                             <span class="n">universal_newlines</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
+        <span class="n">s</span><span class="o">.</span><span class="n">wait</span><span class="p">()</span>
+        <span class="n">r</span><span class="o">.</span><span class="n">wait</span><span class="p">()</span>
+        <span class="c1"># verify output of receive</span>
+        <span class="n">actual</span> <span class="o">=</span> <span class="p">[</span><span class="n">l</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> <span class="k">for</span> <span class="n">l</span> <span class="ow">in</span> <span class="n">r</span><span class="o">.</span><span class="n">stdout</span><span class="p">]</span>
+        <span class="n">expected</span> <span class="o">=</span> <span class="p">[</span><span class="s2">&quot;inserted message </span><span class="si">%i</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">i</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">100</span><span class="p">)]</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">assertEqual</span><span class="p">(</span><span class="n">actual</span><span class="p">,</span> <span class="n">expected</span><span class="p">)</span>
+        <span class="c1"># verify state of databases</span>
+        <span class="n">v</span> <span class="o">=</span> <span class="n">subprocess</span><span class="o">.</span><span class="n">Popen</span><span class="p">([</span><span class="s1">&#39;db_ctrl.py&#39;</span><span class="p">,</span> <span class="s1">&#39;list&#39;</span><span class="p">,</span> <span class="s1">&#39;./dst_db&#39;</span><span class="p">],</span> <span class="n">stderr</span><span class="o">=</span><span class="n">subprocess</span><span class="o">.</span><span class="n">STDOUT</span><span class="p">,</span> <span class="n">stdout</span><span class="o">=</span><span class="n">subprocess</span><span class="o">.</span><span class="n">PIPE</span><span class="p">,</span>
+                             <span class="n">universal_newlines</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
+        <span class="n">v</span><span class="o">.</span><span class="n">wait</span><span class="p">()</span>
+        <span class="n">expected</span> <span class="o">=</span> <span class="p">[</span><span class="s2">&quot;(</span><span class="si">%i</span><span class="s2">, </span><span class="si">%s</span><span class="s2">&#39;Message-</span><span class="si">%i</span><span class="s2">&#39;)&quot;</span> <span class="o">%</span> <span class="p">((</span><span class="n">i</span><span class="o">+</span><span class="mi">1</span><span class="p">),</span> <span class="n">_unicode_prefix</span><span class="p">,</span> <span class="p">(</span><span class="n">i</span><span class="o">+</span><span class="mi">1</span><span class="p">))</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">100</span><span class="p">)]</span>
+        <span class="n">actual</span> <span class="o">=</span> <span class="p">[</span><span class="n">l</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> <span class="k">for</span> <span class="n">l</span> <span class="ow">in</span> <span class="n">v</span><span class="o">.</span><span class="n">stdout</span><span class="p">]</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">assertEqual</span><span class="p">(</span><span class="n">actual</span><span class="p">,</span> <span class="n">expected</span><span class="p">)</span>
+
+    <span class="k">def</span> <span class="nf">test_tx_send_tx_recv</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">test_simple_send_recv</span><span class="p">(</span><span class="n">recv</span><span class="o">=</span><span class="s1">&#39;tx_recv.py&#39;</span><span class="p">,</span> <span class="n">send</span><span class="o">=</span><span class="s1">&#39;tx_send.py&#39;</span><span class="p">)</span>
+
+    <span class="k">def</span> <span class="nf">test_simple_send_direct_recv</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">maxDiff</span> <span class="o">=</span> <span class="bp">None</span>
+        <span class="n">r</span> <span class="o">=</span> <span class="n">subprocess</span><span class="o">.</span><span class="n">Popen</span><span class="p">([</span><span class="s1">&#39;direct_recv.py&#39;</span><span class="p">,</span> <span class="s1">&#39;-a&#39;</span><span class="p">,</span> <span class="s1">&#39;localhost:8888&#39;</span><span class="p">],</span> <span class="n">stderr</span><span class="o">=</span><span class="n">subprocess</span><span class="o">.</span><span class="n">STDOUT</span><span class="p">,</span> <span class="n">stdout</span><span class="o">=</span><span class="n">subprocess</span><span class="o">.</span><span class="n">PIPE</span><span class="p">,</span>
+                             <span class="n">universal_newlines</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
+        <span class="n">time</span><span class="o">.</span><span class="n">sleep</span><span class="p">(</span><span class="mf">0.5</span><span class="p">)</span>
+        <span class="n">s</span> <span class="o">=</span> <span class="n">subprocess</span><span class="o">.</span><span class="n">Popen</span><span class="p">([</span><span class="s1">&#39;simple_send.py&#39;</span><span class="p">,</span> <span class="s1">&#39;-a&#39;</span><span class="p">,</span> <span class="s1">&#39;localhost:8888&#39;</span><span class="p">],</span> <span class="n">stderr</span><span class="o">=</span><span class="n">subprocess</span><span class="o">.</span><span class="n">STDOUT</span><span class="p">,</span> <span class="n">stdout</span><span class="o">=</span><span class="n">subprocess</span><span class="o">.</span><span class="n">PIPE</span><span class="p">,</span>
+                             <span class="n">universal_newlines</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
+        <span class="n">s</span><span class="o">.</span><span class="n">wait</span><span class="p">()</span>
+        <span class="n">r</span><span class="o">.</span><span class="n">wait</span><span class="p">()</span>
+        <span class="n">actual</span> <span class="o">=</span> <span class="p">[</span><span class="n">l</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> <span class="k">for</span> <span class="n">l</span> <span class="ow">in</span> <span class="n">r</span><span class="o">.</span><span class="n">stdout</span><span class="p">]</span>
+        <span class="n">expected</span> <span class="o">=</span> <span class="p">[</span><span class="s2">&quot;{</span><span class="si">%s</span><span class="s2">&#39;sequence&#39;: </span><span class="si">%i</span><span class="s2">}&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">_unicode_prefix</span><span class="p">,</span> <span class="p">(</span><span class="n">i</span><span class="o">+</span><span class="mi">1</span><span class="p">))</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">100</span><span class="p">)]</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">assertEqual</span><span class="p">(</span><span class="n">actual</span><span class="p">,</span> <span class="n">expected</span><span class="p">)</span>
+
+    <span class="k">def</span> <span class="nf">test_direct_send_simple_recv</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="n">s</span> <span class="o">=</span> <span class="n">subprocess</span><span class="o">.</span><span class="n">Popen</span><span class="p">([</span><span class="s1">&#39;direct_send.py&#39;</span><span class="p">,</span> <span class="s1">&#39;-a&#39;</span><span class="p">,</span> <span class="s1">&#39;localhost:8888&#39;</span><span class="p">],</span> <span class="n">stderr</span><span class="o">=</span><span class="n">subprocess</span><span class="o">.</span><span class="n">STDOUT</span><span class="p">,</span> <span class="n">stdout</span><span class="o">=</span><span class="n">subprocess</span><span class="o">.</span><span class="n">PIPE</span><span class="p">,</span>
+                             <span class="n">universal_newlines</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
+        <span class="n">time</span><span class="o">.</span><span class="n">sleep</span><span class="p">(</span><span class="mf">0.5</span><span class="p">)</span>
+        <span class="n">r</span> <span class="o">=</span> <span class="n">subprocess</span><span class="o">.</span><span class="n">Popen</span><span class="p">([</span><span class="s1">&#39;simple_recv.py&#39;</span><span class="p">,</span> <span class="s1">&#39;-a&#39;</span><span class="p">,</span> <span class="s1">&#39;localhost:8888&#39;</span><span class="p">],</span> <span class="n">stderr</span><span class="o">=</span><span class="n">subprocess</span><span class="o">.</span><span class="n">STDOUT</span><span class="p">,</span> <span class="n">stdout</span><span class="o">=</span><span class="n">subprocess</span><span class="o">.</span><span class="n">PIPE</span><span class="p">,</span>
+                             <span class="n">universal_newlines</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
+        <span class="n">r</span><span class="o">.</span><span class="n">wait</span><span class="p">()</span>
+        <span class="n">s</span><span class="o">.</span><span class="n">wait</span><span class="p">()</span>
+        <span class="n">actual</span> <span class="o">=</span> <span class="p">[</span><span class="n">l</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> <span class="k">for</span> <span class="n">l</span> <span class="ow">in</span> <span class="n">r</span><span class="o">.</span><span class="n">stdout</span><span class="p">]</span>
+        <span class="n">expected</span> <span class="o">=</span> <span class="p">[</span><span class="s2">&quot;{</span><span class="si">%s</span><span class="s2">&#39;sequence&#39;: </span><span class="si">%i</span><span class="s2">}&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">_unicode_prefix</span><span class="p">,</span> <span class="p">(</span><span class="n">i</span><span class="o">+</span><span class="mi">1</span><span class="p">))</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">100</span><span class="p">)]</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">assertEqual</span><span class="p">(</span><span class="n">actual</span><span class="p">,</span> <span class="n">expected</span><span class="p">)</span>
+</pre></div>
+
+<p><a href="test_examples.py">Download this file</a></p>

http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/input/releases/qpid-proton-0.13.0/proton/python/examples/tx_recv.py
----------------------------------------------------------------------
diff --git a/input/releases/qpid-proton-0.13.0/proton/python/examples/tx_recv.py b/input/releases/qpid-proton-0.13.0/proton/python/examples/tx_recv.py
new file mode 100755
index 0000000..4baddcf
--- /dev/null
+++ b/input/releases/qpid-proton-0.13.0/proton/python/examples/tx_recv.py
@@ -0,0 +1,80 @@
+#!/usr/bin/env python
+#
+# 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.
+#
+
+from __future__ import print_function
+import optparse
+from proton import Url
+from proton.reactor import Container
+from proton.handlers import MessagingHandler, TransactionHandler
+
+class TxRecv(MessagingHandler, TransactionHandler):
+    def __init__(self, url, messages, batch_size):
+        super(TxRecv, self).__init__(prefetch=0, auto_accept=False)
+        self.url = Url(url)
+        self.expected = messages
+        self.batch_size = batch_size
+        self.current_batch = 0
+        self.committed = 0
+
+    def on_start(self, event):
+        self.container = event.container
+        self.conn = self.container.connect(self.url)
+        self.receiver = self.container.create_receiver(self.conn, self.url.path)
+        self.container.declare_transaction(self.conn, handler=self)
+        self.transaction = None
+
+    def on_message(self, event):
+        print(event.message.body)
+        self.transaction.accept(event.delivery)
+        self.current_batch += 1
+        if self.current_batch == self.batch_size:
+            self.transaction.commit()
+            self.transaction = None
+
+    def on_transaction_declared(self, event):
+        self.receiver.flow(self.batch_size)
+        self.transaction = event.transaction
+
+    def on_transaction_committed(self, event):
+        self.committed += self.current_batch
+        self.current_batch = 0
+        if self.expected == 0 or self.committed < self.expected:
+            self.container.declare_transaction(self.conn, handler=self)
+        else:
+            event.connection.close()
+
+    def on_disconnected(self, event):
+        self.current_batch = 0
+
+parser = optparse.OptionParser(usage="usage: %prog [options]")
+parser.add_option("-a", "--address", default="localhost:5672/examples",
+                  help="address from which messages are received (default %default)")
+parser.add_option("-m", "--messages", type="int", default=100,
+                  help="number of messages to receive; 0 receives indefinitely (default %default)")
+parser.add_option("-b", "--batch-size", type="int", default=10,
+                  help="number of messages in each transaction (default %default)")
+opts, args = parser.parse_args()
+
+try:
+    Container(TxRecv(opts.address, opts.messages, opts.batch_size)).run()
+except KeyboardInterrupt: pass
+
+
+

http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/input/releases/qpid-proton-0.13.0/proton/python/examples/tx_recv.py.html.in
----------------------------------------------------------------------
diff --git a/input/releases/qpid-proton-0.13.0/proton/python/examples/tx_recv.py.html.in b/input/releases/qpid-proton-0.13.0/proton/python/examples/tx_recv.py.html.in
new file mode 100644
index 0000000..f74b3cd
--- /dev/null
+++ b/input/releases/qpid-proton-0.13.0/proton/python/examples/tx_recv.py.html.in
@@ -0,0 +1,62 @@
+
+<h1>tx_recv.py</h1>
+<div class="highlight"><pre><span></span><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">optparse</span>
+<span class="kn">from</span> <span class="nn">proton</span> <span class="kn">import</span> <span class="n">Url</span>
+<span class="kn">from</span> <span class="nn">proton.reactor</span> <span class="kn">import</span> <span class="n">Container</span>
+<span class="kn">from</span> <span class="nn">proton.handlers</span> <span class="kn">import</span> <span class="n">MessagingHandler</span><span class="p">,</span> <span class="n">TransactionHandler</span>
+
+<span class="k">class</span> <span class="nc">TxRecv</span><span class="p">(</span><span class="n">MessagingHandler</span><span class="p">,</span> <span class="n">TransactionHandler</span><span class="p">):</span>
+    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">url</span><span class="p">,</span> <span class="n">messages</span><span class="p">,</span> <span class="n">batch_size</span><span class="p">):</span>
+        <span class="nb">super</span><span class="p">(</span><span class="n">TxRecv</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">__init__</span><span class="p">(</span><span class="n">prefetch</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">auto_accept</span><span class="o">=</span><span class="bp">False</span><span class="p">)</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">url</span> <span class="o">=</span> <span class="n">Url</span><span class="p">(</span><span class="n">url</span><span class="p">)</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">expected</span> <span class="o">=</span> <span class="n">messages</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">batch_size</span> <span class="o">=</span> <span class="n">batch_size</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">current_batch</span> <span class="o">=</span> <span class="mi">0</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">committed</span> <span class="o">=</span> <span class="mi">0</span>
+
+    <span class="k">def</span> <span class="nf">on_start</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">container</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">container</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">conn</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">container</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">url</span><span class="p">)</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">receiver</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">container</span><span class="o">.</span><span class="n">create_receiver</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">conn</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">url</span><span class="o">.</span><span class="n">path</span><span class="p">)</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">container</span><span class="o">.</span><span class="n">declare_transaction</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">conn</span><span class="p">,</span> <span class="n">handler</span><span class="o">=</span><span class="bp">self</span><span class="p">)</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">transaction</span> <span class="o">=</span> <span class="bp">None</span>
+
+    <span class="k">def</span> <span class="nf">on_message</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="k">print</span><span class="p">(</span><span class="n">event</span><span class="o">.</span><span class="n">message</span><span class="o">.</span><span class="n">body</span><span class="p">)</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">transaction</span><span class="o">.</span><span class="n">accept</span><span class="p">(</span><span class="n">event</span><span class="o">.</span><span class="n">delivery</span><span class="p">)</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">current_batch</span> <span class="o">+=</span> <span class="mi">1</span>
+        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">current_batch</span> <span class="o">==</span> <span class="bp">self</span><span class="o">.</span><span class="n">batch_size</span><span class="p">:</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">transaction</span><span class="o">.</span><span class="n">commit</span><span class="p">()</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">transaction</span> <span class="o">=</span> <span class="bp">None</span>
+
+    <span class="k">def</span> <span class="nf">on_transaction_declared</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">receiver</span><span class="o">.</span><span class="n">flow</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">batch_size</span><span class="p">)</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">transaction</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">transaction</span>
+
+    <span class="k">def</span> <span class="nf">on_transaction_committed</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">committed</span> <span class="o">+=</span> <span class="bp">self</span><span class="o">.</span><span class="n">current_batch</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">current_batch</span> <span class="o">=</span> <span class="mi">0</span>
+        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">expected</span> <span class="o">==</span> <span class="mi">0</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">committed</span> <span class="o">&lt;</span> <span class="bp">self</span><span class="o">.</span><span class="n">expected</span><span class="p">:</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">container</span><span class="o">.</span><span class="n">declare_transaction</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">conn</span><span class="p">,</span> <span class="n">handler</span><span class="o">=</span><span class="bp">self</span><span class="p">)</span>
+        <span class="k">else</span><span class="p">:</span>
+            <span class="n">event</span><span class="o">.</span><span class="n">connection</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
+
+    <span class="k">def</span> <span class="nf">on_disconnected</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">current_batch</span> <span class="o">=</span> <span class="mi">0</span>
+
+<span class="n">parser</span> <span class="o">=</span> <span class="n">optparse</span><span class="o">.</span><span class="n">OptionParser</span><span class="p">(</span><span class="n">usage</span><span class="o">=</span><span class="s2">&quot;usage: %prog [options]&quot;</span><span class="p">)</span>
+<span class="n">parser</span><span class="o">.</span><span class="n">add_option</span><span class="p">(</span><span class="s2">&quot;-a&quot;</span><span class="p">,</span> <span class="s2">&quot;--address&quot;</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="s2">&quot;localhost:5672/examples&quot;</span><span class="p">,</span>
+                  <span class="n">help</span><span class="o">=</span><span class="s2">&quot;address from which messages are received (default </span><span class="si">%d</span><span class="s2">efault)&quot;</span><span class="p">)</span>
+<span class="n">parser</span><span class="o">.</span><span class="n">add_option</span><span class="p">(</span><span class="s2">&quot;-m&quot;</span><span class="p">,</span> <span class="s2">&quot;--messages&quot;</span><span class="p">,</span> <span class="nb">type</span><span class="o">=</span><span class="s2">&quot;int&quot;</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="mi">100</span><span class="p">,</span>
+                  <span class="n">help</span><span class="o">=</span><span class="s2">&quot;number of messages to receive; 0 receives indefinitely (default </span><span class="si">%d</span><span class="s2">efault)&quot;</span><span class="p">)</span>
+<span class="n">parser</span><span class="o">.</span><span class="n">add_option</span><span class="p">(</span><span class="s2">&quot;-b&quot;</span><span class="p">,</span> <span class="s2">&quot;--batch-size&quot;</span><span class="p">,</span> <span class="nb">type</span><span class="o">=</span><span class="s2">&quot;int&quot;</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="mi">10</span><span class="p">,</span>
+                  <span class="n">help</span><span class="o">=</span><span class="s2">&quot;number of messages in each transaction (default </span><span class="si">%d</span><span class="s2">efault)&quot;</span><span class="p">)</span>
+<span class="n">opts</span><span class="p">,</span> <span class="n">args</span> <span class="o">=</span> <span class="n">parser</span><span class="o">.</span><span class="n">parse_args</span><span class="p">()</span>
+
+<span class="k">try</span><span class="p">:</span>
+    <span class="n">Container</span><span class="p">(</span><span class="n">TxRecv</span><span class="p">(</span><span class="n">opts</span><span class="o">.</span><span class="n">address</span><span class="p">,</span> <span class="n">opts</span><span class="o">.</span><span class="n">messages</span><span class="p">,</span> <span class="n">opts</span><span class="o">.</span><span class="n">batch_size</span><span class="p">))</span><span class="o">.</span><span class="n">run</span><span class="p">()</span>
+<span class="k">except</span> <span class="ne">KeyboardInterrupt</span><span class="p">:</span> <span class="k">pass</span>
+</pre></div>
+
+<p><a href="tx_recv.py">Download this file</a></p>

http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/input/releases/qpid-proton-0.13.0/proton/python/examples/tx_recv_interactive.py
----------------------------------------------------------------------
diff --git a/input/releases/qpid-proton-0.13.0/proton/python/examples/tx_recv_interactive.py b/input/releases/qpid-proton-0.13.0/proton/python/examples/tx_recv_interactive.py
new file mode 100755
index 0000000..c38f651
--- /dev/null
+++ b/input/releases/qpid-proton-0.13.0/proton/python/examples/tx_recv_interactive.py
@@ -0,0 +1,85 @@
+#!/usr/bin/env python
+#
+# 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.
+#
+
+from __future__ import print_function
+import sys
+import threading
+from proton.reactor import ApplicationEvent, Container, EventInjector
+from proton.handlers import MessagingHandler, TransactionHandler
+
+class TxRecv(MessagingHandler, TransactionHandler):
+    def __init__(self):
+        super(TxRecv, self).__init__(prefetch=0, auto_accept=False)
+
+    def on_start(self, event):
+        self.container = event.container
+        self.conn = self.container.connect("localhost:5672")
+        self.receiver = self.container.create_receiver(self.conn, "examples")
+        self.container.declare_transaction(self.conn, handler=self, settle_before_discharge=True)
+        self.transaction = None
+
+    def on_message(self, event):
+        print(event.message.body)
+        self.transaction.accept(event.delivery)
+
+    def on_transaction_declared(self, event):
+        self.transaction = event.transaction
+        print("transaction declared")
+
+    def on_transaction_committed(self, event):
+        print("transaction committed")
+        self.container.declare_transaction(self.conn, handler=self)
+
+    def on_transaction_aborted(self, event):
+        print("transaction aborted")
+        self.container.declare_transaction(self.conn, handler=self)
+
+    def on_commit(self, event):
+        self.transaction.commit()
+
+    def on_abort(self, event):
+        self.transaction.abort()
+
+    def on_fetch(self, event):
+        self.receiver.flow(1)
+
+    def on_quit(self, event):
+        c = self.receiver.connection
+        self.receiver.close()
+        c.close()
+
+try:
+    reactor = Container(TxRecv())
+    events = EventInjector()
+    reactor.selectable(events)
+    thread = threading.Thread(target=reactor.run)
+    thread.daemon=True
+    thread.start()
+
+    print("Enter 'fetch', 'commit' or 'abort'")
+    while True:
+        line = sys.stdin.readline()
+        if line:
+            events.trigger(ApplicationEvent(line.strip()))
+        else:
+            break
+except KeyboardInterrupt: pass
+
+

http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/input/releases/qpid-proton-0.13.0/proton/python/examples/tx_recv_interactive.py.html.in
----------------------------------------------------------------------
diff --git a/input/releases/qpid-proton-0.13.0/proton/python/examples/tx_recv_interactive.py.html.in b/input/releases/qpid-proton-0.13.0/proton/python/examples/tx_recv_interactive.py.html.in
new file mode 100644
index 0000000..ac7bec0
--- /dev/null
+++ b/input/releases/qpid-proton-0.13.0/proton/python/examples/tx_recv_interactive.py.html.in
@@ -0,0 +1,68 @@
+
+<h1>tx_recv_interactive.py</h1>
+<div class="highlight"><pre><span></span><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>
+<span class="kn">import</span> <span class="nn">threading</span>
+<span class="kn">from</span> <span class="nn">proton.reactor</span> <span class="kn">import</span> <span class="n">ApplicationEvent</span><span class="p">,</span> <span class="n">Container</span><span class="p">,</span> <span class="n">EventInjector</span>
+<span class="kn">from</span> <span class="nn">proton.handlers</span> <span class="kn">import</span> <span class="n">MessagingHandler</span><span class="p">,</span> <span class="n">TransactionHandler</span>
+
+<span class="k">class</span> <span class="nc">TxRecv</span><span class="p">(</span><span class="n">MessagingHandler</span><span class="p">,</span> <span class="n">TransactionHandler</span><span class="p">):</span>
+    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="nb">super</span><span class="p">(</span><span class="n">TxRecv</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">__init__</span><span class="p">(</span><span class="n">prefetch</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">auto_accept</span><span class="o">=</span><span class="bp">False</span><span class="p">)</span>
+
+    <span class="k">def</span> <span class="nf">on_start</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">container</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">container</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">conn</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">container</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="s2">&quot;localhost:5672&quot;</span><span class="p">)</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">receiver</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">container</span><span class="o">.</span><span class="n">create_receiver</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">conn</span><span class="p">,</span> <span class="s2">&quot;examples&quot;</span><span class="p">)</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">container</span><span class="o">.</span><span class="n">declare_transaction</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">conn</span><span class="p">,</span> <span class="n">handler</span><span class="o">=</span><span class="bp">self</span><span class="p">,</span> <span class="n">settle_before_discharge</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">transaction</span> <span class="o">=</span> <span class="bp">None</span>
+
+    <span class="k">def</span> <span class="nf">on_message</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="k">print</span><span class="p">(</span><span class="n">event</span><span class="o">.</span><span class="n">message</span><span class="o">.</span><span class="n">body</span><span class="p">)</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">transaction</span><span class="o">.</span><span class="n">accept</span><span class="p">(</span><span class="n">event</span><span class="o">.</span><span class="n">delivery</span><span class="p">)</span>
+
+    <span class="k">def</span> <span class="nf">on_transaction_declared</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">transaction</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">transaction</span>
+        <span class="k">print</span><span class="p">(</span><span class="s2">&quot;transaction declared&quot;</span><span class="p">)</span>
+
+    <span class="k">def</span> <span class="nf">on_transaction_committed</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="k">print</span><span class="p">(</span><span class="s2">&quot;transaction committed&quot;</span><span class="p">)</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">container</span><span class="o">.</span><span class="n">declare_transaction</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">conn</span><span class="p">,</span> <span class="n">handler</span><span class="o">=</span><span class="bp">self</span><span class="p">)</span>
+
+    <span class="k">def</span> <span class="nf">on_transaction_aborted</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="k">print</span><span class="p">(</span><span class="s2">&quot;transaction aborted&quot;</span><span class="p">)</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">container</span><span class="o">.</span><span class="n">declare_transaction</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">conn</span><span class="p">,</span> <span class="n">handler</span><span class="o">=</span><span class="bp">self</span><span class="p">)</span>
+
+    <span class="k">def</span> <span class="nf">on_commit</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">transaction</span><span class="o">.</span><span class="n">commit</span><span class="p">()</span>
+
+    <span class="k">def</span> <span class="nf">on_abort</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">transaction</span><span class="o">.</span><span class="n">abort</span><span class="p">()</span>
+
+    <span class="k">def</span> <span class="nf">on_fetch</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">receiver</span><span class="o">.</span><span class="n">flow</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span>
+
+    <span class="k">def</span> <span class="nf">on_quit</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="n">c</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">receiver</span><span class="o">.</span><span class="n">connection</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">receiver</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
+        <span class="n">c</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
+
+<span class="k">try</span><span class="p">:</span>
+    <span class="n">reactor</span> <span class="o">=</span> <span class="n">Container</span><span class="p">(</span><span class="n">TxRecv</span><span class="p">())</span>
+    <span class="n">events</span> <span class="o">=</span> <span class="n">EventInjector</span><span class="p">()</span>
+    <span class="n">reactor</span><span class="o">.</span><span class="n">selectable</span><span class="p">(</span><span class="n">events</span><span class="p">)</span>
+    <span class="n">thread</span> <span class="o">=</span> <span class="n">threading</span><span class="o">.</span><span class="n">Thread</span><span class="p">(</span><span class="n">target</span><span class="o">=</span><span class="n">reactor</span><span class="o">.</span><span class="n">run</span><span class="p">)</span>
+    <span class="n">thread</span><span class="o">.</span><span class="n">daemon</span><span class="o">=</span><span class="bp">True</span>
+    <span class="n">thread</span><span class="o">.</span><span class="n">start</span><span class="p">()</span>
+
+    <span class="k">print</span><span class="p">(</span><span class="s2">&quot;Enter &#39;fetch&#39;, &#39;commit&#39; or &#39;abort&#39;&quot;</span><span class="p">)</span>
+    <span class="k">while</span> <span class="bp">True</span><span class="p">:</span>
+        <span class="n">line</span> <span class="o">=</span> <span class="n">sys</span><span class="o">.</span><span class="n">stdin</span><span class="o">.</span><span class="n">readline</span><span class="p">()</span>
+        <span class="k">if</span> <span class="n">line</span><span class="p">:</span>
+            <span class="n">events</span><span class="o">.</span><span class="n">trigger</span><span class="p">(</span><span class="n">ApplicationEvent</span><span class="p">(</span><span class="n">line</span><span class="o">.</span><span class="n">strip</span><span class="p">()))</span>
+        <span class="k">else</span><span class="p">:</span>
+            <span class="k">break</span>
+<span class="k">except</span> <span class="ne">KeyboardInterrupt</span><span class="p">:</span> <span class="k">pass</span>
+</pre></div>
+
+<p><a href="tx_recv_interactive.py">Download this file</a></p>

http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/input/releases/qpid-proton-0.13.0/proton/python/examples/tx_send.py
----------------------------------------------------------------------
diff --git a/input/releases/qpid-proton-0.13.0/proton/python/examples/tx_send.py b/input/releases/qpid-proton-0.13.0/proton/python/examples/tx_send.py
new file mode 100755
index 0000000..bda6780
--- /dev/null
+++ b/input/releases/qpid-proton-0.13.0/proton/python/examples/tx_send.py
@@ -0,0 +1,89 @@
+#!/usr/bin/env python
+#
+# 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.
+#
+
+from __future__ import print_function, unicode_literals
+import optparse
+from proton import Message, Url
+from proton.reactor import Container
+from proton.handlers import MessagingHandler, TransactionHandler
+
+class TxSend(MessagingHandler, TransactionHandler):
+    def __init__(self, url, messages, batch_size):
+        super(TxSend, self).__init__()
+        self.url = Url(url)
+        self.current_batch = 0
+        self.committed = 0
+        self.confirmed = 0
+        self.total = messages
+        self.batch_size = batch_size
+
+    def on_start(self, event):
+        self.container = event.container
+        self.conn = self.container.connect(self.url)
+        self.sender = self.container.create_sender(self.conn, self.url.path)
+        self.container.declare_transaction(self.conn, handler=self)
+        self.transaction = None
+
+    def on_transaction_declared(self, event):
+        self.transaction = event.transaction
+        self.send()
+
+    def on_sendable(self, event):
+        self.send()
+
+    def send(self):
+        while self.transaction and self.sender.credit and (self.committed + self.current_batch) < self.total:
+            seq = self.committed + self.current_batch + 1
+            msg = Message(id=seq, body={'sequence':seq})
+            self.transaction.send(self.sender, msg)
+            self.current_batch += 1
+            if self.current_batch == self.batch_size:
+                self.transaction.commit()
+                self.transaction = None
+
+    def on_accepted(self, event):
+        if event.sender == self.sender:
+            self.confirmed += 1
+
+    def on_transaction_committed(self, event):
+        self.committed += self.current_batch
+        if self.committed == self.total:
+            print("all messages committed")
+            event.connection.close()
+        else:
+            self.current_batch = 0
+            self.container.declare_transaction(self.conn, handler=self)
+
+    def on_disconnected(self, event):
+        self.current_batch = 0
+
+parser = optparse.OptionParser(usage="usage: %prog [options]",
+                               description="Send messages transactionally to the supplied address.")
+parser.add_option("-a", "--address", default="localhost:5672/examples",
+                  help="address to which messages are sent (default %default)")
+parser.add_option("-m", "--messages", type="int", default=100,
+                  help="number of messages to send (default %default)")
+parser.add_option("-b", "--batch-size", type="int", default=10,
+                  help="number of messages in each transaction (default %default)")
+opts, args = parser.parse_args()
+
+try:
+    Container(TxSend(opts.address, opts.messages, opts.batch_size)).run()
+except KeyboardInterrupt: pass

http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/input/releases/qpid-proton-0.13.0/proton/python/examples/tx_send.py.html.in
----------------------------------------------------------------------
diff --git a/input/releases/qpid-proton-0.13.0/proton/python/examples/tx_send.py.html.in b/input/releases/qpid-proton-0.13.0/proton/python/examples/tx_send.py.html.in
new file mode 100644
index 0000000..1f54fb9
--- /dev/null
+++ b/input/releases/qpid-proton-0.13.0/proton/python/examples/tx_send.py.html.in
@@ -0,0 +1,74 @@
+
+<h1>tx_send.py</h1>
+<div class="highlight"><pre><span></span><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>
+<span class="kn">from</span> <span class="nn">proton</span> <span class="kn">import</span> <span class="n">Message</span><span class="p">,</span> <span class="n">Url</span>
+<span class="kn">from</span> <span class="nn">proton.reactor</span> <span class="kn">import</span> <span class="n">Container</span>
+<span class="kn">from</span> <span class="nn">proton.handlers</span> <span class="kn">import</span> <span class="n">MessagingHandler</span><span class="p">,</span> <span class="n">TransactionHandler</span>
+
+<span class="k">class</span> <span class="nc">TxSend</span><span class="p">(</span><span class="n">MessagingHandler</span><span class="p">,</span> <span class="n">TransactionHandler</span><span class="p">):</span>
+    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">url</span><span class="p">,</span> <span class="n">messages</span><span class="p">,</span> <span class="n">batch_size</span><span class="p">):</span>
+        <span class="nb">super</span><span class="p">(</span><span class="n">TxSend</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">__init__</span><span class="p">()</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">url</span> <span class="o">=</span> <span class="n">Url</span><span class="p">(</span><span class="n">url</span><span class="p">)</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">current_batch</span> <span class="o">=</span> <span class="mi">0</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">committed</span> <span class="o">=</span> <span class="mi">0</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">confirmed</span> <span class="o">=</span> <span class="mi">0</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">total</span> <span class="o">=</span> <span class="n">messages</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">batch_size</span> <span class="o">=</span> <span class="n">batch_size</span>
+
+    <span class="k">def</span> <span class="nf">on_start</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">container</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">container</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">conn</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">container</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">url</span><span class="p">)</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">sender</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">container</span><span class="o">.</span><span class="n">create_sender</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">conn</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">url</span><span class="o">.</span><span class="n">path</span><span class="p">)</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">container</span><span class="o">.</span><span class="n">declare_transaction</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">conn</span><span class="p">,</span> <span class="n">handler</span><span class="o">=</span><span class="bp">self</span><span class="p">)</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">transaction</span> <span class="o">=</span> <span class="bp">None</span>
+
+    <span class="k">def</span> <span class="nf">on_transaction_declared</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">transaction</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">transaction</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">send</span><span class="p">()</span>
+
+    <span class="k">def</span> <span class="nf">on_sendable</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">send</span><span class="p">()</span>
+
+    <span class="k">def</span> <span class="nf">send</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">transaction</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">sender</span><span class="o">.</span><span class="n">credit</span> <span class="ow">and</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">committed</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">current_batch</span><span class="p">)</span> <span class="o">&lt;</span> <span class="bp">self</span><span class="o">.</span><span class="n">total</span><span class="p">:</span>
+            <span class="n">seq</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">committed</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">current_batch</span> <span class="o">+</span> <span class="mi">1</span>
+            <span class="n">msg</span> <span class="o">=</span> <span class="n">Message</span><span class="p">(</span><span class="nb">id</span><span class="o">=</span><span class="n">seq</span><span class="p">,</span> <span class="n">body</span><span class="o">=</span><span class="p">{</span><span class="s1">&#39;sequence&#39;</span><span class="p">:</span><span class="n">seq</span><span class="p">})</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">transaction</span><span class="o">.</span><span class="n">send</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">sender</span><span class="p">,</span> <span class="n">msg</span><span class="p">)</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">current_batch</span> <span class="o">+=</span> <span class="mi">1</span>
+            <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">current_batch</span> <span class="o">==</span> <span class="bp">self</span><span class="o">.</span><span class="n">batch_size</span><span class="p">:</span>
+                <span class="bp">self</span><span class="o">.</span><span class="n">transaction</span><span class="o">.</span><span class="n">commit</span><span class="p">()</span>
+                <span class="bp">self</span><span class="o">.</span><span class="n">transaction</span> <span class="o">=</span> <span class="bp">None</span>
+
+    <span class="k">def</span> <span class="nf">on_accepted</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="k">if</span> <span class="n">event</span><span class="o">.</span><span class="n">sender</span> <span class="o">==</span> <span class="bp">self</span><span class="o">.</span><span class="n">sender</span><span class="p">:</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">confirmed</span> <span class="o">+=</span> <span class="mi">1</span>
+
+    <span class="k">def</span> <span class="nf">on_transaction_committed</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">committed</span> <span class="o">+=</span> <span class="bp">self</span><span class="o">.</span><span class="n">current_batch</span>
+        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">committed</span> <span class="o">==</span> <span class="bp">self</span><span class="o">.</span><span class="n">total</span><span class="p">:</span>
+            <span class="k">print</span><span class="p">(</span><span class="s2">&quot;all messages committed&quot;</span><span class="p">)</span>
+            <span class="n">event</span><span class="o">.</span><span class="n">connection</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
+        <span class="k">else</span><span class="p">:</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">current_batch</span> <span class="o">=</span> <span class="mi">0</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">container</span><span class="o">.</span><span class="n">declare_transaction</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">conn</span><span class="p">,</span> <span class="n">handler</span><span class="o">=</span><span class="bp">self</span><span class="p">)</span>
+
+    <span class="k">def</span> <span class="nf">on_disconnected</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">current_batch</span> <span class="o">=</span> <span class="mi">0</span>
+
+<span class="n">parser</span> <span class="o">=</span> <span class="n">optparse</span><span class="o">.</span><span class="n">OptionParser</span><span class="p">(</span><span class="n">usage</span><span class="o">=</span><span class="s2">&quot;usage: %prog [options]&quot;</span><span class="p">,</span>
+                               <span class="n">description</span><span class="o">=</span><span class="s2">&quot;Send messages transactionally to the supplied address.&quot;</span><span class="p">)</span>
+<span class="n">parser</span><span class="o">.</span><span class="n">add_option</span><span class="p">(</span><span class="s2">&quot;-a&quot;</span><span class="p">,</span> <span class="s2">&quot;--address&quot;</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="s2">&quot;localhost:5672/examples&quot;</span><span class="p">,</span>
+                  <span class="n">help</span><span class="o">=</span><span class="s2">&quot;address to which messages are sent (default </span><span class="si">%d</span><span class="s2">efault)&quot;</span><span class="p">)</span>
+<span class="n">parser</span><span class="o">.</span><span class="n">add_option</span><span class="p">(</span><span class="s2">&quot;-m&quot;</span><span class="p">,</span> <span class="s2">&quot;--messages&quot;</span><span class="p">,</span> <span class="nb">type</span><span class="o">=</span><span class="s2">&quot;int&quot;</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="mi">100</span><span class="p">,</span>
+                  <span class="n">help</span><span class="o">=</span><span class="s2">&quot;number of messages to send (default </span><span class="si">%d</span><span class="s2">efault)&quot;</span><span class="p">)</span>
+<span class="n">parser</span><span class="o">.</span><span class="n">add_option</span><span class="p">(</span><span class="s2">&quot;-b&quot;</span><span class="p">,</span> <span class="s2">&quot;--batch-size&quot;</span><span class="p">,</span> <span class="nb">type</span><span class="o">=</span><span class="s2">&quot;int&quot;</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="mi">10</span><span class="p">,</span>
+                  <span class="n">help</span><span class="o">=</span><span class="s2">&quot;number of messages in each transaction (default </span><span class="si">%d</span><span class="s2">efault)&quot;</span><span class="p">)</span>
+<span class="n">opts</span><span class="p">,</span> <span class="n">args</span> <span class="o">=</span> <span class="n">parser</span><span class="o">.</span><span class="n">parse_args</span><span class="p">()</span>
+
+<span class="k">try</span><span class="p">:</span>
+    <span class="n">Container</span><span class="p">(</span><span class="n">TxSend</span><span class="p">(</span><span class="n">opts</span><span class="o">.</span><span class="n">address</span><span class="p">,</span> <span class="n">opts</span><span class="o">.</span><span class="n">messages</span><span class="p">,</span> <span class="n">opts</span><span class="o">.</span><span class="n">batch_size</span><span class="p">))</span><span class="o">.</span><span class="n">run</span><span class="p">()</span>
+<span class="k">except</span> <span class="ne">KeyboardInterrupt</span><span class="p">:</span> <span class="k">pass</span>
+</pre></div>
+
+<p><a href="tx_send.py">Download this file</a></p>


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


[14/26] qpid-site git commit: QPID-7350: Examples that should have gone with the previous commit

Posted by jr...@apache.org.
http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/content/releases/qpid-proton-0.13.0/proton/python/examples/recurring_timer_tornado.py.html
----------------------------------------------------------------------
diff --git a/content/releases/qpid-proton-0.13.0/proton/python/examples/recurring_timer_tornado.py.html b/content/releases/qpid-proton-0.13.0/proton/python/examples/recurring_timer_tornado.py.html
new file mode 100644
index 0000000..2a1b0d9
--- /dev/null
+++ b/content/releases/qpid-proton-0.13.0/proton/python/examples/recurring_timer_tornado.py.html
@@ -0,0 +1,172 @@
+<!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>recurring_timer_tornado.py - 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/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;">
+        <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-proton-0.13.0/index.html">Qpid Proton 0.13.0</a></li><li><a href="/releases/qpid-proton-0.13.0/proton/python/examples/index.html">Proton Python Examples</a></li><li>recurring_timer_tornado.py</li></ul>
+
+        <div id="-middle-content">
+          
+<h1>recurring_timer_tornado.py</h1>
+<div class="highlight"><pre><span></span><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">time</span>
+<span class="kn">from</span> <span class="nn">proton.reactor</span> <span class="kn">import</span> <span class="n">Handler</span>
+<span class="kn">from</span> <span class="nn">proton_tornado</span> <span class="kn">import</span> <span class="n">TornadoLoop</span>
+
+<span class="k">class</span> <span class="nc">Recurring</span><span class="p">(</span><span class="n">Handler</span><span class="p">):</span>
+    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">period</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">period</span> <span class="o">=</span> <span class="n">period</span>
+
+    <span class="k">def</span> <span class="nf">on_start</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">container</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">container</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">container</span><span class="o">.</span><span class="n">schedule</span><span class="p">(</span><span class="n">time</span><span class="o">.</span><span class="n">time</span><span class="p">()</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">period</span><span class="p">,</span> <span class="n">subject</span><span class="o">=</span><span class="bp">self</span><span class="p">)</span>
+
+    <span class="k">def</span> <span class="nf">on_timer</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="k">print</span><span class="p">(</span><span class="s2">&quot;Tick...&quot;</span><span class="p">)</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">container</span><span class="o">.</span><span class="n">schedule</span><span class="p">(</span><span class="n">time</span><span class="o">.</span><span class="n">time</span><span class="p">()</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">period</span><span class="p">,</span> <span class="n">subject</span><span class="o">=</span><span class="bp">self</span><span class="p">)</span>
+
+<span class="k">try</span><span class="p">:</span>
+    <span class="n">container</span> <span class="o">=</span> <span class="n">TornadoLoop</span><span class="p">(</span><span class="n">Recurring</span><span class="p">(</span><span class="mf">1.0</span><span class="p">))</span>
+    <span class="n">container</span><span class="o">.</span><span class="n">run</span><span class="p">()</span>
+<span class="k">except</span> <span class="ne">KeyboardInterrupt</span><span class="p">:</span>
+    <span class="n">container</span><span class="o">.</span><span class="n">stop</span><span class="p">()</span>
+    <span class="k">print</span><span class="p">()</span>
+</pre></div>
+
+<p><a href="recurring_timer_tornado.py">Download this file</a></p>
+
+
+          <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/75ca8b14/content/releases/qpid-proton-0.13.0/proton/python/examples/selected_recv.py
----------------------------------------------------------------------
diff --git a/content/releases/qpid-proton-0.13.0/proton/python/examples/selected_recv.py b/content/releases/qpid-proton-0.13.0/proton/python/examples/selected_recv.py
new file mode 100755
index 0000000..dc062d5
--- /dev/null
+++ b/content/releases/qpid-proton-0.13.0/proton/python/examples/selected_recv.py
@@ -0,0 +1,41 @@
+#!/usr/bin/env python
+#
+# 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.
+#
+
+from __future__ import print_function
+from proton.reactor import Container, Selector
+from proton.handlers import MessagingHandler
+
+class Recv(MessagingHandler):
+    def __init__(self):
+        super(Recv, self).__init__()
+
+    def on_start(self, event):
+        conn = event.container.connect("localhost:5672")
+        event.container.create_receiver(conn, "examples", options=Selector("colour = 'green'"))
+
+    def on_message(self, event):
+        print(event.message.body)
+
+try:
+    Container(Recv()).run()
+except KeyboardInterrupt: pass
+
+
+

http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/content/releases/qpid-proton-0.13.0/proton/python/examples/selected_recv.py.html
----------------------------------------------------------------------
diff --git a/content/releases/qpid-proton-0.13.0/proton/python/examples/selected_recv.py.html b/content/releases/qpid-proton-0.13.0/proton/python/examples/selected_recv.py.html
new file mode 100644
index 0000000..0522199
--- /dev/null
+++ b/content/releases/qpid-proton-0.13.0/proton/python/examples/selected_recv.py.html
@@ -0,0 +1,167 @@
+<!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>selected_recv.py - 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/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;">
+        <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-proton-0.13.0/index.html">Qpid Proton 0.13.0</a></li><li><a href="/releases/qpid-proton-0.13.0/proton/python/examples/index.html">Proton Python Examples</a></li><li>selected_recv.py</li></ul>
+
+        <div id="-middle-content">
+          
+<h1>selected_recv.py</h1>
+<div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">__future__</span> <span class="kn">import</span> <span class="n">print_function</span>
+<span class="kn">from</span> <span class="nn">proton.reactor</span> <span class="kn">import</span> <span class="n">Container</span><span class="p">,</span> <span class="n">Selector</span>
+<span class="kn">from</span> <span class="nn">proton.handlers</span> <span class="kn">import</span> <span class="n">MessagingHandler</span>
+
+<span class="k">class</span> <span class="nc">Recv</span><span class="p">(</span><span class="n">MessagingHandler</span><span class="p">):</span>
+    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="nb">super</span><span class="p">(</span><span class="n">Recv</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">__init__</span><span class="p">()</span>
+
+    <span class="k">def</span> <span class="nf">on_start</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="n">conn</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">container</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="s2">&quot;localhost:5672&quot;</span><span class="p">)</span>
+        <span class="n">event</span><span class="o">.</span><span class="n">container</span><span class="o">.</span><span class="n">create_receiver</span><span class="p">(</span><span class="n">conn</span><span class="p">,</span> <span class="s2">&quot;examples&quot;</span><span class="p">,</span> <span class="n">options</span><span class="o">=</span><span class="n">Selector</span><span class="p">(</span><span class="s2">&quot;colour = &#39;green&#39;&quot;</span><span class="p">))</span>
+
+    <span class="k">def</span> <span class="nf">on_message</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="k">print</span><span class="p">(</span><span class="n">event</span><span class="o">.</span><span class="n">message</span><span class="o">.</span><span class="n">body</span><span class="p">)</span>
+
+<span class="k">try</span><span class="p">:</span>
+    <span class="n">Container</span><span class="p">(</span><span class="n">Recv</span><span class="p">())</span><span class="o">.</span><span class="n">run</span><span class="p">()</span>
+<span class="k">except</span> <span class="ne">KeyboardInterrupt</span><span class="p">:</span> <span class="k">pass</span>
+</pre></div>
+
+<p><a href="selected_recv.py">Download this file</a></p>
+
+
+          <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/75ca8b14/content/releases/qpid-proton-0.13.0/proton/python/examples/server.py
----------------------------------------------------------------------
diff --git a/content/releases/qpid-proton-0.13.0/proton/python/examples/server.py b/content/releases/qpid-proton-0.13.0/proton/python/examples/server.py
new file mode 100755
index 0000000..8cebaad
--- /dev/null
+++ b/content/releases/qpid-proton-0.13.0/proton/python/examples/server.py
@@ -0,0 +1,49 @@
+#!/usr/bin/env python
+#
+# 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.
+#
+
+from __future__ import print_function
+from proton import Message
+from proton.handlers import MessagingHandler
+from proton.reactor import Container
+
+class Server(MessagingHandler):
+    def __init__(self, url, address):
+        super(Server, self).__init__()
+        self.url = url
+        self.address = address
+
+    def on_start(self, event):
+        print("Listening on", self.url)
+        self.container = event.container
+        self.conn = event.container.connect(self.url)
+        self.receiver = event.container.create_receiver(self.conn, self.address)
+        self.server = self.container.create_sender(self.conn, None)
+
+    def on_message(self, event):
+        print("Received", event.message)
+        self.server.send(Message(address=event.message.reply_to, body=event.message.body.upper(),
+                            correlation_id=event.message.correlation_id))
+
+try:
+    Container(Server("0.0.0.0:5672", "examples")).run()
+except KeyboardInterrupt: pass
+
+
+

http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/content/releases/qpid-proton-0.13.0/proton/python/examples/server.py.html
----------------------------------------------------------------------
diff --git a/content/releases/qpid-proton-0.13.0/proton/python/examples/server.py.html b/content/releases/qpid-proton-0.13.0/proton/python/examples/server.py.html
new file mode 100644
index 0000000..c51ecc6
--- /dev/null
+++ b/content/releases/qpid-proton-0.13.0/proton/python/examples/server.py.html
@@ -0,0 +1,175 @@
+<!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>server.py - 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/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;">
+        <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-proton-0.13.0/index.html">Qpid Proton 0.13.0</a></li><li><a href="/releases/qpid-proton-0.13.0/proton/python/examples/index.html">Proton Python Examples</a></li><li>server.py</li></ul>
+
+        <div id="-middle-content">
+          
+<h1>server.py</h1>
+<div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">__future__</span> <span class="kn">import</span> <span class="n">print_function</span>
+<span class="kn">from</span> <span class="nn">proton</span> <span class="kn">import</span> <span class="n">Message</span>
+<span class="kn">from</span> <span class="nn">proton.handlers</span> <span class="kn">import</span> <span class="n">MessagingHandler</span>
+<span class="kn">from</span> <span class="nn">proton.reactor</span> <span class="kn">import</span> <span class="n">Container</span>
+
+<span class="k">class</span> <span class="nc">Server</span><span class="p">(</span><span class="n">MessagingHandler</span><span class="p">):</span>
+    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">url</span><span class="p">,</span> <span class="n">address</span><span class="p">):</span>
+        <span class="nb">super</span><span class="p">(</span><span class="n">Server</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">__init__</span><span class="p">()</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">url</span> <span class="o">=</span> <span class="n">url</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">address</span> <span class="o">=</span> <span class="n">address</span>
+
+    <span class="k">def</span> <span class="nf">on_start</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="k">print</span><span class="p">(</span><span class="s2">&quot;Listening on&quot;</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">url</span><span class="p">)</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">container</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">container</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">conn</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">container</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">url</span><span class="p">)</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">receiver</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">container</span><span class="o">.</span><span class="n">create_receiver</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">conn</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">address</span><span class="p">)</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">server</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">container</span><span class="o">.</span><span class="n">create_sender</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">conn</span><span class="p">,</span> <span class="bp">None</span><span class="p">)</span>
+
+    <span class="k">def</span> <span class="nf">on_message</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="k">print</span><span class="p">(</span><span class="s2">&quot;Received&quot;</span><span class="p">,</span> <span class="n">event</span><span class="o">.</span><span class="n">message</span><span class="p">)</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">server</span><span class="o">.</span><span class="n">send</span><span class="p">(</span><span class="n">Message</span><span class="p">(</span><span class="n">address</span><span class="o">=</span><span class="n">event</span><span class="o">.</span><span class="n">message</span><span class="o">.</span><span class="n">reply_to</span><span class="p">,</span> <span class="n">body</span><span class="o">=</span><span class="n">event</span><span class="o">.</span><span class="n">message</span><span class="o">.</span><span class="n">body</span><span class="o">.</span><span class="n">upper</span><span class="p">(),</span>
+                            <span class="n">correlation_id</span><span class="o">=</span><span class="n">event</span><span class="o">.</span><span class="n">message</span><span class="o">.</span><span class="n">correlation_id</span><span class="p">))</span>
+
+<span class="k">try</span><span class="p">:</span>
+    <span class="n">Container</span><span class="p">(</span><span class="n">Server</span><span class="p">(</span><span class="s2">&quot;0.0.0.0:5672&quot;</span><span class="p">,</span> <span class="s2">&quot;examples&quot;</span><span class="p">))</span><span class="o">.</span><span class="n">run</span><span class="p">()</span>
+<span class="k">except</span> <span class="ne">KeyboardInterrupt</span><span class="p">:</span> <span class="k">pass</span>
+</pre></div>
+
+<p><a href="server.py">Download this file</a></p>
+
+
+          <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/75ca8b14/content/releases/qpid-proton-0.13.0/proton/python/examples/server_direct.py
----------------------------------------------------------------------
diff --git a/content/releases/qpid-proton-0.13.0/proton/python/examples/server_direct.py b/content/releases/qpid-proton-0.13.0/proton/python/examples/server_direct.py
new file mode 100755
index 0000000..a9910f1
--- /dev/null
+++ b/content/releases/qpid-proton-0.13.0/proton/python/examples/server_direct.py
@@ -0,0 +1,64 @@
+#!/usr/bin/env python
+#
+# 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.
+#
+
+from __future__ import print_function
+from proton import generate_uuid, Message
+from proton.handlers import MessagingHandler
+from proton.reactor import Container
+
+class Server(MessagingHandler):
+    def __init__(self, url):
+        super(Server, self).__init__()
+        self.url = url
+        self.senders = {}
+
+    def on_start(self, event):
+        print("Listening on", self.url)
+        self.container = event.container
+        self.acceptor = event.container.listen(self.url)
+
+    def on_link_opening(self, event):
+        if event.link.is_sender:
+            if event.link.remote_source and event.link.remote_source.dynamic:
+                event.link.source.address = str(generate_uuid())
+                self.senders[event.link.source.address] = event.link
+            elif event.link.remote_target and event.link.remote_target.address:
+                event.link.target.address = event.link.remote_target.address
+                self.senders[event.link.remote_target.address] = event.link
+            elif event.link.remote_source:
+                event.link.source.address = event.link.remote_source.address
+        elif event.link.remote_target:
+            event.link.target.address = event.link.remote_target.address
+
+    def on_message(self, event):
+        print("Received", event.message)
+        sender = self.senders.get(event.message.reply_to)
+        if not sender:
+            print("No link for reply")
+            return
+        sender.send(Message(address=event.message.reply_to, body=event.message.body.upper(),
+                            correlation_id=event.message.correlation_id))
+
+try:
+    Container(Server("0.0.0.0:8888")).run()
+except KeyboardInterrupt: pass
+
+
+

http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/content/releases/qpid-proton-0.13.0/proton/python/examples/server_direct.py.html
----------------------------------------------------------------------
diff --git a/content/releases/qpid-proton-0.13.0/proton/python/examples/server_direct.py.html b/content/releases/qpid-proton-0.13.0/proton/python/examples/server_direct.py.html
new file mode 100644
index 0000000..d338a8b
--- /dev/null
+++ b/content/releases/qpid-proton-0.13.0/proton/python/examples/server_direct.py.html
@@ -0,0 +1,190 @@
+<!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>server_direct.py - 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/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;">
+        <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-proton-0.13.0/index.html">Qpid Proton 0.13.0</a></li><li><a href="/releases/qpid-proton-0.13.0/proton/python/examples/index.html">Proton Python Examples</a></li><li>server_direct.py</li></ul>
+
+        <div id="-middle-content">
+          
+<h1>server_direct.py</h1>
+<div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">__future__</span> <span class="kn">import</span> <span class="n">print_function</span>
+<span class="kn">from</span> <span class="nn">proton</span> <span class="kn">import</span> <span class="n">generate_uuid</span><span class="p">,</span> <span class="n">Message</span>
+<span class="kn">from</span> <span class="nn">proton.handlers</span> <span class="kn">import</span> <span class="n">MessagingHandler</span>
+<span class="kn">from</span> <span class="nn">proton.reactor</span> <span class="kn">import</span> <span class="n">Container</span>
+
+<span class="k">class</span> <span class="nc">Server</span><span class="p">(</span><span class="n">MessagingHandler</span><span class="p">):</span>
+    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">url</span><span class="p">):</span>
+        <span class="nb">super</span><span class="p">(</span><span class="n">Server</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">__init__</span><span class="p">()</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">url</span> <span class="o">=</span> <span class="n">url</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">senders</span> <span class="o">=</span> <span class="p">{}</span>
+
+    <span class="k">def</span> <span class="nf">on_start</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="k">print</span><span class="p">(</span><span class="s2">&quot;Listening on&quot;</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">url</span><span class="p">)</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">container</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">container</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">acceptor</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">container</span><span class="o">.</span><span class="n">listen</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">url</span><span class="p">)</span>
+
+    <span class="k">def</span> <span class="nf">on_link_opening</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="k">if</span> <span class="n">event</span><span class="o">.</span><span class="n">link</span><span class="o">.</span><span class="n">is_sender</span><span class="p">:</span>
+            <span class="k">if</span> <span class="n">event</span><span class="o">.</span><span class="n">link</span><span class="o">.</span><span class="n">remote_source</span> <span class="ow">and</span> <span class="n">event</span><span class="o">.</span><span class="n">link</span><span class="o">.</span><span class="n">remote_source</span><span class="o">.</span><span class="n">dynamic</span><span class="p">:</span>
+                <span class="n">event</span><span class="o">.</span><span class="n">link</span><span class="o">.</span><span class="n">source</span><span class="o">.</span><span class="n">address</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="n">generate_uuid</span><span class="p">())</span>
+                <span class="bp">self</span><span class="o">.</span><span class="n">senders</span><span class="p">[</span><span class="n">event</span><span class="o">.</span><span class="n">link</span><span class="o">.</span><span class="n">source</span><span class="o">.</span><span class="n">address</span><span class="p">]</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">link</span>
+            <span class="k">elif</span> <span class="n">event</span><span class="o">.</span><span class="n">link</span><span class="o">.</span><span class="n">remote_target</span> <span class="ow">and</span> <span class="n">event</span><span class="o">.</span><span class="n">link</span><span class="o">.</span><span class="n">remote_target</span><span class="o">.</span><span class="n">address</span><span class="p">:</span>
+                <span class="n">event</span><span class="o">.</span><span class="n">link</span><span class="o">.</span><span class="n">target</span><span class="o">.</span><span class="n">address</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">link</span><span class="o">.</span><span class="n">remote_target</span><span class="o">.</span><span class="n">address</span>
+                <span class="bp">self</span><span class="o">.</span><span class="n">senders</span><span class="p">[</span><span class="n">event</span><span class="o">.</span><span class="n">link</span><span class="o">.</span><span class="n">remote_target</span><span class="o">.</span><span class="n">address</span><span class="p">]</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">link</span>
+            <span class="k">elif</span> <span class="n">event</span><span class="o">.</span><span class="n">link</span><span class="o">.</span><span class="n">remote_source</span><span class="p">:</span>
+                <span class="n">event</span><span class="o">.</span><span class="n">link</span><span class="o">.</span><span class="n">source</span><span class="o">.</span><span class="n">address</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">link</span><span class="o">.</span><span class="n">remote_source</span><span class="o">.</span><span class="n">address</span>
+        <span class="k">elif</span> <span class="n">event</span><span class="o">.</span><span class="n">link</span><span class="o">.</span><span class="n">remote_target</span><span class="p">:</span>
+            <span class="n">event</span><span class="o">.</span><span class="n">link</span><span class="o">.</span><span class="n">target</span><span class="o">.</span><span class="n">address</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">link</span><span class="o">.</span><span class="n">remote_target</span><span class="o">.</span><span class="n">address</span>
+
+    <span class="k">def</span> <span class="nf">on_message</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="k">print</span><span class="p">(</span><span class="s2">&quot;Received&quot;</span><span class="p">,</span> <span class="n">event</span><span class="o">.</span><span class="n">message</span><span class="p">)</span>
+        <span class="n">sender</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">senders</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">event</span><span class="o">.</span><span class="n">message</span><span class="o">.</span><span class="n">reply_to</span><span class="p">)</span>
+        <span class="k">if</span> <span class="ow">not</span> <span class="n">sender</span><span class="p">:</span>
+            <span class="k">print</span><span class="p">(</span><span class="s2">&quot;No link for reply&quot;</span><span class="p">)</span>
+            <span class="k">return</span>
+        <span class="n">sender</span><span class="o">.</span><span class="n">send</span><span class="p">(</span><span class="n">Message</span><span class="p">(</span><span class="n">address</span><span class="o">=</span><span class="n">event</span><span class="o">.</span><span class="n">message</span><span class="o">.</span><span class="n">reply_to</span><span class="p">,</span> <span class="n">body</span><span class="o">=</span><span class="n">event</span><span class="o">.</span><span class="n">message</span><span class="o">.</span><span class="n">body</span><span class="o">.</span><span class="n">upper</span><span class="p">(),</span>
+                            <span class="n">correlation_id</span><span class="o">=</span><span class="n">event</span><span class="o">.</span><span class="n">message</span><span class="o">.</span><span class="n">correlation_id</span><span class="p">))</span>
+
+<span class="k">try</span><span class="p">:</span>
+    <span class="n">Container</span><span class="p">(</span><span class="n">Server</span><span class="p">(</span><span class="s2">&quot;0.0.0.0:8888&quot;</span><span class="p">))</span><span class="o">.</span><span class="n">run</span><span class="p">()</span>
+<span class="k">except</span> <span class="ne">KeyboardInterrupt</span><span class="p">:</span> <span class="k">pass</span>
+</pre></div>
+
+<p><a href="server_direct.py">Download this file</a></p>
+
+
+          <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/75ca8b14/content/releases/qpid-proton-0.13.0/proton/python/examples/server_tx.py
----------------------------------------------------------------------
diff --git a/content/releases/qpid-proton-0.13.0/proton/python/examples/server_tx.py b/content/releases/qpid-proton-0.13.0/proton/python/examples/server_tx.py
new file mode 100755
index 0000000..51e734c
--- /dev/null
+++ b/content/releases/qpid-proton-0.13.0/proton/python/examples/server_tx.py
@@ -0,0 +1,79 @@
+#!/usr/bin/env python
+#
+# 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.
+#
+
+from __future__ import print_function
+from proton import Message
+from proton.reactor import Container
+from proton.handlers import MessagingHandler, TransactionHandler
+
+class TxRequest(TransactionHandler):
+    def __init__(self, response, sender, request_delivery):
+        super(TxRequest, self).__init__()
+        self.response = response
+        self.sender = sender
+        self.request_delivery = request_delivery
+
+    def on_transaction_declared(self, event):
+        event.transaction.send(self.sender, self.response)
+        event.transaction.accept(self.request_delivery)
+        event.transaction.commit()
+
+    def on_transaction_committed(self, event):
+        print("Request processed successfully")
+
+    def on_transaction_aborted(self, event):
+        print("Request processing aborted")
+
+
+class TxServer(MessagingHandler):
+    def __init__(self, host, address):
+        super(TxServer, self).__init__(auto_accept=False)
+        self.host = host
+        self.address = address
+
+    def on_start(self, event):
+        self.container = event.container
+        self.conn = event.container.connect(self.host, reconnect=False)
+        self.receiver = event.container.create_receiver(self.conn, self.address)
+        self.senders = {}
+        self.relay = None
+
+    def on_message(self, event):
+        sender = self.relay
+        if not sender:
+            sender = self.senders.get(event.message.reply_to)
+        if not sender:
+            sender = self.container.create_sender(self.conn, event.message.reply_to)
+            self.senders[event.message.reply_to] = sender
+
+        response = Message(address=event.message.reply_to, body=event.message.body.upper(),
+                           correlation_id=event.message.correlation_id)
+        self.container.declare_transaction(self.conn, handler=TxRequest(response, sender, event.delivery))
+
+    def on_connection_open(self, event):
+        if event.connection.remote_offered_capabilities and 'ANONYMOUS-RELAY' in event.connection.remote_offered_capabilities:
+            self.relay = self.container.create_sender(self.conn, None)
+
+try:
+    Container(TxServer("localhost:5672", "examples")).run()
+except KeyboardInterrupt: pass
+
+
+

http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/content/releases/qpid-proton-0.13.0/proton/python/examples/server_tx.py.html
----------------------------------------------------------------------
diff --git a/content/releases/qpid-proton-0.13.0/proton/python/examples/server_tx.py.html b/content/releases/qpid-proton-0.13.0/proton/python/examples/server_tx.py.html
new file mode 100644
index 0000000..7b9d859
--- /dev/null
+++ b/content/releases/qpid-proton-0.13.0/proton/python/examples/server_tx.py.html
@@ -0,0 +1,205 @@
+<!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>server_tx.py - 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/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;">
+        <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-proton-0.13.0/index.html">Qpid Proton 0.13.0</a></li><li><a href="/releases/qpid-proton-0.13.0/proton/python/examples/index.html">Proton Python Examples</a></li><li>server_tx.py</li></ul>
+
+        <div id="-middle-content">
+          
+<h1>server_tx.py</h1>
+<div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">__future__</span> <span class="kn">import</span> <span class="n">print_function</span>
+<span class="kn">from</span> <span class="nn">proton</span> <span class="kn">import</span> <span class="n">Message</span>
+<span class="kn">from</span> <span class="nn">proton.reactor</span> <span class="kn">import</span> <span class="n">Container</span>
+<span class="kn">from</span> <span class="nn">proton.handlers</span> <span class="kn">import</span> <span class="n">MessagingHandler</span><span class="p">,</span> <span class="n">TransactionHandler</span>
+
+<span class="k">class</span> <span class="nc">TxRequest</span><span class="p">(</span><span class="n">TransactionHandler</span><span class="p">):</span>
+    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">response</span><span class="p">,</span> <span class="n">sender</span><span class="p">,</span> <span class="n">request_delivery</span><span class="p">):</span>
+        <span class="nb">super</span><span class="p">(</span><span class="n">TxRequest</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">__init__</span><span class="p">()</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">response</span> <span class="o">=</span> <span class="n">response</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">sender</span> <span class="o">=</span> <span class="n">sender</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">request_delivery</span> <span class="o">=</span> <span class="n">request_delivery</span>
+
+    <span class="k">def</span> <span class="nf">on_transaction_declared</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="n">event</span><span class="o">.</span><span class="n">transaction</span><span class="o">.</span><span class="n">send</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">sender</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">response</span><span class="p">)</span>
+        <span class="n">event</span><span class="o">.</span><span class="n">transaction</span><span class="o">.</span><span class="n">accept</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">request_delivery</span><span class="p">)</span>
+        <span class="n">event</span><span class="o">.</span><span class="n">transaction</span><span class="o">.</span><span class="n">commit</span><span class="p">()</span>
+
+    <span class="k">def</span> <span class="nf">on_transaction_committed</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="k">print</span><span class="p">(</span><span class="s2">&quot;Request processed successfully&quot;</span><span class="p">)</span>
+
+    <span class="k">def</span> <span class="nf">on_transaction_aborted</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="k">print</span><span class="p">(</span><span class="s2">&quot;Request processing aborted&quot;</span><span class="p">)</span>
+
+
+<span class="k">class</span> <span class="nc">TxServer</span><span class="p">(</span><span class="n">MessagingHandler</span><span class="p">):</span>
+    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">host</span><span class="p">,</span> <span class="n">address</span><span class="p">):</span>
+        <span class="nb">super</span><span class="p">(</span><span class="n">TxServer</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">__init__</span><span class="p">(</span><span class="n">auto_accept</span><span class="o">=</span><span class="bp">False</span><span class="p">)</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">host</span> <span class="o">=</span> <span class="n">host</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">address</span> <span class="o">=</span> <span class="n">address</span>
+
+    <span class="k">def</span> <span class="nf">on_start</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">container</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">container</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">conn</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">container</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">host</span><span class="p">,</span> <span class="n">reconnect</span><span class="o">=</span><span class="bp">False</span><span class="p">)</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">receiver</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">container</span><span class="o">.</span><span class="n">create_receiver</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">conn</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">address</span><span class="p">)</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">senders</span> <span class="o">=</span> <span class="p">{}</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">relay</span> <span class="o">=</span> <span class="bp">None</span>
+
+    <span class="k">def</span> <span class="nf">on_message</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="n">sender</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">relay</span>
+        <span class="k">if</span> <span class="ow">not</span> <span class="n">sender</span><span class="p">:</span>
+            <span class="n">sender</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">senders</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">event</span><span class="o">.</span><span class="n">message</span><span class="o">.</span><span class="n">reply_to</span><span class="p">)</span>
+        <span class="k">if</span> <span class="ow">not</span> <span class="n">sender</span><span class="p">:</span>
+            <span class="n">sender</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">container</span><span class="o">.</span><span class="n">create_sender</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">conn</span><span class="p">,</span> <span class="n">event</span><span class="o">.</span><span class="n">message</span><span class="o">.</span><span class="n">reply_to</span><span class="p">)</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">senders</span><span class="p">[</span><span class="n">event</span><span class="o">.</span><span class="n">message</span><span class="o">.</span><span class="n">reply_to</span><span class="p">]</span> <span class="o">=</span> <span class="n">sender</span>
+
+        <span class="n">response</span> <span class="o">=</span> <span class="n">Message</span><span class="p">(</span><span class="n">address</span><span class="o">=</span><span class="n">event</span><span class="o">.</span><span class="n">message</span><span class="o">.</span><span class="n">reply_to</span><span class="p">,</span> <span class="n">body</span><span class="o">=</span><span class="n">event</span><span class="o">.</span><span class="n">message</span><span class="o">.</span><span class="n">body</span><span class="o">.</span><span class="n">upper</span><span class="p">(),</span>
+                           <span class="n">correlation_id</span><span class="o">=</span><span class="n">event</span><span class="o">.</span><span class="n">message</span><span class="o">.</span><span class="n">correlation_id</span><span class="p">)</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">container</span><span class="o">.</span><span class="n">declare_transaction</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">conn</span><span class="p">,</span> <span class="n">handler</span><span class="o">=</span><span class="n">TxRequest</span><span class="p">(</span><span class="n">response</span><span class="p">,</span> <span class="n">sender</span><span class="p">,</span> <span class="n">event</span><span class="o">.</span><span class="n">delivery</span><span class="p">))</span>
+
+    <span class="k">def</span> <span class="nf">on_connection_open</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="k">if</span> <span class="n">event</span><span class="o">.</span><span class="n">connection</span><span class="o">.</span><span class="n">remote_offered_capabilities</span> <span class="ow">and</span> <span class="s1">&#39;ANONYMOUS-RELAY&#39;</span> <span class="ow">in</span> <span class="n">event</span><span class="o">.</span><span class="n">connection</span><span class="o">.</span><span class="n">remote_offered_capabilities</span><span class="p">:</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">relay</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">container</span><span class="o">.</span><span class="n">create_sender</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">conn</span><span class="p">,</span> <span class="bp">None</span><span class="p">)</span>
+
+<span class="k">try</span><span class="p">:</span>
+    <span class="n">Container</span><span class="p">(</span><span class="n">TxServer</span><span class="p">(</span><span class="s2">&quot;localhost:5672&quot;</span><span class="p">,</span> <span class="s2">&quot;examples&quot;</span><span class="p">))</span><span class="o">.</span><span class="n">run</span><span class="p">()</span>
+<span class="k">except</span> <span class="ne">KeyboardInterrupt</span><span class="p">:</span> <span class="k">pass</span>
+</pre></div>
+
+<p><a href="server_tx.py">Download this file</a></p>
+
+
+          <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/75ca8b14/content/releases/qpid-proton-0.13.0/proton/python/examples/simple_recv.py
----------------------------------------------------------------------
diff --git a/content/releases/qpid-proton-0.13.0/proton/python/examples/simple_recv.py b/content/releases/qpid-proton-0.13.0/proton/python/examples/simple_recv.py
new file mode 100755
index 0000000..5322500
--- /dev/null
+++ b/content/releases/qpid-proton-0.13.0/proton/python/examples/simple_recv.py
@@ -0,0 +1,59 @@
+#!/usr/bin/env python
+#
+# 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.
+#
+
+from __future__ import print_function
+import optparse
+from proton.handlers import MessagingHandler
+from proton.reactor import Container
+
+class Recv(MessagingHandler):
+    def __init__(self, url, count):
+        super(Recv, self).__init__()
+        self.url = url
+        self.expected = count
+        self.received = 0
+
+    def on_start(self, event):
+        event.container.create_receiver(self.url)
+
+    def on_message(self, event):
+        if event.message.id and event.message.id < self.received:
+            # ignore duplicate message
+            return
+        if self.expected == 0 or self.received < self.expected:
+            print(event.message.body)
+            self.received += 1
+            if self.received == self.expected:
+                event.receiver.close()
+                event.connection.close()
+
+parser = optparse.OptionParser(usage="usage: %prog [options]")
+parser.add_option("-a", "--address", default="localhost:5672/examples",
+                  help="address from which messages are received (default %default)")
+parser.add_option("-m", "--messages", type="int", default=100,
+                  help="number of messages to receive; 0 receives indefinitely (default %default)")
+opts, args = parser.parse_args()
+
+try:
+    Container(Recv(opts.address, opts.messages)).run()
+except KeyboardInterrupt: pass
+
+
+


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


[05/26] qpid-site git commit: QPID-7350: Examples that should have gone with the previous commit

Posted by jr...@apache.org.
http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/input/releases/qpid-proton-0.13.0/proton/cpp/examples/ssl_client_cert.cpp.html.in
----------------------------------------------------------------------
diff --git a/input/releases/qpid-proton-0.13.0/proton/cpp/examples/ssl_client_cert.cpp.html.in b/input/releases/qpid-proton-0.13.0/proton/cpp/examples/ssl_client_cert.cpp.html.in
new file mode 100644
index 0000000..d2aab24
--- /dev/null
+++ b/input/releases/qpid-proton-0.13.0/proton/cpp/examples/ssl_client_cert.cpp.html.in
@@ -0,0 +1,177 @@
+
+<h1>ssl_client_cert.cpp</h1>
+<div class="highlight"><pre><span></span><span class="cp">#include</span> <span class="cpf">&lt;proton/connection.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/connection_options.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/default_container.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/messaging_handler.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/sasl.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/ssl.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/tracker.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/transport.hpp&gt;</span><span class="cp"></span>
+
+<span class="cp">#include</span> <span class="cpf">&lt;iostream&gt;</span><span class="cp"></span>
+
+<span class="cp">#include</span> <span class="cpf">&quot;fake_cpp11.hpp&quot;</span><span class="cp"></span>
+
+<span class="k">using</span> <span class="n">proton</span><span class="o">::</span><span class="n">connection_options</span><span class="p">;</span>
+<span class="k">using</span> <span class="n">proton</span><span class="o">::</span><span class="n">ssl_client_options</span><span class="p">;</span>
+<span class="k">using</span> <span class="n">proton</span><span class="o">::</span><span class="n">ssl_server_options</span><span class="p">;</span>
+<span class="k">using</span> <span class="n">proton</span><span class="o">::</span><span class="n">ssl_certificate</span><span class="p">;</span>
+<span class="k">using</span> <span class="n">proton</span><span class="o">::</span><span class="n">sasl</span><span class="p">;</span>
+
+<span class="c1">// Helper functions defined below.</span>
+<span class="kt">bool</span> <span class="nf">using_OpenSSL</span><span class="p">();</span>
+<span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">platform_CA</span><span class="p">(</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="o">&amp;</span><span class="n">base_name</span><span class="p">);</span>
+<span class="n">ssl_certificate</span> <span class="nf">platform_certificate</span><span class="p">(</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="o">&amp;</span><span class="n">base_name</span><span class="p">,</span> <span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="o">&amp;</span><span class="n">passwd</span><span class="p">);</span>
+<span class="k">static</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">cert_directory</span><span class="p">;</span>
+<span class="k">static</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">find_CN</span><span class="p">(</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="o">&amp;</span><span class="p">);</span>
+
+
+<span class="k">struct</span> <span class="nl">server_handler</span> <span class="p">:</span> <span class="k">public</span> <span class="n">proton</span><span class="o">::</span><span class="n">messaging_handler</span> <span class="p">{</span>
+    <span class="n">proton</span><span class="o">::</span><span class="n">listener</span> <span class="n">listener</span><span class="p">;</span>
+
+    <span class="kt">void</span> <span class="nf">on_connection_open</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">connection</span> <span class="o">&amp;</span><span class="n">c</span><span class="p">)</span> <span class="n">OVERRIDE</span> <span class="p">{</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Inbound server connection connected via SSL.  Protocol: &quot;</span> <span class="o">&lt;&lt;</span>
+            <span class="n">c</span><span class="p">.</span><span class="n">transport</span><span class="p">().</span><span class="n">ssl</span><span class="p">().</span><span class="n">protocol</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+        <span class="k">if</span> <span class="p">(</span><span class="n">c</span><span class="p">.</span><span class="n">transport</span><span class="p">().</span><span class="n">sasl</span><span class="p">().</span><span class="n">outcome</span><span class="p">()</span> <span class="o">==</span> <span class="n">sasl</span><span class="o">::</span><span class="n">OK</span><span class="p">)</span> <span class="p">{</span>
+            <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">subject</span> <span class="o">=</span> <span class="n">c</span><span class="p">.</span><span class="n">transport</span><span class="p">().</span><span class="n">ssl</span><span class="p">().</span><span class="n">remote_subject</span><span class="p">();</span>
+            <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Inbound client certificate identity &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">find_CN</span><span class="p">(</span><span class="n">subject</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+        <span class="p">}</span>
+        <span class="k">else</span> <span class="p">{</span>
+            <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Inbound client authentication failed&quot;</span> <span class="o">&lt;&lt;</span><span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+            <span class="n">c</span><span class="p">.</span><span class="n">close</span><span class="p">();</span>
+        <span class="p">}</span>
+        <span class="n">listener</span><span class="p">.</span><span class="n">stop</span><span class="p">();</span>
+    <span class="p">}</span>
+
+    <span class="kt">void</span> <span class="nf">on_message</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">delivery</span> <span class="o">&amp;</span><span class="p">,</span> <span class="n">proton</span><span class="o">::</span><span class="n">message</span> <span class="o">&amp;</span><span class="n">m</span><span class="p">)</span> <span class="n">OVERRIDE</span> <span class="p">{</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="n">m</span><span class="p">.</span><span class="n">body</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+    <span class="p">}</span>
+<span class="p">};</span>
+
+
+<span class="k">class</span> <span class="nc">hello_world_direct</span> <span class="o">:</span> <span class="k">public</span> <span class="n">proton</span><span class="o">::</span><span class="n">messaging_handler</span> <span class="p">{</span>
+  <span class="k">private</span><span class="o">:</span>
+    <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">url</span><span class="p">;</span>
+    <span class="n">server_handler</span> <span class="n">s_handler</span><span class="p">;</span>
+
+  <span class="k">public</span><span class="o">:</span>
+    <span class="n">hello_world_direct</span><span class="p">(</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="o">&amp;</span> <span class="n">u</span><span class="p">)</span> <span class="o">:</span> <span class="n">url</span><span class="p">(</span><span class="n">u</span><span class="p">)</span> <span class="p">{}</span>
+
+    <span class="kt">void</span> <span class="n">on_container_start</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">container</span> <span class="o">&amp;</span><span class="n">c</span><span class="p">)</span> <span class="n">OVERRIDE</span> <span class="p">{</span>
+        <span class="c1">// Configure listener.  Details vary by platform.</span>
+        <span class="n">ssl_certificate</span> <span class="n">server_cert</span> <span class="o">=</span> <span class="n">platform_certificate</span><span class="p">(</span><span class="s">&quot;tserver&quot;</span><span class="p">,</span> <span class="s">&quot;tserverpw&quot;</span><span class="p">);</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">client_CA</span> <span class="o">=</span> <span class="n">platform_CA</span><span class="p">(</span><span class="s">&quot;tclient&quot;</span><span class="p">);</span>
+        <span class="c1">// Specify an SSL domain with CA&#39;s for client certificate verification.</span>
+        <span class="n">ssl_server_options</span> <span class="nf">srv_ssl</span><span class="p">(</span><span class="n">server_cert</span><span class="p">,</span> <span class="n">client_CA</span><span class="p">);</span>
+        <span class="n">connection_options</span> <span class="n">server_opts</span><span class="p">;</span>
+        <span class="n">server_opts</span><span class="p">.</span><span class="n">ssl_server_options</span><span class="p">(</span><span class="n">srv_ssl</span><span class="p">).</span><span class="n">handler</span><span class="p">(</span><span class="n">s_handler</span><span class="p">);</span>
+        <span class="n">server_opts</span><span class="p">.</span><span class="n">sasl_allowed_mechs</span><span class="p">(</span><span class="s">&quot;EXTERNAL&quot;</span><span class="p">);</span>
+        <span class="n">c</span><span class="p">.</span><span class="n">server_connection_options</span><span class="p">(</span><span class="n">server_opts</span><span class="p">);</span>
+
+        <span class="c1">// Configure client.</span>
+        <span class="n">ssl_certificate</span> <span class="n">client_cert</span> <span class="o">=</span> <span class="n">platform_certificate</span><span class="p">(</span><span class="s">&quot;tclient&quot;</span><span class="p">,</span> <span class="s">&quot;tclientpw&quot;</span><span class="p">);</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">server_CA</span> <span class="o">=</span> <span class="n">platform_CA</span><span class="p">(</span><span class="s">&quot;tserver&quot;</span><span class="p">);</span>
+        <span class="c1">// Since the test certifcate&#39;s credentials are unlikely to match this host&#39;s name, downgrade the verification</span>
+        <span class="c1">// from VERIFY_PEER_NAME to VERIFY_PEER.</span>
+        <span class="n">ssl_client_options</span> <span class="nf">ssl_cli</span><span class="p">(</span><span class="n">client_cert</span><span class="p">,</span> <span class="n">server_CA</span><span class="p">,</span> <span class="n">proton</span><span class="o">::</span><span class="n">ssl</span><span class="o">::</span><span class="n">VERIFY_PEER</span><span class="p">);</span>
+        <span class="n">connection_options</span> <span class="n">client_opts</span><span class="p">;</span>
+        <span class="n">client_opts</span><span class="p">.</span><span class="n">ssl_client_options</span><span class="p">(</span><span class="n">ssl_cli</span><span class="p">).</span><span class="n">sasl_allowed_mechs</span><span class="p">(</span><span class="s">&quot;EXTERNAL&quot;</span><span class="p">);</span>
+        <span class="n">c</span><span class="p">.</span><span class="n">client_connection_options</span><span class="p">(</span><span class="n">client_opts</span><span class="p">);</span>
+
+        <span class="n">s_handler</span><span class="p">.</span><span class="n">listener</span> <span class="o">=</span> <span class="n">c</span><span class="p">.</span><span class="n">listen</span><span class="p">(</span><span class="n">url</span><span class="p">);</span>
+        <span class="n">c</span><span class="p">.</span><span class="n">open_sender</span><span class="p">(</span><span class="n">url</span><span class="p">);</span>
+    <span class="p">}</span>
+
+    <span class="kt">void</span> <span class="n">on_connection_open</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">connection</span> <span class="o">&amp;</span><span class="n">c</span><span class="p">)</span> <span class="n">OVERRIDE</span> <span class="p">{</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">subject</span> <span class="o">=</span> <span class="n">c</span><span class="p">.</span><span class="n">transport</span><span class="p">().</span><span class="n">ssl</span><span class="p">().</span><span class="n">remote_subject</span><span class="p">();</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Outgoing client connection connected via SSL.  Server certificate identity &quot;</span> <span class="o">&lt;&lt;</span>
+            <span class="n">find_CN</span><span class="p">(</span><span class="n">subject</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+    <span class="p">}</span>
+
+    <span class="kt">void</span> <span class="n">on_sendable</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">sender</span> <span class="o">&amp;</span><span class="n">s</span><span class="p">)</span> <span class="n">OVERRIDE</span> <span class="p">{</span>
+        <span class="n">proton</span><span class="o">::</span><span class="n">message</span> <span class="n">m</span><span class="p">;</span>
+        <span class="n">m</span><span class="p">.</span><span class="n">body</span><span class="p">(</span><span class="s">&quot;Hello World!&quot;</span><span class="p">);</span>
+        <span class="n">s</span><span class="p">.</span><span class="n">send</span><span class="p">(</span><span class="n">m</span><span class="p">);</span>
+        <span class="n">s</span><span class="p">.</span><span class="n">close</span><span class="p">();</span>
+    <span class="p">}</span>
+
+    <span class="kt">void</span> <span class="n">on_tracker_accept</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">tracker</span> <span class="o">&amp;</span><span class="n">t</span><span class="p">)</span> <span class="n">OVERRIDE</span> <span class="p">{</span>
+        <span class="c1">// All done.</span>
+        <span class="n">t</span><span class="p">.</span><span class="n">connection</span><span class="p">().</span><span class="n">close</span><span class="p">();</span>
+    <span class="p">}</span>
+<span class="p">};</span>
+
+<span class="kt">int</span> <span class="nf">main</span><span class="p">(</span><span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">**</span><span class="n">argv</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">try</span> <span class="p">{</span>
+        <span class="c1">// Pick an &quot;unusual&quot; port since we are going to be talking to ourselves, not a broker.</span>
+        <span class="c1">// Note the use of &quot;amqps&quot; as the URL scheme to denote a TLS/SSL connection.</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">url</span> <span class="o">=</span> <span class="n">argc</span> <span class="o">&gt;</span> <span class="mi">1</span> <span class="o">?</span> <span class="n">argv</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">:</span> <span class="s">&quot;amqps://127.0.0.1:8888/examples&quot;</span><span class="p">;</span>
+        <span class="c1">// Location of certificates and private key information:</span>
+        <span class="k">if</span> <span class="p">(</span><span class="n">argc</span> <span class="o">&gt;</span> <span class="mi">2</span><span class="p">)</span> <span class="p">{</span>
+            <span class="n">cert_directory</span> <span class="o">=</span> <span class="n">argv</span><span class="p">[</span><span class="mi">2</span><span class="p">];</span>
+            <span class="kt">size_t</span> <span class="n">sz</span> <span class="o">=</span> <span class="n">cert_directory</span><span class="p">.</span><span class="n">size</span><span class="p">();</span>
+            <span class="k">if</span> <span class="p">(</span><span class="n">sz</span> <span class="o">&amp;&amp;</span> <span class="n">cert_directory</span><span class="p">[</span><span class="n">sz</span> <span class="o">-</span><span class="mi">1</span><span class="p">]</span> <span class="o">!=</span> <span class="sc">&#39;/&#39;</span><span class="p">)</span>
+                <span class="n">cert_directory</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="s">&quot;/&quot;</span><span class="p">);</span>
+        <span class="p">}</span>
+        <span class="k">else</span> <span class="n">cert_directory</span> <span class="o">=</span> <span class="s">&quot;ssl_certs/&quot;</span><span class="p">;</span>
+
+        <span class="n">hello_world_direct</span> <span class="n">hwd</span><span class="p">(</span><span class="n">url</span><span class="p">);</span>
+        <span class="n">proton</span><span class="o">::</span><span class="n">default_container</span><span class="p">(</span><span class="n">hwd</span><span class="p">).</span><span class="n">run</span><span class="p">();</span>
+        <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">catch</span> <span class="p">(</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">exception</span><span class="o">&amp;</span> <span class="n">e</span><span class="p">)</span> <span class="p">{</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">cerr</span> <span class="o">&lt;&lt;</span> <span class="n">e</span><span class="p">.</span><span class="n">what</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+    <span class="p">}</span>
+    <span class="k">return</span> <span class="mi">1</span><span class="p">;</span>
+<span class="p">}</span>
+
+
+<span class="kt">bool</span> <span class="nf">using_OpenSSL</span><span class="p">()</span> <span class="p">{</span>
+    <span class="c1">// Current defaults.</span>
+<span class="cp">#if defined(WIN32)</span>
+    <span class="k">return</span> <span class="nb">false</span><span class="p">;</span>
+<span class="cp">#else</span>
+    <span class="k">return</span> <span class="nb">true</span><span class="p">;</span>
+<span class="cp">#endif</span>
+<span class="p">}</span>
+
+<span class="n">ssl_certificate</span> <span class="nf">platform_certificate</span><span class="p">(</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="o">&amp;</span><span class="n">base_name</span><span class="p">,</span> <span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="o">&amp;</span><span class="n">passwd</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">using_OpenSSL</span><span class="p">())</span> <span class="p">{</span>
+        <span class="c1">// The first argument will be the name of the file containing the public certificate, the</span>
+        <span class="c1">// second argument will be the name of the file containing the private key.</span>
+        <span class="k">return</span> <span class="n">ssl_certificate</span><span class="p">(</span><span class="n">cert_directory</span> <span class="o">+</span> <span class="n">base_name</span> <span class="o">+</span> <span class="s">&quot;-certificate.pem&quot;</span><span class="p">,</span>
+                               <span class="n">cert_directory</span> <span class="o">+</span> <span class="n">base_name</span> <span class="o">+</span> <span class="s">&quot;-private-key.pem&quot;</span><span class="p">,</span> <span class="n">passwd</span><span class="p">);</span>
+    <span class="p">}</span>
+    <span class="k">else</span> <span class="p">{</span>
+        <span class="c1">// Windows SChannel</span>
+        <span class="c1">// The first argument will be the database or store that contains one or more complete certificates</span>
+        <span class="c1">// (public and private data).  The second will be an optional name of the certificate in the store</span>
+        <span class="c1">// (not used in this example with one certificate per store).</span>
+        <span class="k">return</span> <span class="n">ssl_certificate</span><span class="p">(</span><span class="n">cert_directory</span> <span class="o">+</span> <span class="n">base_name</span> <span class="o">+</span> <span class="s">&quot;-full.p12&quot;</span><span class="p">,</span> <span class="s">&quot;&quot;</span><span class="p">,</span> <span class="n">passwd</span><span class="p">);</span>
+    <span class="p">}</span>
+<span class="p">}</span>
+
+<span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">platform_CA</span><span class="p">(</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="o">&amp;</span><span class="n">base_name</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">using_OpenSSL</span><span class="p">())</span> <span class="p">{</span>
+        <span class="c1">// In this simple example with self-signed certificates, the peer&#39;s certificate is the CA database.</span>
+        <span class="k">return</span> <span class="n">cert_directory</span> <span class="o">+</span> <span class="n">base_name</span> <span class="o">+</span> <span class="s">&quot;-certificate.pem&quot;</span><span class="p">;</span>
+    <span class="p">}</span>
+    <span class="k">else</span> <span class="p">{</span>
+        <span class="c1">// Windows SChannel.  Use a pkcs#12 file with just the peer&#39;s public certificate information.</span>
+        <span class="k">return</span> <span class="n">cert_directory</span> <span class="o">+</span> <span class="n">base_name</span> <span class="o">+</span> <span class="s">&quot;-certificate.p12&quot;</span><span class="p">;</span>
+    <span class="p">}</span>
+<span class="p">}</span>
+
+<span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">find_CN</span><span class="p">(</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="o">&amp;</span><span class="n">subject</span><span class="p">)</span> <span class="p">{</span>
+    <span class="c1">// The subject string is returned with different whitespace and component ordering between platforms.</span>
+    <span class="c1">// Here we just return the common name by searching for &quot;CN=....&quot; in the subject, knowing that</span>
+    <span class="c1">// the test certificates do not contain any escaped characters.</span>
+    <span class="kt">size_t</span> <span class="n">pos</span> <span class="o">=</span> <span class="n">subject</span><span class="p">.</span><span class="n">find</span><span class="p">(</span><span class="s">&quot;CN=&quot;</span><span class="p">);</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">pos</span> <span class="o">==</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="o">::</span><span class="n">npos</span><span class="p">)</span> <span class="k">throw</span> <span class="n">std</span><span class="o">::</span><span class="n">runtime_error</span><span class="p">(</span><span class="s">&quot;No common name in certificate subject&quot;</span><span class="p">);</span>
+    <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">cn</span> <span class="o">=</span> <span class="n">subject</span><span class="p">.</span><span class="n">substr</span><span class="p">(</span><span class="n">pos</span><span class="p">);</span>
+    <span class="n">pos</span> <span class="o">=</span> <span class="n">cn</span><span class="p">.</span><span class="n">find</span><span class="p">(</span><span class="sc">&#39;,&#39;</span><span class="p">);</span>
+    <span class="k">return</span> <span class="n">pos</span> <span class="o">==</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="o">::</span><span class="n">npos</span> <span class="o">?</span> <span class="nl">cn</span> <span class="p">:</span> <span class="n">cn</span><span class="p">.</span><span class="n">substr</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">pos</span><span class="p">);</span>
+<span class="p">}</span>
+</pre></div>
+
+<p><a href="ssl_client_cert.cpp">Download this file</a></p>

http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/input/releases/qpid-proton-0.13.0/proton/python/examples/abstract_server.py
----------------------------------------------------------------------
diff --git a/input/releases/qpid-proton-0.13.0/proton/python/examples/abstract_server.py b/input/releases/qpid-proton-0.13.0/proton/python/examples/abstract_server.py
new file mode 100755
index 0000000..fed7fb2
--- /dev/null
+++ b/input/releases/qpid-proton-0.13.0/proton/python/examples/abstract_server.py
@@ -0,0 +1,36 @@
+#!/usr/bin/env python
+#
+# 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.
+#
+
+from __future__ import print_function
+from proton_server import Server
+
+class Application(Server):
+    def __init__(self, host, address):
+        super(Application, self).__init__(host, address)
+
+    def on_request(self, request, reply_to):
+        response = request.upper()
+        self.send(response, reply_to)
+        print("Request from: %s" % reply_to)
+
+try:
+    Application("localhost:5672", "examples").run()
+except KeyboardInterrupt: pass
+

http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/input/releases/qpid-proton-0.13.0/proton/python/examples/abstract_server.py.html.in
----------------------------------------------------------------------
diff --git a/input/releases/qpid-proton-0.13.0/proton/python/examples/abstract_server.py.html.in b/input/releases/qpid-proton-0.13.0/proton/python/examples/abstract_server.py.html.in
new file mode 100644
index 0000000..b410d46
--- /dev/null
+++ b/input/releases/qpid-proton-0.13.0/proton/python/examples/abstract_server.py.html.in
@@ -0,0 +1,20 @@
+
+<h1>abstract_server.py</h1>
+<div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">__future__</span> <span class="kn">import</span> <span class="n">print_function</span>
+<span class="kn">from</span> <span class="nn">proton_server</span> <span class="kn">import</span> <span class="n">Server</span>
+
+<span class="k">class</span> <span class="nc">Application</span><span class="p">(</span><span class="n">Server</span><span class="p">):</span>
+    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">host</span><span class="p">,</span> <span class="n">address</span><span class="p">):</span>
+        <span class="nb">super</span><span class="p">(</span><span class="n">Application</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">__init__</span><span class="p">(</span><span class="n">host</span><span class="p">,</span> <span class="n">address</span><span class="p">)</span>
+
+    <span class="k">def</span> <span class="nf">on_request</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">request</span><span class="p">,</span> <span class="n">reply_to</span><span class="p">):</span>
+        <span class="n">response</span> <span class="o">=</span> <span class="n">request</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">send</span><span class="p">(</span><span class="n">response</span><span class="p">,</span> <span class="n">reply_to</span><span class="p">)</span>
+        <span class="k">print</span><span class="p">(</span><span class="s2">&quot;Request from: </span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="n">reply_to</span><span class="p">)</span>
+
+<span class="k">try</span><span class="p">:</span>
+    <span class="n">Application</span><span class="p">(</span><span class="s2">&quot;localhost:5672&quot;</span><span class="p">,</span> <span class="s2">&quot;examples&quot;</span><span class="p">)</span><span class="o">.</span><span class="n">run</span><span class="p">()</span>
+<span class="k">except</span> <span class="ne">KeyboardInterrupt</span><span class="p">:</span> <span class="k">pass</span>
+</pre></div>
+
+<p><a href="abstract_server.py">Download this file</a></p>

http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/input/releases/qpid-proton-0.13.0/proton/python/examples/broker.py
----------------------------------------------------------------------
diff --git a/input/releases/qpid-proton-0.13.0/proton/python/examples/broker.py b/input/releases/qpid-proton-0.13.0/proton/python/examples/broker.py
new file mode 100755
index 0000000..8769268
--- /dev/null
+++ b/input/releases/qpid-proton-0.13.0/proton/python/examples/broker.py
@@ -0,0 +1,124 @@
+#!/usr/bin/env python
+#
+# 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.
+#
+
+import collections, optparse
+from proton import Endpoint, generate_uuid
+from proton.handlers import MessagingHandler
+from proton.reactor import Container
+
+class Queue(object):
+    def __init__(self, dynamic=False):
+        self.dynamic = dynamic
+        self.queue = collections.deque()
+        self.consumers = []
+
+    def subscribe(self, consumer):
+        self.consumers.append(consumer)
+
+    def unsubscribe(self, consumer):
+        if consumer in self.consumers:
+            self.consumers.remove(consumer)
+        return len(self.consumers) == 0 and (self.dynamic or self.queue.count == 0)
+
+    def publish(self, message):
+        self.queue.append(message)
+        self.dispatch()
+
+    def dispatch(self, consumer=None):
+        if consumer:
+            c = [consumer]
+        else:
+            c = self.consumers
+        while self._deliver_to(c): pass
+
+    def _deliver_to(self, consumers):
+        try:
+            result = False
+            for c in consumers:
+                if c.credit:
+                    c.send(self.queue.popleft())
+                    result = True
+            return result
+        except IndexError: # no more messages
+            return False
+
+class Broker(MessagingHandler):
+    def __init__(self, url):
+        super(Broker, self).__init__()
+        self.url = url
+        self.queues = {}
+
+    def on_start(self, event):
+        self.acceptor = event.container.listen(self.url)
+
+    def _queue(self, address):
+        if address not in self.queues:
+            self.queues[address] = Queue()
+        return self.queues[address]
+
+    def on_link_opening(self, event):
+        if event.link.is_sender:
+            if event.link.remote_source.dynamic:
+                address = str(generate_uuid())
+                event.link.source.address = address
+                q = Queue(True)
+                self.queues[address] = q
+                q.subscribe(event.link)
+            elif event.link.remote_source.address:
+                event.link.source.address = event.link.remote_source.address
+                self._queue(event.link.source.address).subscribe(event.link)
+        elif event.link.remote_target.address:
+            event.link.target.address = event.link.remote_target.address
+
+    def _unsubscribe(self, link):
+        if link.source.address in self.queues and self.queues[link.source.address].unsubscribe(link):
+            del self.queues[link.source.address]
+
+    def on_link_closing(self, event):
+        if event.link.is_sender:
+            self._unsubscribe(event.link)
+
+    def on_connection_closing(self, event):
+        self.remove_stale_consumers(event.connection)
+
+    def on_disconnected(self, event):
+        self.remove_stale_consumers(event.connection)
+
+    def remove_stale_consumers(self, connection):
+        l = connection.link_head(Endpoint.REMOTE_ACTIVE)
+        while l:
+            if l.is_sender:
+                self._unsubscribe(l)
+            l = l.next(Endpoint.REMOTE_ACTIVE)
+
+    def on_sendable(self, event):
+        self._queue(event.link.source.address).dispatch(event.link)
+
+    def on_message(self, event):
+        self._queue(event.link.target.address).publish(event.message)
+
+parser = optparse.OptionParser(usage="usage: %prog [options]")
+parser.add_option("-a", "--address", default="localhost:5672",
+                  help="address router listens on (default %default)")
+opts, args = parser.parse_args()
+
+try:
+    Container(Broker(opts.address)).run()
+except KeyboardInterrupt: pass

http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/input/releases/qpid-proton-0.13.0/proton/python/examples/broker.py.html.in
----------------------------------------------------------------------
diff --git a/input/releases/qpid-proton-0.13.0/proton/python/examples/broker.py.html.in b/input/releases/qpid-proton-0.13.0/proton/python/examples/broker.py.html.in
new file mode 100644
index 0000000..2b4fa48
--- /dev/null
+++ b/input/releases/qpid-proton-0.13.0/proton/python/examples/broker.py.html.in
@@ -0,0 +1,109 @@
+
+<h1>broker.py</h1>
+<div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">collections</span><span class="o">,</span> <span class="nn">optparse</span>
+<span class="kn">from</span> <span class="nn">proton</span> <span class="kn">import</span> <span class="n">Endpoint</span><span class="p">,</span> <span class="n">generate_uuid</span>
+<span class="kn">from</span> <span class="nn">proton.handlers</span> <span class="kn">import</span> <span class="n">MessagingHandler</span>
+<span class="kn">from</span> <span class="nn">proton.reactor</span> <span class="kn">import</span> <span class="n">Container</span>
+
+<span class="k">class</span> <span class="nc">Queue</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
+    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">dynamic</span><span class="o">=</span><span class="bp">False</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">dynamic</span> <span class="o">=</span> <span class="n">dynamic</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">queue</span> <span class="o">=</span> <span class="n">collections</span><span class="o">.</span><span class="n">deque</span><span class="p">()</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">consumers</span> <span class="o">=</span> <span class="p">[]</span>
+
+    <span class="k">def</span> <span class="nf">subscribe</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">consumer</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">consumers</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">consumer</span><span class="p">)</span>
+
+    <span class="k">def</span> <span class="nf">unsubscribe</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">consumer</span><span class="p">):</span>
+        <span class="k">if</span> <span class="n">consumer</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">consumers</span><span class="p">:</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">consumers</span><span class="o">.</span><span class="n">remove</span><span class="p">(</span><span class="n">consumer</span><span class="p">)</span>
+        <span class="k">return</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">consumers</span><span class="p">)</span> <span class="o">==</span> <span class="mi">0</span> <span class="ow">and</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">dynamic</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">queue</span><span class="o">.</span><span class="n">count</span> <span class="o">==</span> <span class="mi">0</span><span class="p">)</span>
+
+    <span class="k">def</span> <span class="nf">publish</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">message</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">queue</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">message</span><span class="p">)</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">dispatch</span><span class="p">()</span>
+
+    <span class="k">def</span> <span class="nf">dispatch</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">consumer</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
+        <span class="k">if</span> <span class="n">consumer</span><span class="p">:</span>
+            <span class="n">c</span> <span class="o">=</span> <span class="p">[</span><span class="n">consumer</span><span class="p">]</span>
+        <span class="k">else</span><span class="p">:</span>
+            <span class="n">c</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">consumers</span>
+        <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_deliver_to</span><span class="p">(</span><span class="n">c</span><span class="p">):</span> <span class="k">pass</span>
+
+    <span class="k">def</span> <span class="nf">_deliver_to</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">consumers</span><span class="p">):</span>
+        <span class="k">try</span><span class="p">:</span>
+            <span class="n">result</span> <span class="o">=</span> <span class="bp">False</span>
+            <span class="k">for</span> <span class="n">c</span> <span class="ow">in</span> <span class="n">consumers</span><span class="p">:</span>
+                <span class="k">if</span> <span class="n">c</span><span class="o">.</span><span class="n">credit</span><span class="p">:</span>
+                    <span class="n">c</span><span class="o">.</span><span class="n">send</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">queue</span><span class="o">.</span><span class="n">popleft</span><span class="p">())</span>
+                    <span class="n">result</span> <span class="o">=</span> <span class="bp">True</span>
+            <span class="k">return</span> <span class="n">result</span>
+        <span class="k">except</span> <span class="ne">IndexError</span><span class="p">:</span> <span class="c1"># no more messages</span>
+            <span class="k">return</span> <span class="bp">False</span>
+
+<span class="k">class</span> <span class="nc">Broker</span><span class="p">(</span><span class="n">MessagingHandler</span><span class="p">):</span>
+    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">url</span><span class="p">):</span>
+        <span class="nb">super</span><span class="p">(</span><span class="n">Broker</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">__init__</span><span class="p">()</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">url</span> <span class="o">=</span> <span class="n">url</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">queues</span> <span class="o">=</span> <span class="p">{}</span>
+
+    <span class="k">def</span> <span class="nf">on_start</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">acceptor</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">container</span><span class="o">.</span><span class="n">listen</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">url</span><span class="p">)</span>
+
+    <span class="k">def</span> <span class="nf">_queue</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">address</span><span class="p">):</span>
+        <span class="k">if</span> <span class="n">address</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">queues</span><span class="p">:</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">queues</span><span class="p">[</span><span class="n">address</span><span class="p">]</span> <span class="o">=</span> <span class="n">Queue</span><span class="p">()</span>
+        <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">queues</span><span class="p">[</span><span class="n">address</span><span class="p">]</span>
+
+    <span class="k">def</span> <span class="nf">on_link_opening</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="k">if</span> <span class="n">event</span><span class="o">.</span><span class="n">link</span><span class="o">.</span><span class="n">is_sender</span><span class="p">:</span>
+            <span class="k">if</span> <span class="n">event</span><span class="o">.</span><span class="n">link</span><span class="o">.</span><span class="n">remote_source</span><span class="o">.</span><span class="n">dynamic</span><span class="p">:</span>
+                <span class="n">address</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="n">generate_uuid</span><span class="p">())</span>
+                <span class="n">event</span><span class="o">.</span><span class="n">link</span><span class="o">.</span><span class="n">source</span><span class="o">.</span><span class="n">address</span> <span class="o">=</span> <span class="n">address</span>
+                <span class="n">q</span> <span class="o">=</span> <span class="n">Queue</span><span class="p">(</span><span class="bp">True</span><span class="p">)</span>
+                <span class="bp">self</span><span class="o">.</span><span class="n">queues</span><span class="p">[</span><span class="n">address</span><span class="p">]</span> <span class="o">=</span> <span class="n">q</span>
+                <span class="n">q</span><span class="o">.</span><span class="n">subscribe</span><span class="p">(</span><span class="n">event</span><span class="o">.</span><span class="n">link</span><span class="p">)</span>
+            <span class="k">elif</span> <span class="n">event</span><span class="o">.</span><span class="n">link</span><span class="o">.</span><span class="n">remote_source</span><span class="o">.</span><span class="n">address</span><span class="p">:</span>
+                <span class="n">event</span><span class="o">.</span><span class="n">link</span><span class="o">.</span><span class="n">source</span><span class="o">.</span><span class="n">address</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">link</span><span class="o">.</span><span class="n">remote_source</span><span class="o">.</span><span class="n">address</span>
+                <span class="bp">self</span><span class="o">.</span><span class="n">_queue</span><span class="p">(</span><span class="n">event</span><span class="o">.</span><span class="n">link</span><span class="o">.</span><span class="n">source</span><span class="o">.</span><span class="n">address</span><span class="p">)</span><span class="o">.</span><span class="n">subscribe</span><span class="p">(</span><span class="n">event</span><span class="o">.</span><span class="n">link</span><span class="p">)</span>
+        <span class="k">elif</span> <span class="n">event</span><span class="o">.</span><span class="n">link</span><span class="o">.</span><span class="n">remote_target</span><span class="o">.</span><span class="n">address</span><span class="p">:</span>
+            <span class="n">event</span><span class="o">.</span><span class="n">link</span><span class="o">.</span><span class="n">target</span><span class="o">.</span><span class="n">address</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">link</span><span class="o">.</span><span class="n">remote_target</span><span class="o">.</span><span class="n">address</span>
+
+    <span class="k">def</span> <span class="nf">_unsubscribe</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">link</span><span class="p">):</span>
+        <span class="k">if</span> <span class="n">link</span><span class="o">.</span><span class="n">source</span><span class="o">.</span><span class="n">address</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">queues</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">queues</span><span class="p">[</span><span class="n">link</span><span class="o">.</span><span class="n">source</span><span class="o">.</span><span class="n">address</span><span class="p">]</span><span class="o">.</span><span class="n">unsubscribe</span><span class="p">(</span><span class="n">link</span><span class="p">):</span>
+            <span class="k">del</span> <span class="bp">self</span><span class="o">.</span><span class="n">queues</span><span class="p">[</span><span class="n">link</span><span class="o">.</span><span class="n">source</span><span class="o">.</span><span class="n">address</span><span class="p">]</span>
+
+    <span class="k">def</span> <span class="nf">on_link_closing</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="k">if</span> <span class="n">event</span><span class="o">.</span><span class="n">link</span><span class="o">.</span><span class="n">is_sender</span><span class="p">:</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">_unsubscribe</span><span class="p">(</span><span class="n">event</span><span class="o">.</span><span class="n">link</span><span class="p">)</span>
+
+    <span class="k">def</span> <span class="nf">on_connection_closing</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">remove_stale_consumers</span><span class="p">(</span><span class="n">event</span><span class="o">.</span><span class="n">connection</span><span class="p">)</span>
+
+    <span class="k">def</span> <span class="nf">on_disconnected</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">remove_stale_consumers</span><span class="p">(</span><span class="n">event</span><span class="o">.</span><span class="n">connection</span><span class="p">)</span>
+
+    <span class="k">def</span> <span class="nf">remove_stale_consumers</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">connection</span><span class="p">):</span>
+        <span class="n">l</span> <span class="o">=</span> <span class="n">connection</span><span class="o">.</span><span class="n">link_head</span><span class="p">(</span><span class="n">Endpoint</span><span class="o">.</span><span class="n">REMOTE_ACTIVE</span><span class="p">)</span>
+        <span class="k">while</span> <span class="n">l</span><span class="p">:</span>
+            <span class="k">if</span> <span class="n">l</span><span class="o">.</span><span class="n">is_sender</span><span class="p">:</span>
+                <span class="bp">self</span><span class="o">.</span><span class="n">_unsubscribe</span><span class="p">(</span><span class="n">l</span><span class="p">)</span>
+            <span class="n">l</span> <span class="o">=</span> <span class="n">l</span><span class="o">.</span><span class="n">next</span><span class="p">(</span><span class="n">Endpoint</span><span class="o">.</span><span class="n">REMOTE_ACTIVE</span><span class="p">)</span>
+
+    <span class="k">def</span> <span class="nf">on_sendable</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">_queue</span><span class="p">(</span><span class="n">event</span><span class="o">.</span><span class="n">link</span><span class="o">.</span><span class="n">source</span><span class="o">.</span><span class="n">address</span><span class="p">)</span><span class="o">.</span><span class="n">dispatch</span><span class="p">(</span><span class="n">event</span><span class="o">.</span><span class="n">link</span><span class="p">)</span>
+
+    <span class="k">def</span> <span class="nf">on_message</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">_queue</span><span class="p">(</span><span class="n">event</span><span class="o">.</span><span class="n">link</span><span class="o">.</span><span class="n">target</span><span class="o">.</span><span class="n">address</span><span class="p">)</span><span class="o">.</span><span class="n">publish</span><span class="p">(</span><span class="n">event</span><span class="o">.</span><span class="n">message</span><span class="p">)</span>
+
+<span class="n">parser</span> <span class="o">=</span> <span class="n">optparse</span><span class="o">.</span><span class="n">OptionParser</span><span class="p">(</span><span class="n">usage</span><span class="o">=</span><span class="s2">&quot;usage: %prog [options]&quot;</span><span class="p">)</span>
+<span class="n">parser</span><span class="o">.</span><span class="n">add_option</span><span class="p">(</span><span class="s2">&quot;-a&quot;</span><span class="p">,</span> <span class="s2">&quot;--address&quot;</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="s2">&quot;localhost:5672&quot;</span><span class="p">,</span>
+                  <span class="n">help</span><span class="o">=</span><span class="s2">&quot;address router listens on (default </span><span class="si">%d</span><span class="s2">efault)&quot;</span><span class="p">)</span>
+<span class="n">opts</span><span class="p">,</span> <span class="n">args</span> <span class="o">=</span> <span class="n">parser</span><span class="o">.</span><span class="n">parse_args</span><span class="p">()</span>
+
+<span class="k">try</span><span class="p">:</span>
+    <span class="n">Container</span><span class="p">(</span><span class="n">Broker</span><span class="p">(</span><span class="n">opts</span><span class="o">.</span><span class="n">address</span><span class="p">))</span><span class="o">.</span><span class="n">run</span><span class="p">()</span>
+<span class="k">except</span> <span class="ne">KeyboardInterrupt</span><span class="p">:</span> <span class="k">pass</span>
+</pre></div>
+
+<p><a href="broker.py">Download this file</a></p>

http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/input/releases/qpid-proton-0.13.0/proton/python/examples/client.py
----------------------------------------------------------------------
diff --git a/input/releases/qpid-proton-0.13.0/proton/python/examples/client.py b/input/releases/qpid-proton-0.13.0/proton/python/examples/client.py
new file mode 100755
index 0000000..86f2c76
--- /dev/null
+++ b/input/releases/qpid-proton-0.13.0/proton/python/examples/client.py
@@ -0,0 +1,65 @@
+#!/usr/bin/env python
+#
+# 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.
+#
+
+from __future__ import print_function, unicode_literals
+import optparse
+from proton import Message
+from proton.handlers import MessagingHandler
+from proton.reactor import Container, DynamicNodeProperties
+
+class Client(MessagingHandler):
+    def __init__(self, url, requests):
+        super(Client, self).__init__()
+        self.url = url
+        self.requests = requests
+
+    def on_start(self, event):
+        self.sender = event.container.create_sender(self.url)
+        self.receiver = event.container.create_receiver(self.sender.connection, None, dynamic=True)
+
+    def next_request(self):
+        if self.receiver.remote_source.address:
+            req = Message(reply_to=self.receiver.remote_source.address, body=self.requests[0])
+            self.sender.send(req)
+
+    def on_link_opened(self, event):
+        if event.receiver == self.receiver:
+            self.next_request()
+
+    def on_message(self, event):
+        print("%s => %s" % (self.requests.pop(0), event.message.body))
+        if self.requests:
+            self.next_request()
+        else:
+            event.connection.close()
+
+REQUESTS= ["Twas brillig, and the slithy toves",
+           "Did gire and gymble in the wabe.",
+           "All mimsy were the borogroves,",
+           "And the mome raths outgrabe."]
+
+parser = optparse.OptionParser(usage="usage: %prog [options]",
+                               description="Send requests to the supplied address and print responses.")
+parser.add_option("-a", "--address", default="localhost:5672/examples",
+                  help="address to which messages are sent (default %default)")
+opts, args = parser.parse_args()
+
+Container(Client(opts.address, args or REQUESTS)).run()
+

http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/input/releases/qpid-proton-0.13.0/proton/python/examples/client.py.html.in
----------------------------------------------------------------------
diff --git a/input/releases/qpid-proton-0.13.0/proton/python/examples/client.py.html.in b/input/releases/qpid-proton-0.13.0/proton/python/examples/client.py.html.in
new file mode 100644
index 0000000..827ca73
--- /dev/null
+++ b/input/releases/qpid-proton-0.13.0/proton/python/examples/client.py.html.in
@@ -0,0 +1,49 @@
+
+<h1>client.py</h1>
+<div class="highlight"><pre><span></span><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>
+<span class="kn">from</span> <span class="nn">proton</span> <span class="kn">import</span> <span class="n">Message</span>
+<span class="kn">from</span> <span class="nn">proton.handlers</span> <span class="kn">import</span> <span class="n">MessagingHandler</span>
+<span class="kn">from</span> <span class="nn">proton.reactor</span> <span class="kn">import</span> <span class="n">Container</span><span class="p">,</span> <span class="n">DynamicNodeProperties</span>
+
+<span class="k">class</span> <span class="nc">Client</span><span class="p">(</span><span class="n">MessagingHandler</span><span class="p">):</span>
+    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">url</span><span class="p">,</span> <span class="n">requests</span><span class="p">):</span>
+        <span class="nb">super</span><span class="p">(</span><span class="n">Client</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">__init__</span><span class="p">()</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">url</span> <span class="o">=</span> <span class="n">url</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">requests</span> <span class="o">=</span> <span class="n">requests</span>
+
+    <span class="k">def</span> <span class="nf">on_start</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">sender</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">container</span><span class="o">.</span><span class="n">create_sender</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">url</span><span class="p">)</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">receiver</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">container</span><span class="o">.</span><span class="n">create_receiver</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">sender</span><span class="o">.</span><span class="n">connection</span><span class="p">,</span> <span class="bp">None</span><span class="p">,</span> <span class="n">dynamic</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
+
+    <span class="k">def</span> <span class="nf">next_request</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">receiver</span><span class="o">.</span><span class="n">remote_source</span><span class="o">.</span><span class="n">address</span><span class="p">:</span>
+            <span class="n">req</span> <span class="o">=</span> <span class="n">Message</span><span class="p">(</span><span class="n">reply_to</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">receiver</span><span class="o">.</span><span class="n">remote_source</span><span class="o">.</span><span class="n">address</span><span class="p">,</span> <span class="n">body</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">requests</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">sender</span><span class="o">.</span><span class="n">send</span><span class="p">(</span><span class="n">req</span><span class="p">)</span>
+
+    <span class="k">def</span> <span class="nf">on_link_opened</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="k">if</span> <span class="n">event</span><span class="o">.</span><span class="n">receiver</span> <span class="o">==</span> <span class="bp">self</span><span class="o">.</span><span class="n">receiver</span><span class="p">:</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">next_request</span><span class="p">()</span>
+
+    <span class="k">def</span> <span class="nf">on_message</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="k">print</span><span class="p">(</span><span class="s2">&quot;</span><span class="si">%s</span><span class="s2"> =&gt; </span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">requests</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="mi">0</span><span class="p">),</span> <span class="n">event</span><span class="o">.</span><span class="n">message</span><span class="o">.</span><span class="n">body</span><span class="p">))</span>
+        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">requests</span><span class="p">:</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">next_request</span><span class="p">()</span>
+        <span class="k">else</span><span class="p">:</span>
+            <span class="n">event</span><span class="o">.</span><span class="n">connection</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
+
+<span class="n">REQUESTS</span><span class="o">=</span> <span class="p">[</span><span class="s2">&quot;Twas brillig, and the slithy toves&quot;</span><span class="p">,</span>
+           <span class="s2">&quot;Did gire and gymble in the wabe.&quot;</span><span class="p">,</span>
+           <span class="s2">&quot;All mimsy were the borogroves,&quot;</span><span class="p">,</span>
+           <span class="s2">&quot;And the mome raths outgrabe.&quot;</span><span class="p">]</span>
+
+<span class="n">parser</span> <span class="o">=</span> <span class="n">optparse</span><span class="o">.</span><span class="n">OptionParser</span><span class="p">(</span><span class="n">usage</span><span class="o">=</span><span class="s2">&quot;usage: %prog [options]&quot;</span><span class="p">,</span>
+                               <span class="n">description</span><span class="o">=</span><span class="s2">&quot;Send requests to the supplied address and print responses.&quot;</span><span class="p">)</span>
+<span class="n">parser</span><span class="o">.</span><span class="n">add_option</span><span class="p">(</span><span class="s2">&quot;-a&quot;</span><span class="p">,</span> <span class="s2">&quot;--address&quot;</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="s2">&quot;localhost:5672/examples&quot;</span><span class="p">,</span>
+                  <span class="n">help</span><span class="o">=</span><span class="s2">&quot;address to which messages are sent (default </span><span class="si">%d</span><span class="s2">efault)&quot;</span><span class="p">)</span>
+<span class="n">opts</span><span class="p">,</span> <span class="n">args</span> <span class="o">=</span> <span class="n">parser</span><span class="o">.</span><span class="n">parse_args</span><span class="p">()</span>
+
+<span class="n">Container</span><span class="p">(</span><span class="n">Client</span><span class="p">(</span><span class="n">opts</span><span class="o">.</span><span class="n">address</span><span class="p">,</span> <span class="n">args</span> <span class="ow">or</span> <span class="n">REQUESTS</span><span class="p">))</span><span class="o">.</span><span class="n">run</span><span class="p">()</span>
+</pre></div>
+
+<p><a href="client.py">Download this file</a></p>

http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/input/releases/qpid-proton-0.13.0/proton/python/examples/client_http.py
----------------------------------------------------------------------
diff --git a/input/releases/qpid-proton-0.13.0/proton/python/examples/client_http.py b/input/releases/qpid-proton-0.13.0/proton/python/examples/client_http.py
new file mode 100755
index 0000000..bf65639
--- /dev/null
+++ b/input/releases/qpid-proton-0.13.0/proton/python/examples/client_http.py
@@ -0,0 +1,114 @@
+#!/usr/bin/env python
+#
+# 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.
+#
+
+from __future__ import print_function
+import tornado.ioloop
+import tornado.web
+from proton import Message
+from proton.handlers import MessagingHandler
+from proton_tornado import Container
+
+class Client(MessagingHandler):
+    def __init__(self, host, address):
+        super(Client, self).__init__()
+        self.host = host
+        self.address = address
+        self.sent = []
+        self.pending = []
+        self.reply_address = None
+        self.sender = None
+        self.receiver = None
+
+    def on_start(self, event):
+        conn = event.container.connect(self.host)
+        self.sender = event.container.create_sender(conn, self.address)
+        self.receiver = event.container.create_receiver(conn, None, dynamic=True)
+
+    def on_link_opened(self, event):
+        if event.receiver == self.receiver:
+            self.reply_address = event.link.remote_source.address
+            self.do_request()
+
+    def on_sendable(self, event):
+        self.do_request()
+
+    def on_message(self, event):
+        if self.sent:
+            request, handler = self.sent.pop(0)
+            print("%s => %s" % (request, event.message.body))
+            handler(event.message.body)
+            self.do_request()
+
+    def do_request(self):
+        if self.pending and self.reply_address and self.sender.credit:
+            request, handler = self.pending.pop(0)
+            self.sent.append((request, handler))
+            req = Message(reply_to=self.reply_address, body=request)
+            self.sender.send(req)
+
+    def request(self, body, handler):
+        self.pending.append((body, handler))
+        self.do_request()
+        self.container.touch()
+
+class ExampleHandler(tornado.web.RequestHandler):
+    def initialize(self, client):
+        self.client = client
+
+    def get(self):
+        self._write_open()
+        self._write_form()
+        self._write_close()
+
+    @tornado.web.asynchronous
+    def post(self):
+        client.request(self.get_body_argument("message"), lambda x: self.on_response(x))
+
+    def on_response(self, body):
+        self.set_header("Content-Type", "text/html")
+        self._write_open()
+        self._write_form()
+        self.write("Response: " + body)
+        self._write_close()
+        self.finish()
+
+    def _write_open(self):
+        self.write('<html><body>')
+
+    def _write_close(self):
+        self.write('</body></html>')
+
+    def _write_form(self):
+        self.write('<form action="/client" method="POST">'
+                   'Request: <input type="text" name="message">'
+                   '<input type="submit" value="Submit">'
+                   '</form>')
+
+
+loop = tornado.ioloop.IOLoop.instance()
+client = Client("localhost:5672", "examples")
+client.container = Container(client, loop=loop)
+client.container.initialise()
+app = tornado.web.Application([tornado.web.url(r"/client", ExampleHandler, dict(client=client))])
+app.listen(8888)
+try:
+    loop.start()
+except KeyboardInterrupt:
+    loop.stop()

http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/input/releases/qpid-proton-0.13.0/proton/python/examples/client_http.py.html.in
----------------------------------------------------------------------
diff --git a/input/releases/qpid-proton-0.13.0/proton/python/examples/client_http.py.html.in b/input/releases/qpid-proton-0.13.0/proton/python/examples/client_http.py.html.in
new file mode 100644
index 0000000..a2dd2ca
--- /dev/null
+++ b/input/releases/qpid-proton-0.13.0/proton/python/examples/client_http.py.html.in
@@ -0,0 +1,99 @@
+
+<h1>client_http.py</h1>
+<div class="highlight"><pre><span></span><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">tornado.ioloop</span>
+<span class="kn">import</span> <span class="nn">tornado.web</span>
+<span class="kn">from</span> <span class="nn">proton</span> <span class="kn">import</span> <span class="n">Message</span>
+<span class="kn">from</span> <span class="nn">proton.handlers</span> <span class="kn">import</span> <span class="n">MessagingHandler</span>
+<span class="kn">from</span> <span class="nn">proton_tornado</span> <span class="kn">import</span> <span class="n">Container</span>
+
+<span class="k">class</span> <span class="nc">Client</span><span class="p">(</span><span class="n">MessagingHandler</span><span class="p">):</span>
+    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">host</span><span class="p">,</span> <span class="n">address</span><span class="p">):</span>
+        <span class="nb">super</span><span class="p">(</span><span class="n">Client</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">__init__</span><span class="p">()</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">host</span> <span class="o">=</span> <span class="n">host</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">address</span> <span class="o">=</span> <span class="n">address</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">sent</span> <span class="o">=</span> <span class="p">[]</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">pending</span> <span class="o">=</span> <span class="p">[]</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">reply_address</span> <span class="o">=</span> <span class="bp">None</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">sender</span> <span class="o">=</span> <span class="bp">None</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">receiver</span> <span class="o">=</span> <span class="bp">None</span>
+
+    <span class="k">def</span> <span class="nf">on_start</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="n">conn</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">container</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">host</span><span class="p">)</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">sender</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">container</span><span class="o">.</span><span class="n">create_sender</span><span class="p">(</span><span class="n">conn</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">address</span><span class="p">)</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">receiver</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">container</span><span class="o">.</span><span class="n">create_receiver</span><span class="p">(</span><span class="n">conn</span><span class="p">,</span> <span class="bp">None</span><span class="p">,</span> <span class="n">dynamic</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
+
+    <span class="k">def</span> <span class="nf">on_link_opened</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="k">if</span> <span class="n">event</span><span class="o">.</span><span class="n">receiver</span> <span class="o">==</span> <span class="bp">self</span><span class="o">.</span><span class="n">receiver</span><span class="p">:</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">reply_address</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">link</span><span class="o">.</span><span class="n">remote_source</span><span class="o">.</span><span class="n">address</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">do_request</span><span class="p">()</span>
+
+    <span class="k">def</span> <span class="nf">on_sendable</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">do_request</span><span class="p">()</span>
+
+    <span class="k">def</span> <span class="nf">on_message</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">sent</span><span class="p">:</span>
+            <span class="n">request</span><span class="p">,</span> <span class="n">handler</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sent</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
+            <span class="k">print</span><span class="p">(</span><span class="s2">&quot;</span><span class="si">%s</span><span class="s2"> =&gt; </span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="n">event</span><span class="o">.</span><span class="n">message</span><span class="o">.</span><span class="n">body</span><span class="p">))</span>
+            <span class="n">handler</span><span class="p">(</span><span class="n">event</span><span class="o">.</span><span class="n">message</span><span class="o">.</span><span class="n">body</span><span class="p">)</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">do_request</span><span class="p">()</span>
+
+    <span class="k">def</span> <span class="nf">do_request</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">pending</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">reply_address</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">sender</span><span class="o">.</span><span class="n">credit</span><span class="p">:</span>
+            <span class="n">request</span><span class="p">,</span> <span class="n">handler</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">pending</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">sent</span><span class="o">.</span><span class="n">append</span><span class="p">((</span><span class="n">request</span><span class="p">,</span> <span class="n">handler</span><span class="p">))</span>
+            <span class="n">req</span> <span class="o">=</span> <span class="n">Message</span><span class="p">(</span><span class="n">reply_to</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">reply_address</span><span class="p">,</span> <span class="n">body</span><span class="o">=</span><span class="n">request</span><span class="p">)</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">sender</span><span class="o">.</span><span class="n">send</span><span class="p">(</span><span class="n">req</span><span class="p">)</span>
+
+    <span class="k">def</span> <span class="nf">request</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">body</span><span class="p">,</span> <span class="n">handler</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">pending</span><span class="o">.</span><span class="n">append</span><span class="p">((</span><span class="n">body</span><span class="p">,</span> <span class="n">handler</span><span class="p">))</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">do_request</span><span class="p">()</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">container</span><span class="o">.</span><span class="n">touch</span><span class="p">()</span>
+
+<span class="k">class</span> <span class="nc">ExampleHandler</span><span class="p">(</span><span class="n">tornado</span><span class="o">.</span><span class="n">web</span><span class="o">.</span><span class="n">RequestHandler</span><span class="p">):</span>
+    <span class="k">def</span> <span class="nf">initialize</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">client</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">client</span> <span class="o">=</span> <span class="n">client</span>
+
+    <span class="k">def</span> <span class="nf">get</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">_write_open</span><span class="p">()</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">_write_form</span><span class="p">()</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">_write_close</span><span class="p">()</span>
+
+    <span class="nd">@tornado.web.asynchronous</span>
+    <span class="k">def</span> <span class="nf">post</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="n">client</span><span class="o">.</span><span class="n">request</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">get_body_argument</span><span class="p">(</span><span class="s2">&quot;message&quot;</span><span class="p">),</span> <span class="k">lambda</span> <span class="n">x</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">on_response</span><span class="p">(</span><span class="n">x</span><span class="p">))</span>
+
+    <span class="k">def</span> <span class="nf">on_response</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">body</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">set_header</span><span class="p">(</span><span class="s2">&quot;Content-Type&quot;</span><span class="p">,</span> <span class="s2">&quot;text/html&quot;</span><span class="p">)</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">_write_open</span><span class="p">()</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">_write_form</span><span class="p">()</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="s2">&quot;Response: &quot;</span> <span class="o">+</span> <span class="n">body</span><span class="p">)</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">_write_close</span><span class="p">()</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">finish</span><span class="p">()</span>
+
+    <span class="k">def</span> <span class="nf">_write_open</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="s1">&#39;&lt;html&gt;&lt;body&gt;&#39;</span><span class="p">)</span>
+
+    <span class="k">def</span> <span class="nf">_write_close</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="s1">&#39;&lt;/body&gt;&lt;/html&gt;&#39;</span><span class="p">)</span>
+
+    <span class="k">def</span> <span class="nf">_write_form</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="s1">&#39;&lt;form action=&quot;/client&quot; method=&quot;POST&quot;&gt;&#39;</span>
+                   <span class="s1">&#39;Request: &lt;input type=&quot;text&quot; name=&quot;message&quot;&gt;&#39;</span>
+                   <span class="s1">&#39;&lt;input type=&quot;submit&quot; value=&quot;Submit&quot;&gt;&#39;</span>
+                   <span class="s1">&#39;&lt;/form&gt;&#39;</span><span class="p">)</span>
+
+
+<span class="n">loop</span> <span class="o">=</span> <span class="n">tornado</span><span class="o">.</span><span class="n">ioloop</span><span class="o">.</span><span class="n">IOLoop</span><span class="o">.</span><span class="n">instance</span><span class="p">()</span>
+<span class="n">client</span> <span class="o">=</span> <span class="n">Client</span><span class="p">(</span><span class="s2">&quot;localhost:5672&quot;</span><span class="p">,</span> <span class="s2">&quot;examples&quot;</span><span class="p">)</span>
+<span class="n">client</span><span class="o">.</span><span class="n">container</span> <span class="o">=</span> <span class="n">Container</span><span class="p">(</span><span class="n">client</span><span class="p">,</span> <span class="n">loop</span><span class="o">=</span><span class="n">loop</span><span class="p">)</span>
+<span class="n">client</span><span class="o">.</span><span class="n">container</span><span class="o">.</span><span class="n">initialise</span><span class="p">()</span>
+<span class="n">app</span> <span class="o">=</span> <span class="n">tornado</span><span class="o">.</span><span class="n">web</span><span class="o">.</span><span class="n">Application</span><span class="p">([</span><span class="n">tornado</span><span class="o">.</span><span class="n">web</span><span class="o">.</span><span class="n">url</span><span class="p">(</span><span class="s2">r&quot;/client&quot;</span><span class="p">,</span> <span class="n">ExampleHandler</span><span class="p">,</span> <span class="nb">dict</span><span class="p">(</span><span class="n">client</span><span class="o">=</span><span class="n">client</span><span class="p">))])</span>
+<span class="n">app</span><span class="o">.</span><span class="n">listen</span><span class="p">(</span><span class="mi">8888</span><span class="p">)</span>
+<span class="k">try</span><span class="p">:</span>
+    <span class="n">loop</span><span class="o">.</span><span class="n">start</span><span class="p">()</span>
+<span class="k">except</span> <span class="ne">KeyboardInterrupt</span><span class="p">:</span>
+    <span class="n">loop</span><span class="o">.</span><span class="n">stop</span><span class="p">()</span>
+</pre></div>
+
+<p><a href="client_http.py">Download this file</a></p>


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


[22/26] qpid-site git commit: QPID-7350: Examples that should have gone with the previous commit

Posted by jr...@apache.org.
http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/content/releases/qpid-proton-0.13.0/proton/cpp/examples/flow_control.cpp.html
----------------------------------------------------------------------
diff --git a/content/releases/qpid-proton-0.13.0/proton/cpp/examples/flow_control.cpp.html b/content/releases/qpid-proton-0.13.0/proton/cpp/examples/flow_control.cpp.html
new file mode 100644
index 0000000..e743fe3
--- /dev/null
+++ b/content/releases/qpid-proton-0.13.0/proton/cpp/examples/flow_control.cpp.html
@@ -0,0 +1,361 @@
+<!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>flow_control.cpp - 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/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;">
+        <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-proton-0.13.0/index.html">Qpid Proton 0.13.0</a></li><li><a href="/releases/qpid-proton-0.13.0/proton/cpp/examples/index.html">Proton C++ Examples</a></li><li>flow_control.cpp</li></ul>
+
+        <div id="-middle-content">
+          
+<h1>flow_control.cpp</h1>
+<div class="highlight"><pre><span></span><span class="cp">#include</span> <span class="cpf">&lt;proton/listener.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/connection.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/connection_options.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/default_container.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/messaging_handler.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/sender.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/tracker.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/delivery.hpp&gt;</span><span class="cp"></span>
+
+<span class="cp">#include</span> <span class="cpf">&lt;iostream&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;sstream&gt;</span><span class="cp"></span>
+
+<span class="cp">#include</span> <span class="cpf">&quot;fake_cpp11.hpp&quot;</span><span class="cp"></span>
+
+<span class="k">namespace</span> <span class="p">{</span>
+
+<span class="kt">bool</span> <span class="n">verbose</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
+
+<span class="kt">void</span> <span class="nf">verify</span><span class="p">(</span><span class="kt">bool</span> <span class="n">success</span><span class="p">,</span> <span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="o">&amp;</span><span class="n">msg</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">success</span><span class="p">)</span>
+        <span class="k">throw</span> <span class="n">std</span><span class="o">::</span><span class="n">runtime_error</span><span class="p">(</span><span class="s">&quot;example failure:&quot;</span> <span class="o">+</span> <span class="n">msg</span><span class="p">);</span>
+    <span class="k">else</span> <span class="p">{</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;success: &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">msg</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+        <span class="k">if</span> <span class="p">(</span><span class="n">verbose</span><span class="p">)</span> <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+    <span class="p">}</span>
+<span class="p">}</span>
+
+<span class="p">}</span>
+
+<span class="c1">// flow_sender manages the incoming connection and acts as the message sender.</span>
+<span class="k">class</span> <span class="nc">flow_sender</span> <span class="o">:</span> <span class="k">public</span> <span class="n">proton</span><span class="o">::</span><span class="n">messaging_handler</span> <span class="p">{</span>
+  <span class="k">private</span><span class="o">:</span>
+    <span class="kt">int</span> <span class="n">available</span><span class="p">;</span>  <span class="c1">// Number of messages the sender may send assuming sufficient credit.</span>
+    <span class="kt">int</span> <span class="n">sequence</span><span class="p">;</span>
+
+  <span class="k">public</span><span class="o">:</span>
+    <span class="n">flow_sender</span><span class="p">()</span> <span class="o">:</span> <span class="n">available</span><span class="p">(</span><span class="mi">0</span><span class="p">),</span> <span class="n">sequence</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span> <span class="p">{}</span>
+
+    <span class="kt">void</span> <span class="n">on_sendable</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">sender</span> <span class="o">&amp;</span><span class="n">s</span><span class="p">)</span> <span class="n">OVERRIDE</span> <span class="p">{</span>
+        <span class="k">if</span> <span class="p">(</span><span class="n">verbose</span><span class="p">)</span>
+            <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;flow_sender in </span><span class="se">\&quot;</span><span class="s">on_sendable</span><span class="se">\&quot;</span><span class="s"> with credit &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">s</span><span class="p">.</span><span class="n">credit</span><span class="p">()</span>
+                      <span class="o">&lt;&lt;</span> <span class="s">&quot; and &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">available</span> <span class="o">&lt;&lt;</span> <span class="s">&quot; available messages&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+        <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="n">sequence</span><span class="p">;</span> <span class="n">available</span> <span class="o">&amp;&amp;</span> <span class="n">s</span><span class="p">.</span><span class="n">credit</span><span class="p">()</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
+            <span class="n">std</span><span class="o">::</span><span class="n">ostringstream</span> <span class="n">mbody</span><span class="p">;</span>
+            <span class="n">mbody</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;flow_sender message &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">sequence</span><span class="o">++</span><span class="p">;</span>
+            <span class="n">proton</span><span class="o">::</span><span class="n">message</span> <span class="n">m</span><span class="p">(</span><span class="n">mbody</span><span class="p">.</span><span class="n">str</span><span class="p">());</span>
+            <span class="n">s</span><span class="p">.</span><span class="n">send</span><span class="p">(</span><span class="n">m</span><span class="p">);</span>
+            <span class="n">available</span><span class="o">--</span><span class="p">;</span>
+        <span class="p">}</span>
+    <span class="p">}</span>
+
+    <span class="kt">void</span> <span class="n">on_sender_drain_start</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">sender</span> <span class="o">&amp;</span><span class="n">s</span><span class="p">)</span> <span class="n">OVERRIDE</span> <span class="p">{</span>
+        <span class="k">if</span> <span class="p">(</span><span class="n">verbose</span><span class="p">)</span>
+            <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;flow_sender in </span><span class="se">\&quot;</span><span class="s">on_drain_start</span><span class="se">\&quot;</span><span class="s"> with credit &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">s</span><span class="p">.</span><span class="n">credit</span><span class="p">()</span>
+                      <span class="o">&lt;&lt;</span> <span class="s">&quot; making an internal call to </span><span class="se">\&quot;</span><span class="s">on_sendble</span><span class="se">\&quot;</span><span class="s">&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+        <span class="n">on_sendable</span><span class="p">(</span><span class="n">s</span><span class="p">);</span> <span class="c1">// send as many as we can</span>
+        <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="p">.</span><span class="n">credit</span><span class="p">())</span> <span class="p">{</span>
+            <span class="n">s</span><span class="p">.</span><span class="n">return_credit</span><span class="p">();</span> <span class="c1">// return the rest</span>
+        <span class="p">}</span>
+    <span class="p">}</span>
+
+    <span class="kt">void</span> <span class="n">set_available</span><span class="p">(</span><span class="kt">int</span> <span class="n">n</span><span class="p">)</span> <span class="p">{</span> <span class="n">available</span> <span class="o">=</span> <span class="n">n</span><span class="p">;</span> <span class="p">}</span>
+<span class="p">};</span>
+
+<span class="k">class</span> <span class="nc">flow_receiver</span> <span class="o">:</span> <span class="k">public</span> <span class="n">proton</span><span class="o">::</span><span class="n">messaging_handler</span> <span class="p">{</span>
+  <span class="k">public</span><span class="o">:</span>
+    <span class="kt">int</span> <span class="n">stage</span><span class="p">;</span>
+    <span class="kt">int</span> <span class="n">received</span><span class="p">;</span>
+    <span class="n">flow_sender</span> <span class="o">&amp;</span><span class="n">sender</span><span class="p">;</span>
+
+    <span class="n">flow_receiver</span><span class="p">(</span><span class="n">flow_sender</span> <span class="o">&amp;</span><span class="n">s</span><span class="p">)</span> <span class="o">:</span> <span class="n">stage</span><span class="p">(</span><span class="mi">0</span><span class="p">),</span> <span class="n">sender</span><span class="p">(</span><span class="n">s</span><span class="p">)</span> <span class="p">{}</span>
+
+    <span class="kt">void</span> <span class="n">example_setup</span><span class="p">(</span><span class="kt">int</span> <span class="n">n</span><span class="p">)</span> <span class="p">{</span>
+        <span class="n">received</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+        <span class="n">sender</span><span class="p">.</span><span class="n">set_available</span><span class="p">(</span><span class="n">n</span><span class="p">);</span>
+    <span class="p">}</span>
+
+    <span class="kt">void</span> <span class="n">run_stage</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">receiver</span> <span class="o">&amp;</span><span class="n">r</span><span class="p">,</span> <span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="o">&amp;</span><span class="n">caller</span><span class="p">)</span> <span class="p">{</span>
+        <span class="c1">// Serialize the progression of the flow control examples.</span>
+        <span class="k">switch</span> <span class="p">(</span><span class="n">stage</span><span class="p">)</span> <span class="p">{</span>
+        <span class="k">case</span> <span class="mi">0</span><span class="o">:</span>
+            <span class="k">if</span> <span class="p">(</span><span class="n">verbose</span><span class="p">)</span> <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Example 1.  Simple use of credit.&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+            <span class="c1">// TODO: add timeout callbacks, show no messages until credit.</span>
+            <span class="n">example_setup</span><span class="p">(</span><span class="mi">2</span><span class="p">);</span>
+            <span class="n">r</span><span class="p">.</span><span class="n">add_credit</span><span class="p">(</span><span class="mi">2</span><span class="p">);</span>
+            <span class="k">break</span><span class="p">;</span>
+        <span class="k">case</span> <span class="mi">1</span><span class="o">:</span>
+            <span class="k">if</span> <span class="p">(</span><span class="n">r</span><span class="p">.</span><span class="n">credit</span><span class="p">()</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">)</span> <span class="k">return</span><span class="p">;</span>
+            <span class="n">verify</span><span class="p">(</span><span class="n">received</span> <span class="o">==</span> <span class="mi">2</span><span class="p">,</span> <span class="s">&quot;Example 1: simple credit&quot;</span><span class="p">);</span>
+
+            <span class="k">if</span> <span class="p">(</span><span class="n">verbose</span><span class="p">)</span> <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Example 2.   Use basic drain, sender has 3 </span><span class="se">\&quot;</span><span class="s">immediate</span><span class="se">\&quot;</span><span class="s"> messages.&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+            <span class="n">example_setup</span><span class="p">(</span><span class="mi">3</span><span class="p">);</span>
+            <span class="n">r</span><span class="p">.</span><span class="n">add_credit</span><span class="p">(</span><span class="mi">5</span><span class="p">);</span> <span class="c1">// ask for up to 5</span>
+            <span class="n">r</span><span class="p">.</span><span class="n">drain</span><span class="p">();</span>       <span class="c1">// but only use what&#39;s available</span>
+            <span class="k">break</span><span class="p">;</span>
+        <span class="k">case</span> <span class="mi">2</span><span class="o">:</span>
+            <span class="k">if</span> <span class="p">(</span><span class="n">caller</span> <span class="o">==</span> <span class="s">&quot;on_message&quot;</span><span class="p">)</span> <span class="k">return</span><span class="p">;</span>
+            <span class="k">if</span> <span class="p">(</span><span class="n">caller</span> <span class="o">==</span> <span class="s">&quot;on_receiver_drain_finish&quot;</span><span class="p">)</span> <span class="p">{</span>
+                <span class="c1">// Note that unused credit of 2 at sender is returned and is now 0.</span>
+                <span class="n">verify</span><span class="p">(</span><span class="n">received</span> <span class="o">==</span> <span class="mi">3</span> <span class="o">&amp;&amp;</span> <span class="n">r</span><span class="p">.</span><span class="n">credit</span><span class="p">()</span> <span class="o">==</span> <span class="mi">0</span><span class="p">,</span> <span class="s">&quot;Example 2: basic drain&quot;</span><span class="p">);</span>
+
+                <span class="k">if</span> <span class="p">(</span><span class="n">verbose</span><span class="p">)</span> <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Example 3. Drain use with no credit.&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+                <span class="n">example_setup</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
+                <span class="n">r</span><span class="p">.</span><span class="n">drain</span><span class="p">();</span>
+                <span class="k">break</span><span class="p">;</span>
+            <span class="p">}</span>
+            <span class="n">verify</span><span class="p">(</span><span class="nb">false</span><span class="p">,</span> <span class="s">&quot;example 2 run_stage&quot;</span><span class="p">);</span>
+            <span class="k">return</span><span class="p">;</span>
+
+        <span class="k">case</span> <span class="mi">3</span><span class="o">:</span>
+            <span class="n">verify</span><span class="p">(</span><span class="n">caller</span> <span class="o">==</span> <span class="s">&quot;on_receiver_drain_finish&quot;</span> <span class="o">&amp;&amp;</span> <span class="n">received</span> <span class="o">==</span> <span class="mi">0</span><span class="p">,</span> <span class="s">&quot;Example 3: drain without credit&quot;</span><span class="p">);</span>
+
+            <span class="k">if</span> <span class="p">(</span><span class="n">verbose</span><span class="p">)</span> <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Example 4. Show using high(10)/low(3) watermark for 25 messages.&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+            <span class="n">example_setup</span><span class="p">(</span><span class="mi">25</span><span class="p">);</span>
+            <span class="n">r</span><span class="p">.</span><span class="n">add_credit</span><span class="p">(</span><span class="mi">10</span><span class="p">);</span>
+            <span class="k">break</span><span class="p">;</span>
+
+        <span class="k">case</span> <span class="mi">4</span><span class="o">:</span>
+            <span class="k">if</span> <span class="p">(</span><span class="n">received</span> <span class="o">&lt;</span> <span class="mi">25</span><span class="p">)</span> <span class="p">{</span>
+                <span class="c1">// Top up credit as needed.</span>
+                <span class="kt">uint32_t</span> <span class="n">credit</span> <span class="o">=</span> <span class="n">r</span><span class="p">.</span><span class="n">credit</span><span class="p">();</span>
+                <span class="k">if</span> <span class="p">(</span><span class="n">credit</span> <span class="o">&lt;=</span> <span class="mi">3</span><span class="p">)</span> <span class="p">{</span>
+                    <span class="kt">uint32_t</span> <span class="n">new_credit</span> <span class="o">=</span> <span class="mi">10</span><span class="p">;</span>
+                    <span class="kt">uint32_t</span> <span class="n">remaining</span> <span class="o">=</span> <span class="mi">25</span> <span class="o">-</span> <span class="n">received</span><span class="p">;</span>
+                    <span class="k">if</span> <span class="p">(</span><span class="n">new_credit</span> <span class="o">&gt;</span> <span class="n">remaining</span><span class="p">)</span>
+                        <span class="n">new_credit</span> <span class="o">=</span> <span class="n">remaining</span><span class="p">;</span>
+                    <span class="k">if</span> <span class="p">(</span><span class="n">new_credit</span> <span class="o">&gt;</span> <span class="n">credit</span><span class="p">)</span> <span class="p">{</span>
+                        <span class="n">r</span><span class="p">.</span><span class="n">add_credit</span><span class="p">(</span><span class="n">new_credit</span> <span class="o">-</span> <span class="n">credit</span><span class="p">);</span>
+                        <span class="k">if</span> <span class="p">(</span><span class="n">verbose</span><span class="p">)</span>
+                            <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;flow_receiver adding credit for &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">new_credit</span> <span class="o">-</span> <span class="n">credit</span>
+                                      <span class="o">&lt;&lt;</span> <span class="s">&quot; messages&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+                    <span class="p">}</span>
+                <span class="p">}</span>
+                <span class="k">return</span><span class="p">;</span>
+            <span class="p">}</span>
+
+            <span class="n">verify</span><span class="p">(</span><span class="n">received</span> <span class="o">==</span> <span class="mi">25</span> <span class="o">&amp;&amp;</span> <span class="n">r</span><span class="p">.</span><span class="n">credit</span><span class="p">()</span> <span class="o">==</span> <span class="mi">0</span><span class="p">,</span> <span class="s">&quot;Exmaple 4: high/low watermark&quot;</span><span class="p">);</span>
+            <span class="n">r</span><span class="p">.</span><span class="n">connection</span><span class="p">().</span><span class="n">close</span><span class="p">();</span>
+            <span class="k">break</span><span class="p">;</span>
+
+        <span class="k">default</span><span class="o">:</span>
+            <span class="k">throw</span> <span class="n">std</span><span class="o">::</span><span class="n">runtime_error</span><span class="p">(</span><span class="s">&quot;run_stage sequencing error&quot;</span><span class="p">);</span>
+        <span class="p">}</span>
+        <span class="n">stage</span><span class="o">++</span><span class="p">;</span>
+    <span class="p">}</span>
+
+    <span class="kt">void</span> <span class="n">on_receiver_open</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">receiver</span> <span class="o">&amp;</span><span class="n">r</span><span class="p">)</span> <span class="n">OVERRIDE</span> <span class="p">{</span>
+        <span class="n">run_stage</span><span class="p">(</span><span class="n">r</span><span class="p">,</span> <span class="s">&quot;on_receiver_open&quot;</span><span class="p">);</span>
+    <span class="p">}</span>
+
+    <span class="kt">void</span> <span class="n">on_message</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">delivery</span> <span class="o">&amp;</span><span class="n">d</span><span class="p">,</span> <span class="n">proton</span><span class="o">::</span><span class="n">message</span> <span class="o">&amp;</span><span class="n">m</span><span class="p">)</span> <span class="n">OVERRIDE</span> <span class="p">{</span>
+        <span class="k">if</span> <span class="p">(</span><span class="n">verbose</span><span class="p">)</span>
+            <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;flow_receiver in </span><span class="se">\&quot;</span><span class="s">on_message</span><span class="se">\&quot;</span><span class="s"> with &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">m</span><span class="p">.</span><span class="n">body</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+        <span class="n">proton</span><span class="o">::</span><span class="n">receiver</span> <span class="n">r</span><span class="p">(</span><span class="n">d</span><span class="p">.</span><span class="n">receiver</span><span class="p">());</span>
+        <span class="n">received</span><span class="o">++</span><span class="p">;</span>
+        <span class="n">run_stage</span><span class="p">(</span><span class="n">r</span><span class="p">,</span> <span class="s">&quot;on_message&quot;</span><span class="p">);</span>
+    <span class="p">}</span>
+
+    <span class="kt">void</span> <span class="n">on_receiver_drain_finish</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">receiver</span> <span class="o">&amp;</span><span class="n">r</span><span class="p">)</span> <span class="n">OVERRIDE</span> <span class="p">{</span>
+        <span class="k">if</span> <span class="p">(</span><span class="n">verbose</span><span class="p">)</span>
+            <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;flow_receiver in </span><span class="se">\&quot;</span><span class="s">on_receiver_drain_finish</span><span class="se">\&quot;</span><span class="s">&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+        <span class="n">run_stage</span><span class="p">(</span><span class="n">r</span><span class="p">,</span> <span class="s">&quot;on_receiver_drain_finish&quot;</span><span class="p">);</span>
+    <span class="p">}</span>
+<span class="p">};</span>
+
+
+<span class="k">class</span> <span class="nc">flow_control</span> <span class="o">:</span> <span class="k">public</span> <span class="n">proton</span><span class="o">::</span><span class="n">messaging_handler</span> <span class="p">{</span>
+  <span class="k">private</span><span class="o">:</span>
+    <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">url</span><span class="p">;</span>
+    <span class="n">proton</span><span class="o">::</span><span class="n">listener</span> <span class="n">listener</span><span class="p">;</span>
+    <span class="n">flow_sender</span> <span class="n">send_handler</span><span class="p">;</span>
+    <span class="n">flow_receiver</span> <span class="n">receive_handler</span><span class="p">;</span>
+
+  <span class="k">public</span><span class="o">:</span>
+    <span class="n">flow_control</span><span class="p">(</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="o">&amp;</span> <span class="n">u</span><span class="p">)</span> <span class="o">:</span> <span class="n">url</span><span class="p">(</span><span class="n">u</span><span class="p">),</span> <span class="n">receive_handler</span><span class="p">(</span><span class="n">send_handler</span><span class="p">)</span> <span class="p">{}</span>
+
+    <span class="kt">void</span> <span class="n">on_container_start</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">container</span> <span class="o">&amp;</span><span class="n">c</span><span class="p">)</span> <span class="n">OVERRIDE</span> <span class="p">{</span>
+        <span class="n">listener</span> <span class="o">=</span> <span class="n">c</span><span class="p">.</span><span class="n">listen</span><span class="p">(</span><span class="n">url</span><span class="p">,</span> <span class="n">proton</span><span class="o">::</span><span class="n">connection_options</span><span class="p">().</span><span class="n">handler</span><span class="p">(</span><span class="n">send_handler</span><span class="p">));</span>
+        <span class="n">c</span><span class="p">.</span><span class="n">connect</span><span class="p">(</span><span class="n">url</span><span class="p">);</span>
+    <span class="p">}</span>
+
+    <span class="kt">void</span> <span class="n">on_connection_open</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">connection</span> <span class="o">&amp;</span><span class="n">c</span><span class="p">)</span> <span class="n">OVERRIDE</span> <span class="p">{</span>
+        <span class="k">if</span> <span class="p">(</span><span class="n">c</span><span class="p">.</span><span class="n">active</span><span class="p">())</span> <span class="p">{</span>
+            <span class="c1">// outbound connection</span>
+            <span class="n">c</span><span class="p">.</span><span class="n">open_receiver</span><span class="p">(</span><span class="s">&quot;flow_example&quot;</span><span class="p">,</span> <span class="n">proton</span><span class="o">::</span><span class="n">receiver_options</span><span class="p">().</span><span class="n">handler</span><span class="p">(</span><span class="n">receive_handler</span><span class="p">).</span><span class="n">credit_window</span><span class="p">(</span><span class="mi">0</span><span class="p">));</span>
+        <span class="p">}</span>
+    <span class="p">}</span>
+
+    <span class="kt">void</span> <span class="n">on_connection_close</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">connection</span> <span class="o">&amp;</span><span class="p">)</span> <span class="n">OVERRIDE</span> <span class="p">{</span>
+        <span class="n">listener</span><span class="p">.</span><span class="n">stop</span><span class="p">();</span>
+    <span class="p">}</span>
+<span class="p">};</span>
+
+<span class="kt">int</span> <span class="nf">main</span><span class="p">(</span><span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">**</span><span class="n">argv</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">quiet_arg</span><span class="p">(</span><span class="s">&quot;-quiet&quot;</span><span class="p">);</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">argc</span> <span class="o">&gt;</span> <span class="mi">2</span> <span class="o">&amp;&amp;</span> <span class="n">quiet_arg</span> <span class="o">==</span> <span class="n">argv</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span>
+        <span class="n">verbose</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
+    <span class="k">try</span> <span class="p">{</span>
+        <span class="c1">// Pick an &quot;unusual&quot; port since we are going to be talking to</span>
+        <span class="c1">// ourselves, not a broker.</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">url</span> <span class="o">=</span> <span class="n">argc</span> <span class="o">&gt;</span> <span class="mi">1</span> <span class="o">?</span> <span class="n">argv</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">:</span> <span class="s">&quot;127.0.0.1:8888/examples&quot;</span><span class="p">;</span>
+
+        <span class="n">flow_control</span> <span class="n">fc</span><span class="p">(</span><span class="n">url</span><span class="p">);</span>
+        <span class="n">proton</span><span class="o">::</span><span class="n">default_container</span><span class="p">(</span><span class="n">fc</span><span class="p">).</span><span class="n">run</span><span class="p">();</span>
+
+        <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">catch</span> <span class="p">(</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">exception</span><span class="o">&amp;</span> <span class="n">e</span><span class="p">)</span> <span class="p">{</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">cerr</span> <span class="o">&lt;&lt;</span> <span class="n">e</span><span class="p">.</span><span class="n">what</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+    <span class="p">}</span>
+
+    <span class="k">return</span> <span class="mi">1</span><span class="p">;</span>
+<span class="p">}</span>
+</pre></div>
+
+<p><a href="flow_control.cpp">Download this file</a></p>
+
+
+          <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/75ca8b14/content/releases/qpid-proton-0.13.0/proton/cpp/examples/helloworld.cpp
----------------------------------------------------------------------
diff --git a/content/releases/qpid-proton-0.13.0/proton/cpp/examples/helloworld.cpp b/content/releases/qpid-proton-0.13.0/proton/cpp/examples/helloworld.cpp
new file mode 100755
index 0000000..fa95af0
--- /dev/null
+++ b/content/releases/qpid-proton-0.13.0/proton/cpp/examples/helloworld.cpp
@@ -0,0 +1,73 @@
+/*
+ *
+ * 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.
+ *
+ */
+
+#include <proton/connection.hpp>
+#include <proton/default_container.hpp>
+#include <proton/delivery.hpp>
+#include <proton/messaging_handler.hpp>
+#include <proton/url.hpp>
+
+#include <iostream>
+
+#include "fake_cpp11.hpp"
+
+class hello_world : public proton::messaging_handler {
+  private:
+    proton::url url;
+
+  public:
+    hello_world(const std::string& u) : url(u) {}
+
+    void on_container_start(proton::container& c) OVERRIDE {
+        c.connect(url);
+    }
+
+    void on_connection_open(proton::connection& c) OVERRIDE {
+        c.open_receiver(url.path());
+        c.open_sender(url.path());
+    }
+
+    void on_sendable(proton::sender &s) OVERRIDE {
+        proton::message m("Hello World!");
+        s.send(m);
+        s.close();
+    }
+
+    void on_message(proton::delivery &d, proton::message &m) OVERRIDE {
+        std::cout << m.body() << std::endl;
+        d.connection().close();
+    }
+};
+
+int main(int argc, char **argv) {
+    try {
+        std::string url = argc > 1 ? argv[1] : "127.0.0.1:5672/examples";
+
+        hello_world hw(url);
+        proton::default_container(hw).run();
+
+        return 0;
+    } catch (const std::exception& e) {
+        std::cerr << e.what() << std::endl;
+    }
+
+    return 1;
+}

http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/content/releases/qpid-proton-0.13.0/proton/cpp/examples/helloworld.cpp.html
----------------------------------------------------------------------
diff --git a/content/releases/qpid-proton-0.13.0/proton/cpp/examples/helloworld.cpp.html b/content/releases/qpid-proton-0.13.0/proton/cpp/examples/helloworld.cpp.html
new file mode 100644
index 0000000..add6182
--- /dev/null
+++ b/content/releases/qpid-proton-0.13.0/proton/cpp/examples/helloworld.cpp.html
@@ -0,0 +1,201 @@
+<!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>helloworld.cpp - 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/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;">
+        <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-proton-0.13.0/index.html">Qpid Proton 0.13.0</a></li><li><a href="/releases/qpid-proton-0.13.0/proton/cpp/examples/index.html">Proton C++ Examples</a></li><li>helloworld.cpp</li></ul>
+
+        <div id="-middle-content">
+          
+<h1>helloworld.cpp</h1>
+<div class="highlight"><pre><span></span><span class="cp">#include</span> <span class="cpf">&lt;proton/connection.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/default_container.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/delivery.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/messaging_handler.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/url.hpp&gt;</span><span class="cp"></span>
+
+<span class="cp">#include</span> <span class="cpf">&lt;iostream&gt;</span><span class="cp"></span>
+
+<span class="cp">#include</span> <span class="cpf">&quot;fake_cpp11.hpp&quot;</span><span class="cp"></span>
+
+<span class="k">class</span> <span class="nc">hello_world</span> <span class="o">:</span> <span class="k">public</span> <span class="n">proton</span><span class="o">::</span><span class="n">messaging_handler</span> <span class="p">{</span>
+  <span class="k">private</span><span class="o">:</span>
+    <span class="n">proton</span><span class="o">::</span><span class="n">url</span> <span class="n">url</span><span class="p">;</span>
+
+  <span class="k">public</span><span class="o">:</span>
+    <span class="n">hello_world</span><span class="p">(</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="o">&amp;</span> <span class="n">u</span><span class="p">)</span> <span class="o">:</span> <span class="n">url</span><span class="p">(</span><span class="n">u</span><span class="p">)</span> <span class="p">{}</span>
+
+    <span class="kt">void</span> <span class="n">on_container_start</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">container</span><span class="o">&amp;</span> <span class="n">c</span><span class="p">)</span> <span class="n">OVERRIDE</span> <span class="p">{</span>
+        <span class="n">c</span><span class="p">.</span><span class="n">connect</span><span class="p">(</span><span class="n">url</span><span class="p">);</span>
+    <span class="p">}</span>
+
+    <span class="kt">void</span> <span class="n">on_connection_open</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">connection</span><span class="o">&amp;</span> <span class="n">c</span><span class="p">)</span> <span class="n">OVERRIDE</span> <span class="p">{</span>
+        <span class="n">c</span><span class="p">.</span><span class="n">open_receiver</span><span class="p">(</span><span class="n">url</span><span class="p">.</span><span class="n">path</span><span class="p">());</span>
+        <span class="n">c</span><span class="p">.</span><span class="n">open_sender</span><span class="p">(</span><span class="n">url</span><span class="p">.</span><span class="n">path</span><span class="p">());</span>
+    <span class="p">}</span>
+
+    <span class="kt">void</span> <span class="n">on_sendable</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">sender</span> <span class="o">&amp;</span><span class="n">s</span><span class="p">)</span> <span class="n">OVERRIDE</span> <span class="p">{</span>
+        <span class="n">proton</span><span class="o">::</span><span class="n">message</span> <span class="n">m</span><span class="p">(</span><span class="s">&quot;Hello World!&quot;</span><span class="p">);</span>
+        <span class="n">s</span><span class="p">.</span><span class="n">send</span><span class="p">(</span><span class="n">m</span><span class="p">);</span>
+        <span class="n">s</span><span class="p">.</span><span class="n">close</span><span class="p">();</span>
+    <span class="p">}</span>
+
+    <span class="kt">void</span> <span class="n">on_message</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">delivery</span> <span class="o">&amp;</span><span class="n">d</span><span class="p">,</span> <span class="n">proton</span><span class="o">::</span><span class="n">message</span> <span class="o">&amp;</span><span class="n">m</span><span class="p">)</span> <span class="n">OVERRIDE</span> <span class="p">{</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="n">m</span><span class="p">.</span><span class="n">body</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+        <span class="n">d</span><span class="p">.</span><span class="n">connection</span><span class="p">().</span><span class="n">close</span><span class="p">();</span>
+    <span class="p">}</span>
+<span class="p">};</span>
+
+<span class="kt">int</span> <span class="nf">main</span><span class="p">(</span><span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">**</span><span class="n">argv</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">try</span> <span class="p">{</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">url</span> <span class="o">=</span> <span class="n">argc</span> <span class="o">&gt;</span> <span class="mi">1</span> <span class="o">?</span> <span class="n">argv</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">:</span> <span class="s">&quot;127.0.0.1:5672/examples&quot;</span><span class="p">;</span>
+
+        <span class="n">hello_world</span> <span class="n">hw</span><span class="p">(</span><span class="n">url</span><span class="p">);</span>
+        <span class="n">proton</span><span class="o">::</span><span class="n">default_container</span><span class="p">(</span><span class="n">hw</span><span class="p">).</span><span class="n">run</span><span class="p">();</span>
+
+        <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">catch</span> <span class="p">(</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">exception</span><span class="o">&amp;</span> <span class="n">e</span><span class="p">)</span> <span class="p">{</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">cerr</span> <span class="o">&lt;&lt;</span> <span class="n">e</span><span class="p">.</span><span class="n">what</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+    <span class="p">}</span>
+
+    <span class="k">return</span> <span class="mi">1</span><span class="p">;</span>
+<span class="p">}</span>
+</pre></div>
+
+<p><a href="helloworld.cpp">Download this file</a></p>
+
+
+          <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/75ca8b14/content/releases/qpid-proton-0.13.0/proton/cpp/examples/helloworld_direct.cpp
----------------------------------------------------------------------
diff --git a/content/releases/qpid-proton-0.13.0/proton/cpp/examples/helloworld_direct.cpp b/content/releases/qpid-proton-0.13.0/proton/cpp/examples/helloworld_direct.cpp
new file mode 100755
index 0000000..5421e62
--- /dev/null
+++ b/content/releases/qpid-proton-0.13.0/proton/cpp/examples/helloworld_direct.cpp
@@ -0,0 +1,79 @@
+/*
+ *
+ * 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.
+ *
+ */
+
+#include <proton/connection.hpp>
+#include <proton/default_container.hpp>
+#include <proton/messaging_handler.hpp>
+#include <proton/sender.hpp>
+#include <proton/tracker.hpp>
+
+#include <iostream>
+
+#include "fake_cpp11.hpp"
+
+class hello_world_direct : public proton::messaging_handler {
+  private:
+    std::string url;
+    proton::listener listener;
+
+  public:
+    hello_world_direct(const std::string& u) : url(u) {}
+
+    void on_container_start(proton::container &c) OVERRIDE {
+        listener = c.listen(url);
+        c.open_sender(url);
+    }
+
+    void on_sendable(proton::sender &s) OVERRIDE {
+        proton::message m("Hello World!");
+        s.send(m);
+        s.close();
+    }
+
+    void on_message(proton::delivery &, proton::message &m) OVERRIDE {
+        std::cout << m.body() << std::endl;
+    }
+
+    void on_tracker_accept(proton::tracker &t) OVERRIDE {
+        t.connection().close();
+    }
+
+    void on_connection_close(proton::connection&) OVERRIDE {
+        listener.stop();
+    }
+};
+
+int main(int argc, char **argv) {
+    try {
+        // Pick an "unusual" port since we are going to be talking to
+        // ourselves, not a broker.
+        std::string url = argc > 1 ? argv[1] : "127.0.0.1:8888/examples";
+
+        hello_world_direct hwd(url);
+        proton::default_container(hwd).run();
+
+        return 0;
+    } catch (const std::exception& e) {
+        std::cerr << e.what() << std::endl;
+    }
+
+    return 1;
+}

http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/content/releases/qpid-proton-0.13.0/proton/cpp/examples/helloworld_direct.cpp.html
----------------------------------------------------------------------
diff --git a/content/releases/qpid-proton-0.13.0/proton/cpp/examples/helloworld_direct.cpp.html b/content/releases/qpid-proton-0.13.0/proton/cpp/examples/helloworld_direct.cpp.html
new file mode 100644
index 0000000..5995d34
--- /dev/null
+++ b/content/releases/qpid-proton-0.13.0/proton/cpp/examples/helloworld_direct.cpp.html
@@ -0,0 +1,207 @@
+<!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>helloworld_direct.cpp - 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/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;">
+        <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-proton-0.13.0/index.html">Qpid Proton 0.13.0</a></li><li><a href="/releases/qpid-proton-0.13.0/proton/cpp/examples/index.html">Proton C++ Examples</a></li><li>helloworld_direct.cpp</li></ul>
+
+        <div id="-middle-content">
+          
+<h1>helloworld_direct.cpp</h1>
+<div class="highlight"><pre><span></span><span class="cp">#include</span> <span class="cpf">&lt;proton/connection.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/default_container.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/messaging_handler.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/sender.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/tracker.hpp&gt;</span><span class="cp"></span>
+
+<span class="cp">#include</span> <span class="cpf">&lt;iostream&gt;</span><span class="cp"></span>
+
+<span class="cp">#include</span> <span class="cpf">&quot;fake_cpp11.hpp&quot;</span><span class="cp"></span>
+
+<span class="k">class</span> <span class="nc">hello_world_direct</span> <span class="o">:</span> <span class="k">public</span> <span class="n">proton</span><span class="o">::</span><span class="n">messaging_handler</span> <span class="p">{</span>
+  <span class="k">private</span><span class="o">:</span>
+    <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">url</span><span class="p">;</span>
+    <span class="n">proton</span><span class="o">::</span><span class="n">listener</span> <span class="n">listener</span><span class="p">;</span>
+
+  <span class="k">public</span><span class="o">:</span>
+    <span class="n">hello_world_direct</span><span class="p">(</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="o">&amp;</span> <span class="n">u</span><span class="p">)</span> <span class="o">:</span> <span class="n">url</span><span class="p">(</span><span class="n">u</span><span class="p">)</span> <span class="p">{}</span>
+
+    <span class="kt">void</span> <span class="n">on_container_start</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">container</span> <span class="o">&amp;</span><span class="n">c</span><span class="p">)</span> <span class="n">OVERRIDE</span> <span class="p">{</span>
+        <span class="n">listener</span> <span class="o">=</span> <span class="n">c</span><span class="p">.</span><span class="n">listen</span><span class="p">(</span><span class="n">url</span><span class="p">);</span>
+        <span class="n">c</span><span class="p">.</span><span class="n">open_sender</span><span class="p">(</span><span class="n">url</span><span class="p">);</span>
+    <span class="p">}</span>
+
+    <span class="kt">void</span> <span class="n">on_sendable</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">sender</span> <span class="o">&amp;</span><span class="n">s</span><span class="p">)</span> <span class="n">OVERRIDE</span> <span class="p">{</span>
+        <span class="n">proton</span><span class="o">::</span><span class="n">message</span> <span class="n">m</span><span class="p">(</span><span class="s">&quot;Hello World!&quot;</span><span class="p">);</span>
+        <span class="n">s</span><span class="p">.</span><span class="n">send</span><span class="p">(</span><span class="n">m</span><span class="p">);</span>
+        <span class="n">s</span><span class="p">.</span><span class="n">close</span><span class="p">();</span>
+    <span class="p">}</span>
+
+    <span class="kt">void</span> <span class="n">on_message</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">delivery</span> <span class="o">&amp;</span><span class="p">,</span> <span class="n">proton</span><span class="o">::</span><span class="n">message</span> <span class="o">&amp;</span><span class="n">m</span><span class="p">)</span> <span class="n">OVERRIDE</span> <span class="p">{</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="n">m</span><span class="p">.</span><span class="n">body</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+    <span class="p">}</span>
+
+    <span class="kt">void</span> <span class="n">on_tracker_accept</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">tracker</span> <span class="o">&amp;</span><span class="n">t</span><span class="p">)</span> <span class="n">OVERRIDE</span> <span class="p">{</span>
+        <span class="n">t</span><span class="p">.</span><span class="n">connection</span><span class="p">().</span><span class="n">close</span><span class="p">();</span>
+    <span class="p">}</span>
+
+    <span class="kt">void</span> <span class="n">on_connection_close</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">connection</span><span class="o">&amp;</span><span class="p">)</span> <span class="n">OVERRIDE</span> <span class="p">{</span>
+        <span class="n">listener</span><span class="p">.</span><span class="n">stop</span><span class="p">();</span>
+    <span class="p">}</span>
+<span class="p">};</span>
+
+<span class="kt">int</span> <span class="nf">main</span><span class="p">(</span><span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">**</span><span class="n">argv</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">try</span> <span class="p">{</span>
+        <span class="c1">// Pick an &quot;unusual&quot; port since we are going to be talking to</span>
+        <span class="c1">// ourselves, not a broker.</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">url</span> <span class="o">=</span> <span class="n">argc</span> <span class="o">&gt;</span> <span class="mi">1</span> <span class="o">?</span> <span class="n">argv</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">:</span> <span class="s">&quot;127.0.0.1:8888/examples&quot;</span><span class="p">;</span>
+
+        <span class="n">hello_world_direct</span> <span class="n">hwd</span><span class="p">(</span><span class="n">url</span><span class="p">);</span>
+        <span class="n">proton</span><span class="o">::</span><span class="n">default_container</span><span class="p">(</span><span class="n">hwd</span><span class="p">).</span><span class="n">run</span><span class="p">();</span>
+
+        <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">catch</span> <span class="p">(</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">exception</span><span class="o">&amp;</span> <span class="n">e</span><span class="p">)</span> <span class="p">{</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">cerr</span> <span class="o">&lt;&lt;</span> <span class="n">e</span><span class="p">.</span><span class="n">what</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+    <span class="p">}</span>
+
+    <span class="k">return</span> <span class="mi">1</span><span class="p">;</span>
+<span class="p">}</span>
+</pre></div>
+
+<p><a href="helloworld_direct.cpp">Download this file</a></p>
+
+
+          <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/75ca8b14/content/releases/qpid-proton-0.13.0/proton/cpp/examples/index.html
----------------------------------------------------------------------
diff --git a/content/releases/qpid-proton-0.13.0/proton/cpp/examples/index.html b/content/releases/qpid-proton-0.13.0/proton/cpp/examples/index.html
new file mode 100644
index 0000000..e50d32d
--- /dev/null
+++ b/content/releases/qpid-proton-0.13.0/proton/cpp/examples/index.html
@@ -0,0 +1,177 @@
+<!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>Proton C++ Examples - 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/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;">
+        <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-proton-0.13.0/index.html">Qpid Proton 0.13.0</a></li><li>Proton C++ Examples</li></ul>
+
+        <div id="-middle-content">
+          <h1 id="proton-c-examples">Proton C++ Examples</h1>
+
+<h2 id="example-files">Example files</h2>
+
+<ul>
+<li><a href="broker.cpp.html">broker.cpp</a></li>
+<li><a href="broker.hpp.html">broker.hpp</a></li>
+<li><a href="client.cpp.html">client.cpp</a></li>
+<li><a href="connection_options.cpp.html">connection_options.cpp</a></li>
+<li><a href="direct_recv.cpp.html">direct_recv.cpp</a></li>
+<li><a href="direct_send.cpp.html">direct_send.cpp</a></li>
+<li><a href="encode_decode.cpp.html">encode_decode.cpp</a></li>
+<li><a href="fake_cpp11.hpp.html">fake_cpp11.hpp</a></li>
+<li><a href="flow_control.cpp.html">flow_control.cpp</a></li>
+<li><a href="helloworld.cpp.html">helloworld.cpp</a></li>
+<li><a href="helloworld_direct.cpp.html">helloworld_direct.cpp</a></li>
+<li><a href="options.hpp.html">options.hpp</a></li>
+<li><a href="queue_browser.cpp.html">queue_browser.cpp</a></li>
+<li><a href="selected_recv.cpp.html">selected_recv.cpp</a></li>
+<li><a href="server.cpp.html">server.cpp</a></li>
+<li><a href="server_direct.cpp.html">server_direct.cpp</a></li>
+<li><a href="simple_recv.cpp.html">simple_recv.cpp</a></li>
+<li><a href="simple_send.cpp.html">simple_send.cpp</a></li>
+<li><a href="ssl.cpp.html">ssl.cpp</a></li>
+<li><a href="ssl_client_cert.cpp.html">ssl_client_cert.cpp</a></li>
+</ul>
+
+<h2 id="more-information">More information</h2>
+
+<ul>
+<li><a href="https://github.com/apache/qpid-proton/tree/0.13.0/examples/cpp/README.hpp">README</a></li>
+<li><a href="https://github.com/apache/qpid-proton/tree/0.13.0/examples/cpp">Source location</a></li>
+</ul>
+
+
+          <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/75ca8b14/content/releases/qpid-proton-0.13.0/proton/cpp/examples/options.hpp
----------------------------------------------------------------------
diff --git a/content/releases/qpid-proton-0.13.0/proton/cpp/examples/options.hpp b/content/releases/qpid-proton-0.13.0/proton/cpp/examples/options.hpp
new file mode 100755
index 0000000..dab1bc2
--- /dev/null
+++ b/content/releases/qpid-proton-0.13.0/proton/cpp/examples/options.hpp
@@ -0,0 +1,175 @@
+#ifndef OPTIONS_HPP
+#define OPTIONS_HPP
+/*
+ * 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.
+ */
+
+#include <string>
+#include <sstream>
+#include <ostream>
+#include <vector>
+#include <stdexcept>
+
+namespace example {
+/** bad_option is thrown for option parsing errors */
+struct bad_option : public std::runtime_error {
+    bad_option(const std::string& s) : std::runtime_error(s) {}
+};
+
+/** Simple command-line option parser for example programs */
+class options {
+  public:
+
+    options(int argc, char const * const * argv) : argc_(argc), argv_(argv), prog_(argv[0]), help_() {
+        size_t slash = prog_.find_last_of("/\\");
+        if (slash != std::string::npos)
+            prog_ = prog_.substr(slash+1); // Extract prog name from path
+        add_flag(help_, 'h', "help", "Print the help message");
+    }
+
+    ~options() {
+        for (opts::iterator i = opts_.begin(); i != opts_.end(); ++i)
+            delete *i;
+    }
+
+    /** Updates value when parse() is called if option is present with a value. */
+    template<class T>
+    void add_value(T& value, char short_name, const std::string& long_name, const std::string& description, const std::string var) {
+        opts_.push_back(new option_value<T>(value, short_name, long_name, description, var));
+    }
+
+    /** Sets flag when parse() is called if option is present. */
+    void add_flag(bool& flag, char short_name, const std::string& long_name, const std::string& description) {
+        opts_.push_back(new option_flag(flag, short_name, long_name, description));
+    }
+
+    /** Parse the command line, return the index of the first non-option argument.
+     *@throws bad_option if there is a parsing error or unknown option.
+     */
+    int parse() {
+        int arg = 1;
+        for (; arg < argc_ && argv_[arg][0] == '-'; ++arg) {
+            opts::iterator i = opts_.begin();
+            while (i != opts_.end() && !(*i)->parse(argc_, argv_, arg))
+                ++i;
+            if (i == opts_.end())
+                throw bad_option(std::string("unknown option ") + argv_[arg]);
+        }
+        if (help_) throw bad_option("");
+        return arg;
+    }
+
+    /** Print a usage message */
+  friend std::ostream& operator<<(std::ostream& os, const options& op) {
+      os << std::endl << "usage: " << op.prog_ << " [options]" << std::endl;
+      os << std::endl << "options:" << std::endl;
+      for (opts::const_iterator i = op.opts_.begin(); i < op.opts_.end(); ++i)
+          os << **i << std::endl;
+      return os;
+  }
+
+ private:
+    class option {
+      public:
+        option(char s, const std::string& l, const std::string& d, const std::string v) :
+            short_(std::string("-") + s), long_("--" + l), desc_(d), var_(v) {}
+        virtual ~option() {}
+
+        virtual bool parse(int argc, char const * const * argv, int &i) = 0;
+        virtual void print_default(std::ostream&) const {}
+
+      friend std::ostream& operator<<(std::ostream& os, const option& op) {
+          os << "  " << op.short_;
+          if (!op.var_.empty()) os << " " << op.var_;
+          os << ", " << op.long_;
+          if (!op.var_.empty()) os << "=" << op.var_;
+          os << std::endl << "        " << op.desc_;
+          op.print_default(os);
+          return os;
+      }
+
+      protected:
+        std::string short_, long_, desc_, var_;
+    };
+
+    template <class T>
+    class option_value : public option {
+      public:
+        option_value(T& value, char s, const std::string& l, const std::string& d, const std::string& v) :
+            option(s, l, d, v), value_(value) {}
+
+        bool parse(int argc, char const * const * argv, int &i) {
+            std::string arg(argv[i]);
+            if (arg == short_ || arg == long_) {
+                if (i < argc-1) {
+                    set_value(arg, argv[++i]);
+                    return true;
+                } else {
+                    throw bad_option("missing value for " + arg);
+                }
+            }
+            if (arg.compare(0, long_.size(), long_) == 0 && arg[long_.size()] == '=' ) {
+                set_value(long_, arg.substr(long_.size()+1));
+                return true;
+            }
+            return false;
+        }
+
+        virtual void print_default(std::ostream& os) const { os << " (default " << value_ << ")"; }
+
+        void set_value(const std::string& opt, const std::string& s) {
+            std::istringstream is(s);
+            is >> value_;
+            if (is.fail() || is.bad())
+                throw bad_option("bad value for " + opt + ": " + s);
+        }
+
+      private:
+        T& value_;
+    };
+
+    class option_flag: public option {
+      public:
+        option_flag(bool& flag, const char s, const std::string& l, const std::string& d) :
+            option(s, l, d, ""), flag_(flag)
+        { flag_ = false; }
+
+        bool parse(int /*argc*/, char const * const * argv, int &i) {
+            if (argv[i] == short_ || argv[i] == long_) {
+                flag_ = true;
+                return true;
+            } else {
+                return false;
+            }
+        }
+
+      private:
+        bool &flag_;
+    };
+
+    typedef std::vector<option*> opts;
+
+    int argc_;
+    char const * const * argv_;
+    std::string prog_;
+    opts opts_;
+    bool help_;
+};
+}
+
+#endif // OPTIONS_HPP


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


[12/26] qpid-site git commit: QPID-7350: Examples that should have gone with the previous commit

Posted by jr...@apache.org.
http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/content/releases/qpid-proton-0.13.0/proton/python/examples/test_examples.py.html
----------------------------------------------------------------------
diff --git a/content/releases/qpid-proton-0.13.0/proton/python/examples/test_examples.py.html b/content/releases/qpid-proton-0.13.0/proton/python/examples/test_examples.py.html
new file mode 100644
index 0000000..ec2527d
--- /dev/null
+++ b/content/releases/qpid-proton-0.13.0/proton/python/examples/test_examples.py.html
@@ -0,0 +1,281 @@
+<!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>test_examples.py - 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/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;">
+        <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-proton-0.13.0/index.html">Qpid Proton 0.13.0</a></li><li><a href="/releases/qpid-proton-0.13.0/proton/python/examples/index.html">Proton Python Examples</a></li><li>test_examples.py</li></ul>
+
+        <div id="-middle-content">
+          
+<h1>test_examples.py</h1>
+<div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">sys</span>
+<span class="kn">import</span> <span class="nn">subprocess</span>
+<span class="kn">import</span> <span class="nn">time</span>
+<span class="kn">import</span> <span class="nn">unittest</span>
+
+<span class="k">if</span> <span class="n">sys</span><span class="o">.</span><span class="n">version_info</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">==</span> <span class="mi">2</span><span class="p">:</span>
+    <span class="n">_unicode_prefix</span> <span class="o">=</span> <span class="s1">&#39;u&#39;</span>
+<span class="k">else</span><span class="p">:</span>
+    <span class="n">_unicode_prefix</span> <span class="o">=</span> <span class="s1">&#39;&#39;</span>
+
+
+<span class="k">class</span> <span class="nc">ExamplesTest</span><span class="p">(</span><span class="n">unittest</span><span class="o">.</span><span class="n">TestCase</span><span class="p">):</span>
+    <span class="k">def</span> <span class="nf">test_helloworld</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">example</span><span class="o">=</span><span class="s2">&quot;helloworld.py&quot;</span><span class="p">):</span>
+        <span class="n">p</span> <span class="o">=</span> <span class="n">subprocess</span><span class="o">.</span><span class="n">Popen</span><span class="p">([</span><span class="n">example</span><span class="p">],</span> <span class="n">stderr</span><span class="o">=</span><span class="n">subprocess</span><span class="o">.</span><span class="n">STDOUT</span><span class="p">,</span> <span class="n">stdout</span><span class="o">=</span><span class="n">subprocess</span><span class="o">.</span><span class="n">PIPE</span><span class="p">,</span>
+                             <span class="n">universal_newlines</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
+        <span class="n">p</span><span class="o">.</span><span class="n">wait</span><span class="p">()</span>
+        <span class="n">output</span> <span class="o">=</span> <span class="p">[</span><span class="n">l</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> <span class="k">for</span> <span class="n">l</span> <span class="ow">in</span> <span class="n">p</span><span class="o">.</span><span class="n">stdout</span><span class="p">]</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">assertEqual</span><span class="p">(</span><span class="n">output</span><span class="p">,</span> <span class="p">[</span><span class="s1">&#39;Hello World!&#39;</span><span class="p">])</span>
+
+    <span class="k">def</span> <span class="nf">test_helloworld_direct</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">test_helloworld</span><span class="p">(</span><span class="s1">&#39;helloworld_direct.py&#39;</span><span class="p">)</span>
+
+    <span class="k">def</span> <span class="nf">test_helloworld_blocking</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">test_helloworld</span><span class="p">(</span><span class="s1">&#39;helloworld_blocking.py&#39;</span><span class="p">)</span>
+
+    <span class="k">def</span> <span class="nf">test_helloworld_tornado</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">test_helloworld</span><span class="p">(</span><span class="s1">&#39;helloworld_tornado.py&#39;</span><span class="p">)</span>
+
+    <span class="k">def</span> <span class="nf">test_helloworld_direct_tornado</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">test_helloworld</span><span class="p">(</span><span class="s1">&#39;helloworld_direct_tornado.py&#39;</span><span class="p">)</span>
+
+    <span class="k">def</span> <span class="nf">test_simple_send_recv</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">recv</span><span class="o">=</span><span class="s1">&#39;simple_recv.py&#39;</span><span class="p">,</span> <span class="n">send</span><span class="o">=</span><span class="s1">&#39;simple_send.py&#39;</span><span class="p">):</span>
+        <span class="n">r</span> <span class="o">=</span> <span class="n">subprocess</span><span class="o">.</span><span class="n">Popen</span><span class="p">([</span><span class="n">recv</span><span class="p">],</span> <span class="n">stderr</span><span class="o">=</span><span class="n">subprocess</span><span class="o">.</span><span class="n">STDOUT</span><span class="p">,</span> <span class="n">stdout</span><span class="o">=</span><span class="n">subprocess</span><span class="o">.</span><span class="n">PIPE</span><span class="p">,</span>
+                             <span class="n">universal_newlines</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
+        <span class="n">s</span> <span class="o">=</span> <span class="n">subprocess</span><span class="o">.</span><span class="n">Popen</span><span class="p">([</span><span class="n">send</span><span class="p">],</span> <span class="n">stderr</span><span class="o">=</span><span class="n">subprocess</span><span class="o">.</span><span class="n">STDOUT</span><span class="p">,</span> <span class="n">stdout</span><span class="o">=</span><span class="n">subprocess</span><span class="o">.</span><span class="n">PIPE</span><span class="p">,</span>
+                             <span class="n">universal_newlines</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
+        <span class="n">s</span><span class="o">.</span><span class="n">wait</span><span class="p">()</span>
+        <span class="n">r</span><span class="o">.</span><span class="n">wait</span><span class="p">()</span>
+        <span class="n">actual</span> <span class="o">=</span> <span class="p">[</span><span class="n">l</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> <span class="k">for</span> <span class="n">l</span> <span class="ow">in</span> <span class="n">r</span><span class="o">.</span><span class="n">stdout</span><span class="p">]</span>
+        <span class="n">expected</span> <span class="o">=</span> <span class="p">[</span><span class="s2">&quot;{</span><span class="si">%s</span><span class="s2">&#39;sequence&#39;: </span><span class="si">%i</span><span class="s2">}&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">_unicode_prefix</span><span class="p">,</span> <span class="p">(</span><span class="n">i</span><span class="o">+</span><span class="mi">1</span><span class="p">))</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">100</span><span class="p">)]</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">assertEqual</span><span class="p">(</span><span class="n">actual</span><span class="p">,</span> <span class="n">expected</span><span class="p">)</span>
+
+    <span class="k">def</span> <span class="nf">test_client_server</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">client</span><span class="o">=</span><span class="p">[</span><span class="s1">&#39;client.py&#39;</span><span class="p">],</span> <span class="n">server</span><span class="o">=</span><span class="p">[</span><span class="s1">&#39;server.py&#39;</span><span class="p">],</span> <span class="n">sleep</span><span class="o">=</span><span class="mi">0</span><span class="p">):</span>
+        <span class="n">s</span> <span class="o">=</span> <span class="n">subprocess</span><span class="o">.</span><span class="n">Popen</span><span class="p">(</span><span class="n">server</span><span class="p">,</span> <span class="n">stderr</span><span class="o">=</span><span class="n">subprocess</span><span class="o">.</span><span class="n">STDOUT</span><span class="p">,</span> <span class="n">stdout</span><span class="o">=</span><span class="n">subprocess</span><span class="o">.</span><span class="n">PIPE</span><span class="p">,</span>
+                             <span class="n">universal_newlines</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
+        <span class="k">if</span> <span class="n">sleep</span><span class="p">:</span>
+            <span class="n">time</span><span class="o">.</span><span class="n">sleep</span><span class="p">(</span><span class="n">sleep</span><span class="p">)</span>
+        <span class="n">c</span> <span class="o">=</span> <span class="n">subprocess</span><span class="o">.</span><span class="n">Popen</span><span class="p">(</span><span class="n">client</span><span class="p">,</span> <span class="n">stderr</span><span class="o">=</span><span class="n">subprocess</span><span class="o">.</span><span class="n">STDOUT</span><span class="p">,</span> <span class="n">stdout</span><span class="o">=</span><span class="n">subprocess</span><span class="o">.</span><span class="n">PIPE</span><span class="p">,</span>
+                             <span class="n">universal_newlines</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
+        <span class="n">c</span><span class="o">.</span><span class="n">wait</span><span class="p">()</span>
+        <span class="n">s</span><span class="o">.</span><span class="n">terminate</span><span class="p">()</span>
+        <span class="n">actual</span> <span class="o">=</span> <span class="p">[</span><span class="n">l</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> <span class="k">for</span> <span class="n">l</span> <span class="ow">in</span> <span class="n">c</span><span class="o">.</span><span class="n">stdout</span><span class="p">]</span>
+        <span class="n">inputs</span> <span class="o">=</span> <span class="p">[</span><span class="s2">&quot;Twas brillig, and the slithy toves&quot;</span><span class="p">,</span>
+                    <span class="s2">&quot;Did gire and gymble in the wabe.&quot;</span><span class="p">,</span>
+                    <span class="s2">&quot;All mimsy were the borogroves,&quot;</span><span class="p">,</span>
+                    <span class="s2">&quot;And the mome raths outgrabe.&quot;</span><span class="p">]</span>
+        <span class="n">expected</span> <span class="o">=</span> <span class="p">[</span><span class="s2">&quot;</span><span class="si">%s</span><span class="s2"> =&gt; </span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">l</span><span class="p">,</span> <span class="n">l</span><span class="o">.</span><span class="n">upper</span><span class="p">())</span> <span class="k">for</span> <span class="n">l</span> <span class="ow">in</span> <span class="n">inputs</span><span class="p">]</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">assertEqual</span><span class="p">(</span><span class="n">actual</span><span class="p">,</span> <span class="n">expected</span><span class="p">)</span>
+
+    <span class="k">def</span> <span class="nf">test_sync_client_server</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">test_client_server</span><span class="p">(</span><span class="n">client</span><span class="o">=</span><span class="p">[</span><span class="s1">&#39;sync_client.py&#39;</span><span class="p">])</span>
+
+    <span class="k">def</span> <span class="nf">test_client_server_tx</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">test_client_server</span><span class="p">(</span><span class="n">server</span><span class="o">=</span><span class="p">[</span><span class="s1">&#39;server_tx.py&#39;</span><span class="p">])</span>
+
+    <span class="k">def</span> <span class="nf">test_sync_client_server_tx</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">test_client_server</span><span class="p">(</span><span class="n">client</span><span class="o">=</span><span class="p">[</span><span class="s1">&#39;sync_client.py&#39;</span><span class="p">],</span> <span class="n">server</span><span class="o">=</span><span class="p">[</span><span class="s1">&#39;server_tx.py&#39;</span><span class="p">])</span>
+
+    <span class="k">def</span> <span class="nf">test_client_server_direct</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">test_client_server</span><span class="p">(</span><span class="n">client</span><span class="o">=</span><span class="p">[</span><span class="s1">&#39;client.py&#39;</span><span class="p">,</span> <span class="s1">&#39;-a&#39;</span><span class="p">,</span> <span class="s1">&#39;localhost:8888/examples&#39;</span><span class="p">],</span> <span class="n">server</span><span class="o">=</span><span class="p">[</span><span class="s1">&#39;server_direct.py&#39;</span><span class="p">],</span> <span class="n">sleep</span><span class="o">=</span><span class="mf">0.5</span><span class="p">)</span>
+
+    <span class="k">def</span> <span class="nf">test_sync_client_server_direct</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">test_client_server</span><span class="p">(</span><span class="n">client</span><span class="o">=</span><span class="p">[</span><span class="s1">&#39;sync_client.py&#39;</span><span class="p">,</span> <span class="s1">&#39;-a&#39;</span><span class="p">,</span> <span class="s1">&#39;localhost:8888/examples&#39;</span><span class="p">],</span> <span class="n">server</span><span class="o">=</span><span class="p">[</span><span class="s1">&#39;server_direct.py&#39;</span><span class="p">],</span> <span class="n">sleep</span><span class="o">=</span><span class="mf">0.5</span><span class="p">)</span>
+
+    <span class="k">def</span> <span class="nf">test_db_send_recv</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">maxDiff</span> <span class="o">=</span> <span class="bp">None</span>
+        <span class="c1"># setup databases</span>
+        <span class="n">subprocess</span><span class="o">.</span><span class="n">check_call</span><span class="p">([</span><span class="s1">&#39;db_ctrl.py&#39;</span><span class="p">,</span> <span class="s1">&#39;init&#39;</span><span class="p">,</span> <span class="s1">&#39;./src_db&#39;</span><span class="p">])</span>
+        <span class="n">subprocess</span><span class="o">.</span><span class="n">check_call</span><span class="p">([</span><span class="s1">&#39;db_ctrl.py&#39;</span><span class="p">,</span> <span class="s1">&#39;init&#39;</span><span class="p">,</span> <span class="s1">&#39;./dst_db&#39;</span><span class="p">])</span>
+        <span class="n">fill</span> <span class="o">=</span> <span class="n">subprocess</span><span class="o">.</span><span class="n">Popen</span><span class="p">([</span><span class="s1">&#39;db_ctrl.py&#39;</span><span class="p">,</span> <span class="s1">&#39;insert&#39;</span><span class="p">,</span> <span class="s1">&#39;./src_db&#39;</span><span class="p">],</span>
+                                <span class="n">stdin</span><span class="o">=</span><span class="n">subprocess</span><span class="o">.</span><span class="n">PIPE</span><span class="p">,</span> <span class="n">stderr</span><span class="o">=</span><span class="n">subprocess</span><span class="o">.</span><span class="n">STDOUT</span><span class="p">,</span> <span class="n">stdout</span><span class="o">=</span><span class="n">subprocess</span><span class="o">.</span><span class="n">PIPE</span><span class="p">,</span>
+                                <span class="n">universal_newlines</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
+        <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">100</span><span class="p">):</span>
+            <span class="n">fill</span><span class="o">.</span><span class="n">stdin</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="s2">&quot;Message-</span><span class="si">%i</span><span class="se">\n</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">i</span><span class="o">+</span><span class="mi">1</span><span class="p">))</span>
+        <span class="n">fill</span><span class="o">.</span><span class="n">stdin</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
+        <span class="n">fill</span><span class="o">.</span><span class="n">wait</span><span class="p">()</span>
+        <span class="c1"># run send and recv</span>
+        <span class="n">r</span> <span class="o">=</span> <span class="n">subprocess</span><span class="o">.</span><span class="n">Popen</span><span class="p">([</span><span class="s1">&#39;db_recv.py&#39;</span><span class="p">,</span> <span class="s1">&#39;-m&#39;</span><span class="p">,</span> <span class="s1">&#39;100&#39;</span><span class="p">],</span> <span class="n">stderr</span><span class="o">=</span><span class="n">subprocess</span><span class="o">.</span><span class="n">STDOUT</span><span class="p">,</span> <span class="n">stdout</span><span class="o">=</span><span class="n">subprocess</span><span class="o">.</span><span class="n">PIPE</span><span class="p">,</span>
+                             <span class="n">universal_newlines</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
+        <span class="n">s</span> <span class="o">=</span> <span class="n">subprocess</span><span class="o">.</span><span class="n">Popen</span><span class="p">([</span><span class="s1">&#39;db_send.py&#39;</span><span class="p">,</span> <span class="s1">&#39;-m&#39;</span><span class="p">,</span> <span class="s1">&#39;100&#39;</span><span class="p">],</span> <span class="n">stderr</span><span class="o">=</span><span class="n">subprocess</span><span class="o">.</span><span class="n">STDOUT</span><span class="p">,</span> <span class="n">stdout</span><span class="o">=</span><span class="n">subprocess</span><span class="o">.</span><span class="n">PIPE</span><span class="p">,</span>
+                             <span class="n">universal_newlines</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
+        <span class="n">s</span><span class="o">.</span><span class="n">wait</span><span class="p">()</span>
+        <span class="n">r</span><span class="o">.</span><span class="n">wait</span><span class="p">()</span>
+        <span class="c1"># verify output of receive</span>
+        <span class="n">actual</span> <span class="o">=</span> <span class="p">[</span><span class="n">l</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> <span class="k">for</span> <span class="n">l</span> <span class="ow">in</span> <span class="n">r</span><span class="o">.</span><span class="n">stdout</span><span class="p">]</span>
+        <span class="n">expected</span> <span class="o">=</span> <span class="p">[</span><span class="s2">&quot;inserted message </span><span class="si">%i</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">i</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">100</span><span class="p">)]</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">assertEqual</span><span class="p">(</span><span class="n">actual</span><span class="p">,</span> <span class="n">expected</span><span class="p">)</span>
+        <span class="c1"># verify state of databases</span>
+        <span class="n">v</span> <span class="o">=</span> <span class="n">subprocess</span><span class="o">.</span><span class="n">Popen</span><span class="p">([</span><span class="s1">&#39;db_ctrl.py&#39;</span><span class="p">,</span> <span class="s1">&#39;list&#39;</span><span class="p">,</span> <span class="s1">&#39;./dst_db&#39;</span><span class="p">],</span> <span class="n">stderr</span><span class="o">=</span><span class="n">subprocess</span><span class="o">.</span><span class="n">STDOUT</span><span class="p">,</span> <span class="n">stdout</span><span class="o">=</span><span class="n">subprocess</span><span class="o">.</span><span class="n">PIPE</span><span class="p">,</span>
+                             <span class="n">universal_newlines</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
+        <span class="n">v</span><span class="o">.</span><span class="n">wait</span><span class="p">()</span>
+        <span class="n">expected</span> <span class="o">=</span> <span class="p">[</span><span class="s2">&quot;(</span><span class="si">%i</span><span class="s2">, </span><span class="si">%s</span><span class="s2">&#39;Message-</span><span class="si">%i</span><span class="s2">&#39;)&quot;</span> <span class="o">%</span> <span class="p">((</span><span class="n">i</span><span class="o">+</span><span class="mi">1</span><span class="p">),</span> <span class="n">_unicode_prefix</span><span class="p">,</span> <span class="p">(</span><span class="n">i</span><span class="o">+</span><span class="mi">1</span><span class="p">))</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">100</span><span class="p">)]</span>
+        <span class="n">actual</span> <span class="o">=</span> <span class="p">[</span><span class="n">l</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> <span class="k">for</span> <span class="n">l</span> <span class="ow">in</span> <span class="n">v</span><span class="o">.</span><span class="n">stdout</span><span class="p">]</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">assertEqual</span><span class="p">(</span><span class="n">actual</span><span class="p">,</span> <span class="n">expected</span><span class="p">)</span>
+
+    <span class="k">def</span> <span class="nf">test_tx_send_tx_recv</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">test_simple_send_recv</span><span class="p">(</span><span class="n">recv</span><span class="o">=</span><span class="s1">&#39;tx_recv.py&#39;</span><span class="p">,</span> <span class="n">send</span><span class="o">=</span><span class="s1">&#39;tx_send.py&#39;</span><span class="p">)</span>
+
+    <span class="k">def</span> <span class="nf">test_simple_send_direct_recv</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">maxDiff</span> <span class="o">=</span> <span class="bp">None</span>
+        <span class="n">r</span> <span class="o">=</span> <span class="n">subprocess</span><span class="o">.</span><span class="n">Popen</span><span class="p">([</span><span class="s1">&#39;direct_recv.py&#39;</span><span class="p">,</span> <span class="s1">&#39;-a&#39;</span><span class="p">,</span> <span class="s1">&#39;localhost:8888&#39;</span><span class="p">],</span> <span class="n">stderr</span><span class="o">=</span><span class="n">subprocess</span><span class="o">.</span><span class="n">STDOUT</span><span class="p">,</span> <span class="n">stdout</span><span class="o">=</span><span class="n">subprocess</span><span class="o">.</span><span class="n">PIPE</span><span class="p">,</span>
+                             <span class="n">universal_newlines</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
+        <span class="n">time</span><span class="o">.</span><span class="n">sleep</span><span class="p">(</span><span class="mf">0.5</span><span class="p">)</span>
+        <span class="n">s</span> <span class="o">=</span> <span class="n">subprocess</span><span class="o">.</span><span class="n">Popen</span><span class="p">([</span><span class="s1">&#39;simple_send.py&#39;</span><span class="p">,</span> <span class="s1">&#39;-a&#39;</span><span class="p">,</span> <span class="s1">&#39;localhost:8888&#39;</span><span class="p">],</span> <span class="n">stderr</span><span class="o">=</span><span class="n">subprocess</span><span class="o">.</span><span class="n">STDOUT</span><span class="p">,</span> <span class="n">stdout</span><span class="o">=</span><span class="n">subprocess</span><span class="o">.</span><span class="n">PIPE</span><span class="p">,</span>
+                             <span class="n">universal_newlines</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
+        <span class="n">s</span><span class="o">.</span><span class="n">wait</span><span class="p">()</span>
+        <span class="n">r</span><span class="o">.</span><span class="n">wait</span><span class="p">()</span>
+        <span class="n">actual</span> <span class="o">=</span> <span class="p">[</span><span class="n">l</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> <span class="k">for</span> <span class="n">l</span> <span class="ow">in</span> <span class="n">r</span><span class="o">.</span><span class="n">stdout</span><span class="p">]</span>
+        <span class="n">expected</span> <span class="o">=</span> <span class="p">[</span><span class="s2">&quot;{</span><span class="si">%s</span><span class="s2">&#39;sequence&#39;: </span><span class="si">%i</span><span class="s2">}&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">_unicode_prefix</span><span class="p">,</span> <span class="p">(</span><span class="n">i</span><span class="o">+</span><span class="mi">1</span><span class="p">))</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">100</span><span class="p">)]</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">assertEqual</span><span class="p">(</span><span class="n">actual</span><span class="p">,</span> <span class="n">expected</span><span class="p">)</span>
+
+    <span class="k">def</span> <span class="nf">test_direct_send_simple_recv</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="n">s</span> <span class="o">=</span> <span class="n">subprocess</span><span class="o">.</span><span class="n">Popen</span><span class="p">([</span><span class="s1">&#39;direct_send.py&#39;</span><span class="p">,</span> <span class="s1">&#39;-a&#39;</span><span class="p">,</span> <span class="s1">&#39;localhost:8888&#39;</span><span class="p">],</span> <span class="n">stderr</span><span class="o">=</span><span class="n">subprocess</span><span class="o">.</span><span class="n">STDOUT</span><span class="p">,</span> <span class="n">stdout</span><span class="o">=</span><span class="n">subprocess</span><span class="o">.</span><span class="n">PIPE</span><span class="p">,</span>
+                             <span class="n">universal_newlines</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
+        <span class="n">time</span><span class="o">.</span><span class="n">sleep</span><span class="p">(</span><span class="mf">0.5</span><span class="p">)</span>
+        <span class="n">r</span> <span class="o">=</span> <span class="n">subprocess</span><span class="o">.</span><span class="n">Popen</span><span class="p">([</span><span class="s1">&#39;simple_recv.py&#39;</span><span class="p">,</span> <span class="s1">&#39;-a&#39;</span><span class="p">,</span> <span class="s1">&#39;localhost:8888&#39;</span><span class="p">],</span> <span class="n">stderr</span><span class="o">=</span><span class="n">subprocess</span><span class="o">.</span><span class="n">STDOUT</span><span class="p">,</span> <span class="n">stdout</span><span class="o">=</span><span class="n">subprocess</span><span class="o">.</span><span class="n">PIPE</span><span class="p">,</span>
+                             <span class="n">universal_newlines</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
+        <span class="n">r</span><span class="o">.</span><span class="n">wait</span><span class="p">()</span>
+        <span class="n">s</span><span class="o">.</span><span class="n">wait</span><span class="p">()</span>
+        <span class="n">actual</span> <span class="o">=</span> <span class="p">[</span><span class="n">l</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> <span class="k">for</span> <span class="n">l</span> <span class="ow">in</span> <span class="n">r</span><span class="o">.</span><span class="n">stdout</span><span class="p">]</span>
+        <span class="n">expected</span> <span class="o">=</span> <span class="p">[</span><span class="s2">&quot;{</span><span class="si">%s</span><span class="s2">&#39;sequence&#39;: </span><span class="si">%i</span><span class="s2">}&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">_unicode_prefix</span><span class="p">,</span> <span class="p">(</span><span class="n">i</span><span class="o">+</span><span class="mi">1</span><span class="p">))</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">100</span><span class="p">)]</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">assertEqual</span><span class="p">(</span><span class="n">actual</span><span class="p">,</span> <span class="n">expected</span><span class="p">)</span>
+</pre></div>
+
+<p><a href="test_examples.py">Download this file</a></p>
+
+
+          <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/75ca8b14/content/releases/qpid-proton-0.13.0/proton/python/examples/tx_recv.py
----------------------------------------------------------------------
diff --git a/content/releases/qpid-proton-0.13.0/proton/python/examples/tx_recv.py b/content/releases/qpid-proton-0.13.0/proton/python/examples/tx_recv.py
new file mode 100755
index 0000000..4baddcf
--- /dev/null
+++ b/content/releases/qpid-proton-0.13.0/proton/python/examples/tx_recv.py
@@ -0,0 +1,80 @@
+#!/usr/bin/env python
+#
+# 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.
+#
+
+from __future__ import print_function
+import optparse
+from proton import Url
+from proton.reactor import Container
+from proton.handlers import MessagingHandler, TransactionHandler
+
+class TxRecv(MessagingHandler, TransactionHandler):
+    def __init__(self, url, messages, batch_size):
+        super(TxRecv, self).__init__(prefetch=0, auto_accept=False)
+        self.url = Url(url)
+        self.expected = messages
+        self.batch_size = batch_size
+        self.current_batch = 0
+        self.committed = 0
+
+    def on_start(self, event):
+        self.container = event.container
+        self.conn = self.container.connect(self.url)
+        self.receiver = self.container.create_receiver(self.conn, self.url.path)
+        self.container.declare_transaction(self.conn, handler=self)
+        self.transaction = None
+
+    def on_message(self, event):
+        print(event.message.body)
+        self.transaction.accept(event.delivery)
+        self.current_batch += 1
+        if self.current_batch == self.batch_size:
+            self.transaction.commit()
+            self.transaction = None
+
+    def on_transaction_declared(self, event):
+        self.receiver.flow(self.batch_size)
+        self.transaction = event.transaction
+
+    def on_transaction_committed(self, event):
+        self.committed += self.current_batch
+        self.current_batch = 0
+        if self.expected == 0 or self.committed < self.expected:
+            self.container.declare_transaction(self.conn, handler=self)
+        else:
+            event.connection.close()
+
+    def on_disconnected(self, event):
+        self.current_batch = 0
+
+parser = optparse.OptionParser(usage="usage: %prog [options]")
+parser.add_option("-a", "--address", default="localhost:5672/examples",
+                  help="address from which messages are received (default %default)")
+parser.add_option("-m", "--messages", type="int", default=100,
+                  help="number of messages to receive; 0 receives indefinitely (default %default)")
+parser.add_option("-b", "--batch-size", type="int", default=10,
+                  help="number of messages in each transaction (default %default)")
+opts, args = parser.parse_args()
+
+try:
+    Container(TxRecv(opts.address, opts.messages, opts.batch_size)).run()
+except KeyboardInterrupt: pass
+
+
+

http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/content/releases/qpid-proton-0.13.0/proton/python/examples/tx_recv.py.html
----------------------------------------------------------------------
diff --git a/content/releases/qpid-proton-0.13.0/proton/python/examples/tx_recv.py.html b/content/releases/qpid-proton-0.13.0/proton/python/examples/tx_recv.py.html
new file mode 100644
index 0000000..fd8b678
--- /dev/null
+++ b/content/releases/qpid-proton-0.13.0/proton/python/examples/tx_recv.py.html
@@ -0,0 +1,206 @@
+<!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>tx_recv.py - 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/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;">
+        <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-proton-0.13.0/index.html">Qpid Proton 0.13.0</a></li><li><a href="/releases/qpid-proton-0.13.0/proton/python/examples/index.html">Proton Python Examples</a></li><li>tx_recv.py</li></ul>
+
+        <div id="-middle-content">
+          
+<h1>tx_recv.py</h1>
+<div class="highlight"><pre><span></span><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">optparse</span>
+<span class="kn">from</span> <span class="nn">proton</span> <span class="kn">import</span> <span class="n">Url</span>
+<span class="kn">from</span> <span class="nn">proton.reactor</span> <span class="kn">import</span> <span class="n">Container</span>
+<span class="kn">from</span> <span class="nn">proton.handlers</span> <span class="kn">import</span> <span class="n">MessagingHandler</span><span class="p">,</span> <span class="n">TransactionHandler</span>
+
+<span class="k">class</span> <span class="nc">TxRecv</span><span class="p">(</span><span class="n">MessagingHandler</span><span class="p">,</span> <span class="n">TransactionHandler</span><span class="p">):</span>
+    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">url</span><span class="p">,</span> <span class="n">messages</span><span class="p">,</span> <span class="n">batch_size</span><span class="p">):</span>
+        <span class="nb">super</span><span class="p">(</span><span class="n">TxRecv</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">__init__</span><span class="p">(</span><span class="n">prefetch</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">auto_accept</span><span class="o">=</span><span class="bp">False</span><span class="p">)</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">url</span> <span class="o">=</span> <span class="n">Url</span><span class="p">(</span><span class="n">url</span><span class="p">)</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">expected</span> <span class="o">=</span> <span class="n">messages</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">batch_size</span> <span class="o">=</span> <span class="n">batch_size</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">current_batch</span> <span class="o">=</span> <span class="mi">0</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">committed</span> <span class="o">=</span> <span class="mi">0</span>
+
+    <span class="k">def</span> <span class="nf">on_start</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">container</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">container</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">conn</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">container</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">url</span><span class="p">)</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">receiver</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">container</span><span class="o">.</span><span class="n">create_receiver</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">conn</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">url</span><span class="o">.</span><span class="n">path</span><span class="p">)</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">container</span><span class="o">.</span><span class="n">declare_transaction</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">conn</span><span class="p">,</span> <span class="n">handler</span><span class="o">=</span><span class="bp">self</span><span class="p">)</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">transaction</span> <span class="o">=</span> <span class="bp">None</span>
+
+    <span class="k">def</span> <span class="nf">on_message</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="k">print</span><span class="p">(</span><span class="n">event</span><span class="o">.</span><span class="n">message</span><span class="o">.</span><span class="n">body</span><span class="p">)</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">transaction</span><span class="o">.</span><span class="n">accept</span><span class="p">(</span><span class="n">event</span><span class="o">.</span><span class="n">delivery</span><span class="p">)</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">current_batch</span> <span class="o">+=</span> <span class="mi">1</span>
+        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">current_batch</span> <span class="o">==</span> <span class="bp">self</span><span class="o">.</span><span class="n">batch_size</span><span class="p">:</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">transaction</span><span class="o">.</span><span class="n">commit</span><span class="p">()</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">transaction</span> <span class="o">=</span> <span class="bp">None</span>
+
+    <span class="k">def</span> <span class="nf">on_transaction_declared</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">receiver</span><span class="o">.</span><span class="n">flow</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">batch_size</span><span class="p">)</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">transaction</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">transaction</span>
+
+    <span class="k">def</span> <span class="nf">on_transaction_committed</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">committed</span> <span class="o">+=</span> <span class="bp">self</span><span class="o">.</span><span class="n">current_batch</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">current_batch</span> <span class="o">=</span> <span class="mi">0</span>
+        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">expected</span> <span class="o">==</span> <span class="mi">0</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">committed</span> <span class="o">&lt;</span> <span class="bp">self</span><span class="o">.</span><span class="n">expected</span><span class="p">:</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">container</span><span class="o">.</span><span class="n">declare_transaction</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">conn</span><span class="p">,</span> <span class="n">handler</span><span class="o">=</span><span class="bp">self</span><span class="p">)</span>
+        <span class="k">else</span><span class="p">:</span>
+            <span class="n">event</span><span class="o">.</span><span class="n">connection</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
+
+    <span class="k">def</span> <span class="nf">on_disconnected</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">current_batch</span> <span class="o">=</span> <span class="mi">0</span>
+
+<span class="n">parser</span> <span class="o">=</span> <span class="n">optparse</span><span class="o">.</span><span class="n">OptionParser</span><span class="p">(</span><span class="n">usage</span><span class="o">=</span><span class="s2">&quot;usage: %prog [options]&quot;</span><span class="p">)</span>
+<span class="n">parser</span><span class="o">.</span><span class="n">add_option</span><span class="p">(</span><span class="s2">&quot;-a&quot;</span><span class="p">,</span> <span class="s2">&quot;--address&quot;</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="s2">&quot;localhost:5672/examples&quot;</span><span class="p">,</span>
+                  <span class="n">help</span><span class="o">=</span><span class="s2">&quot;address from which messages are received (default </span><span class="si">%d</span><span class="s2">efault)&quot;</span><span class="p">)</span>
+<span class="n">parser</span><span class="o">.</span><span class="n">add_option</span><span class="p">(</span><span class="s2">&quot;-m&quot;</span><span class="p">,</span> <span class="s2">&quot;--messages&quot;</span><span class="p">,</span> <span class="nb">type</span><span class="o">=</span><span class="s2">&quot;int&quot;</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="mi">100</span><span class="p">,</span>
+                  <span class="n">help</span><span class="o">=</span><span class="s2">&quot;number of messages to receive; 0 receives indefinitely (default </span><span class="si">%d</span><span class="s2">efault)&quot;</span><span class="p">)</span>
+<span class="n">parser</span><span class="o">.</span><span class="n">add_option</span><span class="p">(</span><span class="s2">&quot;-b&quot;</span><span class="p">,</span> <span class="s2">&quot;--batch-size&quot;</span><span class="p">,</span> <span class="nb">type</span><span class="o">=</span><span class="s2">&quot;int&quot;</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="mi">10</span><span class="p">,</span>
+                  <span class="n">help</span><span class="o">=</span><span class="s2">&quot;number of messages in each transaction (default </span><span class="si">%d</span><span class="s2">efault)&quot;</span><span class="p">)</span>
+<span class="n">opts</span><span class="p">,</span> <span class="n">args</span> <span class="o">=</span> <span class="n">parser</span><span class="o">.</span><span class="n">parse_args</span><span class="p">()</span>
+
+<span class="k">try</span><span class="p">:</span>
+    <span class="n">Container</span><span class="p">(</span><span class="n">TxRecv</span><span class="p">(</span><span class="n">opts</span><span class="o">.</span><span class="n">address</span><span class="p">,</span> <span class="n">opts</span><span class="o">.</span><span class="n">messages</span><span class="p">,</span> <span class="n">opts</span><span class="o">.</span><span class="n">batch_size</span><span class="p">))</span><span class="o">.</span><span class="n">run</span><span class="p">()</span>
+<span class="k">except</span> <span class="ne">KeyboardInterrupt</span><span class="p">:</span> <span class="k">pass</span>
+</pre></div>
+
+<p><a href="tx_recv.py">Download this file</a></p>
+
+
+          <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/75ca8b14/content/releases/qpid-proton-0.13.0/proton/python/examples/tx_recv_interactive.py
----------------------------------------------------------------------
diff --git a/content/releases/qpid-proton-0.13.0/proton/python/examples/tx_recv_interactive.py b/content/releases/qpid-proton-0.13.0/proton/python/examples/tx_recv_interactive.py
new file mode 100755
index 0000000..c38f651
--- /dev/null
+++ b/content/releases/qpid-proton-0.13.0/proton/python/examples/tx_recv_interactive.py
@@ -0,0 +1,85 @@
+#!/usr/bin/env python
+#
+# 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.
+#
+
+from __future__ import print_function
+import sys
+import threading
+from proton.reactor import ApplicationEvent, Container, EventInjector
+from proton.handlers import MessagingHandler, TransactionHandler
+
+class TxRecv(MessagingHandler, TransactionHandler):
+    def __init__(self):
+        super(TxRecv, self).__init__(prefetch=0, auto_accept=False)
+
+    def on_start(self, event):
+        self.container = event.container
+        self.conn = self.container.connect("localhost:5672")
+        self.receiver = self.container.create_receiver(self.conn, "examples")
+        self.container.declare_transaction(self.conn, handler=self, settle_before_discharge=True)
+        self.transaction = None
+
+    def on_message(self, event):
+        print(event.message.body)
+        self.transaction.accept(event.delivery)
+
+    def on_transaction_declared(self, event):
+        self.transaction = event.transaction
+        print("transaction declared")
+
+    def on_transaction_committed(self, event):
+        print("transaction committed")
+        self.container.declare_transaction(self.conn, handler=self)
+
+    def on_transaction_aborted(self, event):
+        print("transaction aborted")
+        self.container.declare_transaction(self.conn, handler=self)
+
+    def on_commit(self, event):
+        self.transaction.commit()
+
+    def on_abort(self, event):
+        self.transaction.abort()
+
+    def on_fetch(self, event):
+        self.receiver.flow(1)
+
+    def on_quit(self, event):
+        c = self.receiver.connection
+        self.receiver.close()
+        c.close()
+
+try:
+    reactor = Container(TxRecv())
+    events = EventInjector()
+    reactor.selectable(events)
+    thread = threading.Thread(target=reactor.run)
+    thread.daemon=True
+    thread.start()
+
+    print("Enter 'fetch', 'commit' or 'abort'")
+    while True:
+        line = sys.stdin.readline()
+        if line:
+            events.trigger(ApplicationEvent(line.strip()))
+        else:
+            break
+except KeyboardInterrupt: pass
+
+

http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/content/releases/qpid-proton-0.13.0/proton/python/examples/tx_recv_interactive.py.html
----------------------------------------------------------------------
diff --git a/content/releases/qpid-proton-0.13.0/proton/python/examples/tx_recv_interactive.py.html b/content/releases/qpid-proton-0.13.0/proton/python/examples/tx_recv_interactive.py.html
new file mode 100644
index 0000000..bd8888f
--- /dev/null
+++ b/content/releases/qpid-proton-0.13.0/proton/python/examples/tx_recv_interactive.py.html
@@ -0,0 +1,212 @@
+<!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>tx_recv_interactive.py - 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/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;">
+        <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-proton-0.13.0/index.html">Qpid Proton 0.13.0</a></li><li><a href="/releases/qpid-proton-0.13.0/proton/python/examples/index.html">Proton Python 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></span><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>
+<span class="kn">import</span> <span class="nn">threading</span>
+<span class="kn">from</span> <span class="nn">proton.reactor</span> <span class="kn">import</span> <span class="n">ApplicationEvent</span><span class="p">,</span> <span class="n">Container</span><span class="p">,</span> <span class="n">EventInjector</span>
+<span class="kn">from</span> <span class="nn">proton.handlers</span> <span class="kn">import</span> <span class="n">MessagingHandler</span><span class="p">,</span> <span class="n">TransactionHandler</span>
+
+<span class="k">class</span> <span class="nc">TxRecv</span><span class="p">(</span><span class="n">MessagingHandler</span><span class="p">,</span> <span class="n">TransactionHandler</span><span class="p">):</span>
+    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="nb">super</span><span class="p">(</span><span class="n">TxRecv</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">__init__</span><span class="p">(</span><span class="n">prefetch</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">auto_accept</span><span class="o">=</span><span class="bp">False</span><span class="p">)</span>
+
+    <span class="k">def</span> <span class="nf">on_start</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">container</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">container</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">conn</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">container</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="s2">&quot;localhost:5672&quot;</span><span class="p">)</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">receiver</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">container</span><span class="o">.</span><span class="n">create_receiver</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">conn</span><span class="p">,</span> <span class="s2">&quot;examples&quot;</span><span class="p">)</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">container</span><span class="o">.</span><span class="n">declare_transaction</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">conn</span><span class="p">,</span> <span class="n">handler</span><span class="o">=</span><span class="bp">self</span><span class="p">,</span> <span class="n">settle_before_discharge</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">transaction</span> <span class="o">=</span> <span class="bp">None</span>
+
+    <span class="k">def</span> <span class="nf">on_message</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="k">print</span><span class="p">(</span><span class="n">event</span><span class="o">.</span><span class="n">message</span><span class="o">.</span><span class="n">body</span><span class="p">)</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">transaction</span><span class="o">.</span><span class="n">accept</span><span class="p">(</span><span class="n">event</span><span class="o">.</span><span class="n">delivery</span><span class="p">)</span>
+
+    <span class="k">def</span> <span class="nf">on_transaction_declared</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">transaction</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">transaction</span>
+        <span class="k">print</span><span class="p">(</span><span class="s2">&quot;transaction declared&quot;</span><span class="p">)</span>
+
+    <span class="k">def</span> <span class="nf">on_transaction_committed</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="k">print</span><span class="p">(</span><span class="s2">&quot;transaction committed&quot;</span><span class="p">)</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">container</span><span class="o">.</span><span class="n">declare_transaction</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">conn</span><span class="p">,</span> <span class="n">handler</span><span class="o">=</span><span class="bp">self</span><span class="p">)</span>
+
+    <span class="k">def</span> <span class="nf">on_transaction_aborted</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="k">print</span><span class="p">(</span><span class="s2">&quot;transaction aborted&quot;</span><span class="p">)</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">container</span><span class="o">.</span><span class="n">declare_transaction</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">conn</span><span class="p">,</span> <span class="n">handler</span><span class="o">=</span><span class="bp">self</span><span class="p">)</span>
+
+    <span class="k">def</span> <span class="nf">on_commit</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">transaction</span><span class="o">.</span><span class="n">commit</span><span class="p">()</span>
+
+    <span class="k">def</span> <span class="nf">on_abort</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">transaction</span><span class="o">.</span><span class="n">abort</span><span class="p">()</span>
+
+    <span class="k">def</span> <span class="nf">on_fetch</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">receiver</span><span class="o">.</span><span class="n">flow</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span>
+
+    <span class="k">def</span> <span class="nf">on_quit</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="n">c</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">receiver</span><span class="o">.</span><span class="n">connection</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">receiver</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
+        <span class="n">c</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
+
+<span class="k">try</span><span class="p">:</span>
+    <span class="n">reactor</span> <span class="o">=</span> <span class="n">Container</span><span class="p">(</span><span class="n">TxRecv</span><span class="p">())</span>
+    <span class="n">events</span> <span class="o">=</span> <span class="n">EventInjector</span><span class="p">()</span>
+    <span class="n">reactor</span><span class="o">.</span><span class="n">selectable</span><span class="p">(</span><span class="n">events</span><span class="p">)</span>
+    <span class="n">thread</span> <span class="o">=</span> <span class="n">threading</span><span class="o">.</span><span class="n">Thread</span><span class="p">(</span><span class="n">target</span><span class="o">=</span><span class="n">reactor</span><span class="o">.</span><span class="n">run</span><span class="p">)</span>
+    <span class="n">thread</span><span class="o">.</span><span class="n">daemon</span><span class="o">=</span><span class="bp">True</span>
+    <span class="n">thread</span><span class="o">.</span><span class="n">start</span><span class="p">()</span>
+
+    <span class="k">print</span><span class="p">(</span><span class="s2">&quot;Enter &#39;fetch&#39;, &#39;commit&#39; or &#39;abort&#39;&quot;</span><span class="p">)</span>
+    <span class="k">while</span> <span class="bp">True</span><span class="p">:</span>
+        <span class="n">line</span> <span class="o">=</span> <span class="n">sys</span><span class="o">.</span><span class="n">stdin</span><span class="o">.</span><span class="n">readline</span><span class="p">()</span>
+        <span class="k">if</span> <span class="n">line</span><span class="p">:</span>
+            <span class="n">events</span><span class="o">.</span><span class="n">trigger</span><span class="p">(</span><span class="n">ApplicationEvent</span><span class="p">(</span><span class="n">line</span><span class="o">.</span><span class="n">strip</span><span class="p">()))</span>
+        <span class="k">else</span><span class="p">:</span>
+            <span class="k">break</span>
+<span class="k">except</span> <span class="ne">KeyboardInterrupt</span><span class="p">:</span> <span class="k">pass</span>
+</pre></div>
+
+<p><a href="tx_recv_interactive.py">Download this file</a></p>
+
+
+          <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/75ca8b14/content/releases/qpid-proton-0.13.0/proton/python/examples/tx_send.py
----------------------------------------------------------------------
diff --git a/content/releases/qpid-proton-0.13.0/proton/python/examples/tx_send.py b/content/releases/qpid-proton-0.13.0/proton/python/examples/tx_send.py
new file mode 100755
index 0000000..bda6780
--- /dev/null
+++ b/content/releases/qpid-proton-0.13.0/proton/python/examples/tx_send.py
@@ -0,0 +1,89 @@
+#!/usr/bin/env python
+#
+# 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.
+#
+
+from __future__ import print_function, unicode_literals
+import optparse
+from proton import Message, Url
+from proton.reactor import Container
+from proton.handlers import MessagingHandler, TransactionHandler
+
+class TxSend(MessagingHandler, TransactionHandler):
+    def __init__(self, url, messages, batch_size):
+        super(TxSend, self).__init__()
+        self.url = Url(url)
+        self.current_batch = 0
+        self.committed = 0
+        self.confirmed = 0
+        self.total = messages
+        self.batch_size = batch_size
+
+    def on_start(self, event):
+        self.container = event.container
+        self.conn = self.container.connect(self.url)
+        self.sender = self.container.create_sender(self.conn, self.url.path)
+        self.container.declare_transaction(self.conn, handler=self)
+        self.transaction = None
+
+    def on_transaction_declared(self, event):
+        self.transaction = event.transaction
+        self.send()
+
+    def on_sendable(self, event):
+        self.send()
+
+    def send(self):
+        while self.transaction and self.sender.credit and (self.committed + self.current_batch) < self.total:
+            seq = self.committed + self.current_batch + 1
+            msg = Message(id=seq, body={'sequence':seq})
+            self.transaction.send(self.sender, msg)
+            self.current_batch += 1
+            if self.current_batch == self.batch_size:
+                self.transaction.commit()
+                self.transaction = None
+
+    def on_accepted(self, event):
+        if event.sender == self.sender:
+            self.confirmed += 1
+
+    def on_transaction_committed(self, event):
+        self.committed += self.current_batch
+        if self.committed == self.total:
+            print("all messages committed")
+            event.connection.close()
+        else:
+            self.current_batch = 0
+            self.container.declare_transaction(self.conn, handler=self)
+
+    def on_disconnected(self, event):
+        self.current_batch = 0
+
+parser = optparse.OptionParser(usage="usage: %prog [options]",
+                               description="Send messages transactionally to the supplied address.")
+parser.add_option("-a", "--address", default="localhost:5672/examples",
+                  help="address to which messages are sent (default %default)")
+parser.add_option("-m", "--messages", type="int", default=100,
+                  help="number of messages to send (default %default)")
+parser.add_option("-b", "--batch-size", type="int", default=10,
+                  help="number of messages in each transaction (default %default)")
+opts, args = parser.parse_args()
+
+try:
+    Container(TxSend(opts.address, opts.messages, opts.batch_size)).run()
+except KeyboardInterrupt: pass


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


[24/26] qpid-site git commit: QPID-7350: Examples that should have gone with the previous commit

Posted by jr...@apache.org.
http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/content/releases/qpid-proton-0.13.0/proton/cpp/examples/direct_recv.cpp.html
----------------------------------------------------------------------
diff --git a/content/releases/qpid-proton-0.13.0/proton/cpp/examples/direct_recv.cpp.html b/content/releases/qpid-proton-0.13.0/proton/cpp/examples/direct_recv.cpp.html
new file mode 100644
index 0000000..54ac41e
--- /dev/null
+++ b/content/releases/qpid-proton-0.13.0/proton/cpp/examples/direct_recv.cpp.html
@@ -0,0 +1,219 @@
+<!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>direct_recv.cpp - 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/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;">
+        <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-proton-0.13.0/index.html">Qpid Proton 0.13.0</a></li><li><a href="/releases/qpid-proton-0.13.0/proton/cpp/examples/index.html">Proton C++ Examples</a></li><li>direct_recv.cpp</li></ul>
+
+        <div id="-middle-content">
+          
+<h1>direct_recv.cpp</h1>
+<div class="highlight"><pre><span></span><span class="cp">#include</span> <span class="cpf">&quot;options.hpp&quot;</span><span class="cp"></span>
+
+<span class="cp">#include</span> <span class="cpf">&lt;proton/connection.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/default_container.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/delivery.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/messaging_handler.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/link.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/value.hpp&gt;</span><span class="cp"></span>
+
+<span class="cp">#include</span> <span class="cpf">&lt;iostream&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;map&gt;</span><span class="cp"></span>
+
+<span class="cp">#include</span> <span class="cpf">&quot;fake_cpp11.hpp&quot;</span><span class="cp"></span>
+
+<span class="k">class</span> <span class="nc">direct_recv</span> <span class="o">:</span> <span class="k">public</span> <span class="n">proton</span><span class="o">::</span><span class="n">messaging_handler</span> <span class="p">{</span>
+  <span class="k">private</span><span class="o">:</span>
+    <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">url</span><span class="p">;</span>
+    <span class="n">proton</span><span class="o">::</span><span class="n">listener</span> <span class="n">listener</span><span class="p">;</span>
+    <span class="kt">uint64_t</span> <span class="n">expected</span><span class="p">;</span>
+    <span class="kt">uint64_t</span> <span class="n">received</span><span class="p">;</span>
+
+  <span class="k">public</span><span class="o">:</span>
+    <span class="n">direct_recv</span><span class="p">(</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="o">&amp;</span><span class="n">s</span><span class="p">,</span> <span class="kt">int</span> <span class="n">c</span><span class="p">)</span> <span class="o">:</span> <span class="n">url</span><span class="p">(</span><span class="n">s</span><span class="p">),</span> <span class="n">expected</span><span class="p">(</span><span class="n">c</span><span class="p">),</span> <span class="n">received</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span> <span class="p">{}</span>
+
+    <span class="kt">void</span> <span class="n">on_container_start</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">container</span> <span class="o">&amp;</span><span class="n">c</span><span class="p">)</span> <span class="n">OVERRIDE</span> <span class="p">{</span>
+        <span class="n">listener</span> <span class="o">=</span> <span class="n">c</span><span class="p">.</span><span class="n">listen</span><span class="p">(</span><span class="n">url</span><span class="p">);</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;direct_recv listening on &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">url</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+    <span class="p">}</span>
+
+    <span class="kt">void</span> <span class="n">on_message</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">delivery</span> <span class="o">&amp;</span><span class="n">d</span><span class="p">,</span> <span class="n">proton</span><span class="o">::</span><span class="n">message</span> <span class="o">&amp;</span><span class="n">msg</span><span class="p">)</span> <span class="n">OVERRIDE</span> <span class="p">{</span>
+        <span class="k">if</span> <span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">coerce</span><span class="o">&lt;</span><span class="kt">uint64_t</span><span class="o">&gt;</span><span class="p">(</span><span class="n">msg</span><span class="p">.</span><span class="n">id</span><span class="p">())</span> <span class="o">&lt;</span> <span class="n">received</span><span class="p">)</span> <span class="p">{</span>
+            <span class="k">return</span><span class="p">;</span> <span class="c1">// Ignore duplicate</span>
+        <span class="p">}</span>
+
+        <span class="k">if</span> <span class="p">(</span><span class="n">expected</span> <span class="o">==</span> <span class="mi">0</span> <span class="o">||</span> <span class="n">received</span> <span class="o">&lt;</span> <span class="n">expected</span><span class="p">)</span> <span class="p">{</span>
+            <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="n">msg</span><span class="p">.</span><span class="n">body</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+            <span class="n">received</span><span class="o">++</span><span class="p">;</span>
+        <span class="p">}</span>
+
+        <span class="k">if</span> <span class="p">(</span><span class="n">received</span> <span class="o">==</span> <span class="n">expected</span><span class="p">)</span> <span class="p">{</span>
+            <span class="n">d</span><span class="p">.</span><span class="n">receiver</span><span class="p">().</span><span class="n">close</span><span class="p">();</span>
+            <span class="n">d</span><span class="p">.</span><span class="n">connection</span><span class="p">().</span><span class="n">close</span><span class="p">();</span>
+            <span class="n">listener</span><span class="p">.</span><span class="n">stop</span><span class="p">();</span>
+        <span class="p">}</span>
+    <span class="p">}</span>
+<span class="p">};</span>
+
+<span class="kt">int</span> <span class="nf">main</span><span class="p">(</span><span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">**</span><span class="n">argv</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">address</span><span class="p">(</span><span class="s">&quot;127.0.0.1:5672/examples&quot;</span><span class="p">);</span>
+    <span class="kt">int</span> <span class="n">message_count</span> <span class="o">=</span> <span class="mi">100</span><span class="p">;</span>
+    <span class="n">example</span><span class="o">::</span><span class="n">options</span> <span class="n">opts</span><span class="p">(</span><span class="n">argc</span><span class="p">,</span> <span class="n">argv</span><span class="p">);</span>
+
+    <span class="n">opts</span><span class="p">.</span><span class="n">add_value</span><span class="p">(</span><span class="n">address</span><span class="p">,</span> <span class="sc">&#39;a&#39;</span><span class="p">,</span> <span class="s">&quot;address&quot;</span><span class="p">,</span> <span class="s">&quot;listen and receive on URL&quot;</span><span class="p">,</span> <span class="s">&quot;URL&quot;</span><span class="p">);</span>
+    <span class="n">opts</span><span class="p">.</span><span class="n">add_value</span><span class="p">(</span><span class="n">message_count</span><span class="p">,</span> <span class="sc">&#39;m&#39;</span><span class="p">,</span> <span class="s">&quot;messages&quot;</span><span class="p">,</span> <span class="s">&quot;receive COUNT messages&quot;</span><span class="p">,</span> <span class="s">&quot;COUNT&quot;</span><span class="p">);</span>
+
+    <span class="k">try</span> <span class="p">{</span>
+        <span class="n">opts</span><span class="p">.</span><span class="n">parse</span><span class="p">();</span>
+
+        <span class="n">direct_recv</span> <span class="n">recv</span><span class="p">(</span><span class="n">address</span><span class="p">,</span> <span class="n">message_count</span><span class="p">);</span>
+        <span class="n">proton</span><span class="o">::</span><span class="n">default_container</span><span class="p">(</span><span class="n">recv</span><span class="p">).</span><span class="n">run</span><span class="p">();</span>
+
+        <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">catch</span> <span class="p">(</span><span class="k">const</span> <span class="n">example</span><span class="o">::</span><span class="n">bad_option</span><span class="o">&amp;</span> <span class="n">e</span><span class="p">)</span> <span class="p">{</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="n">opts</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span> <span class="o">&lt;&lt;</span> <span class="n">e</span><span class="p">.</span><span class="n">what</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">catch</span> <span class="p">(</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">exception</span><span class="o">&amp;</span> <span class="n">e</span><span class="p">)</span> <span class="p">{</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">cerr</span> <span class="o">&lt;&lt;</span> <span class="n">e</span><span class="p">.</span><span class="n">what</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+    <span class="p">}</span>
+
+    <span class="k">return</span> <span class="mi">1</span><span class="p">;</span>
+<span class="p">}</span>
+</pre></div>
+
+<p><a href="direct_recv.cpp">Download this file</a></p>
+
+
+          <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/75ca8b14/content/releases/qpid-proton-0.13.0/proton/cpp/examples/direct_send.cpp
----------------------------------------------------------------------
diff --git a/content/releases/qpid-proton-0.13.0/proton/cpp/examples/direct_send.cpp b/content/releases/qpid-proton-0.13.0/proton/cpp/examples/direct_send.cpp
new file mode 100755
index 0000000..d8427b7
--- /dev/null
+++ b/content/releases/qpid-proton-0.13.0/proton/cpp/examples/direct_send.cpp
@@ -0,0 +1,101 @@
+/*
+ *
+ * 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.
+ *
+ */
+
+#include "options.hpp"
+
+#include <proton/connection.hpp>
+#include <proton/default_container.hpp>
+#include <proton/messaging_handler.hpp>
+#include <proton/value.hpp>
+#include <proton/tracker.hpp>
+
+#include <iostream>
+#include <map>
+
+#include "fake_cpp11.hpp"
+
+class simple_send : public proton::messaging_handler {
+  private:
+    std::string url;
+    proton::listener listener;
+    int sent;
+    int confirmed;
+    int total;
+
+  public:
+    simple_send(const std::string &s, int c) : url(s), sent(0), confirmed(0), total(c) {}
+
+    void on_container_start(proton::container &c) OVERRIDE {
+        listener = c.listen(url);
+        std::cout << "direct_send listening on " << url << std::endl;
+    }
+
+    void on_sendable(proton::sender &sender) OVERRIDE {
+        while (sender.credit() && sent < total) {
+            proton::message msg;
+            std::map<std::string, int> m;
+            m["sequence"] = sent + 1;
+
+            msg.id(sent + 1);
+            msg.body(m);
+
+            sender.send(msg);
+            sent++;
+        }
+    }
+
+    void on_tracker_accept(proton::tracker &t) OVERRIDE {
+        confirmed++;
+
+        if (confirmed == total) {
+            std::cout << "all messages confirmed" << std::endl;
+            t.connection().close();
+            listener.stop();
+        }
+    }
+
+    void on_transport_close(proton::transport &) OVERRIDE {
+        sent = confirmed;
+    }
+};
+
+int main(int argc, char **argv) {
+    std::string address("127.0.0.1:5672/examples");
+    int message_count = 100;
+    example::options opts(argc, argv);
+
+    opts.add_value(address, 'a', "address", "listen and send on URL", "URL");
+    opts.add_value(message_count, 'm', "messages", "send COUNT messages", "COUNT");
+
+    try {
+        opts.parse();
+
+        simple_send send(address, message_count);
+        proton::default_container(send).run();
+        return 0;
+    } catch (const example::bad_option& e) {
+        std::cout << opts << std::endl << e.what() << std::endl;
+    } catch (const std::exception& e) {
+        std::cerr << e.what() << std::endl;
+    }
+
+    return 1;
+}

http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/content/releases/qpid-proton-0.13.0/proton/cpp/examples/direct_send.cpp.html
----------------------------------------------------------------------
diff --git a/content/releases/qpid-proton-0.13.0/proton/cpp/examples/direct_send.cpp.html b/content/releases/qpid-proton-0.13.0/proton/cpp/examples/direct_send.cpp.html
new file mode 100644
index 0000000..3ab5d0c
--- /dev/null
+++ b/content/releases/qpid-proton-0.13.0/proton/cpp/examples/direct_send.cpp.html
@@ -0,0 +1,229 @@
+<!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>direct_send.cpp - 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/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;">
+        <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-proton-0.13.0/index.html">Qpid Proton 0.13.0</a></li><li><a href="/releases/qpid-proton-0.13.0/proton/cpp/examples/index.html">Proton C++ Examples</a></li><li>direct_send.cpp</li></ul>
+
+        <div id="-middle-content">
+          
+<h1>direct_send.cpp</h1>
+<div class="highlight"><pre><span></span><span class="cp">#include</span> <span class="cpf">&quot;options.hpp&quot;</span><span class="cp"></span>
+
+<span class="cp">#include</span> <span class="cpf">&lt;proton/connection.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/default_container.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/messaging_handler.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/value.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/tracker.hpp&gt;</span><span class="cp"></span>
+
+<span class="cp">#include</span> <span class="cpf">&lt;iostream&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;map&gt;</span><span class="cp"></span>
+
+<span class="cp">#include</span> <span class="cpf">&quot;fake_cpp11.hpp&quot;</span><span class="cp"></span>
+
+<span class="k">class</span> <span class="nc">simple_send</span> <span class="o">:</span> <span class="k">public</span> <span class="n">proton</span><span class="o">::</span><span class="n">messaging_handler</span> <span class="p">{</span>
+  <span class="k">private</span><span class="o">:</span>
+    <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">url</span><span class="p">;</span>
+    <span class="n">proton</span><span class="o">::</span><span class="n">listener</span> <span class="n">listener</span><span class="p">;</span>
+    <span class="kt">int</span> <span class="n">sent</span><span class="p">;</span>
+    <span class="kt">int</span> <span class="n">confirmed</span><span class="p">;</span>
+    <span class="kt">int</span> <span class="n">total</span><span class="p">;</span>
+
+  <span class="k">public</span><span class="o">:</span>
+    <span class="n">simple_send</span><span class="p">(</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="o">&amp;</span><span class="n">s</span><span class="p">,</span> <span class="kt">int</span> <span class="n">c</span><span class="p">)</span> <span class="o">:</span> <span class="n">url</span><span class="p">(</span><span class="n">s</span><span class="p">),</span> <span class="n">sent</span><span class="p">(</span><span class="mi">0</span><span class="p">),</span> <span class="n">confirmed</span><span class="p">(</span><span class="mi">0</span><span class="p">),</span> <span class="n">total</span><span class="p">(</span><span class="n">c</span><span class="p">)</span> <span class="p">{}</span>
+
+    <span class="kt">void</span> <span class="n">on_container_start</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">container</span> <span class="o">&amp;</span><span class="n">c</span><span class="p">)</span> <span class="n">OVERRIDE</span> <span class="p">{</span>
+        <span class="n">listener</span> <span class="o">=</span> <span class="n">c</span><span class="p">.</span><span class="n">listen</span><span class="p">(</span><span class="n">url</span><span class="p">);</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;direct_send listening on &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">url</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+    <span class="p">}</span>
+
+    <span class="kt">void</span> <span class="n">on_sendable</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">sender</span> <span class="o">&amp;</span><span class="n">sender</span><span class="p">)</span> <span class="n">OVERRIDE</span> <span class="p">{</span>
+        <span class="k">while</span> <span class="p">(</span><span class="n">sender</span><span class="p">.</span><span class="n">credit</span><span class="p">()</span> <span class="o">&amp;&amp;</span> <span class="n">sent</span> <span class="o">&lt;</span> <span class="n">total</span><span class="p">)</span> <span class="p">{</span>
+            <span class="n">proton</span><span class="o">::</span><span class="n">message</span> <span class="n">msg</span><span class="p">;</span>
+            <span class="n">std</span><span class="o">::</span><span class="n">map</span><span class="o">&lt;</span><span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="p">,</span> <span class="kt">int</span><span class="o">&gt;</span> <span class="n">m</span><span class="p">;</span>
+            <span class="n">m</span><span class="p">[</span><span class="s">&quot;sequence&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">sent</span> <span class="o">+</span> <span class="mi">1</span><span class="p">;</span>
+
+            <span class="n">msg</span><span class="p">.</span><span class="n">id</span><span class="p">(</span><span class="n">sent</span> <span class="o">+</span> <span class="mi">1</span><span class="p">);</span>
+            <span class="n">msg</span><span class="p">.</span><span class="n">body</span><span class="p">(</span><span class="n">m</span><span class="p">);</span>
+
+            <span class="n">sender</span><span class="p">.</span><span class="n">send</span><span class="p">(</span><span class="n">msg</span><span class="p">);</span>
+            <span class="n">sent</span><span class="o">++</span><span class="p">;</span>
+        <span class="p">}</span>
+    <span class="p">}</span>
+
+    <span class="kt">void</span> <span class="n">on_tracker_accept</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">tracker</span> <span class="o">&amp;</span><span class="n">t</span><span class="p">)</span> <span class="n">OVERRIDE</span> <span class="p">{</span>
+        <span class="n">confirmed</span><span class="o">++</span><span class="p">;</span>
+
+        <span class="k">if</span> <span class="p">(</span><span class="n">confirmed</span> <span class="o">==</span> <span class="n">total</span><span class="p">)</span> <span class="p">{</span>
+            <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;all messages confirmed&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+            <span class="n">t</span><span class="p">.</span><span class="n">connection</span><span class="p">().</span><span class="n">close</span><span class="p">();</span>
+            <span class="n">listener</span><span class="p">.</span><span class="n">stop</span><span class="p">();</span>
+        <span class="p">}</span>
+    <span class="p">}</span>
+
+    <span class="kt">void</span> <span class="n">on_transport_close</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">transport</span> <span class="o">&amp;</span><span class="p">)</span> <span class="n">OVERRIDE</span> <span class="p">{</span>
+        <span class="n">sent</span> <span class="o">=</span> <span class="n">confirmed</span><span class="p">;</span>
+    <span class="p">}</span>
+<span class="p">};</span>
+
+<span class="kt">int</span> <span class="nf">main</span><span class="p">(</span><span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">**</span><span class="n">argv</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">address</span><span class="p">(</span><span class="s">&quot;127.0.0.1:5672/examples&quot;</span><span class="p">);</span>
+    <span class="kt">int</span> <span class="n">message_count</span> <span class="o">=</span> <span class="mi">100</span><span class="p">;</span>
+    <span class="n">example</span><span class="o">::</span><span class="n">options</span> <span class="n">opts</span><span class="p">(</span><span class="n">argc</span><span class="p">,</span> <span class="n">argv</span><span class="p">);</span>
+
+    <span class="n">opts</span><span class="p">.</span><span class="n">add_value</span><span class="p">(</span><span class="n">address</span><span class="p">,</span> <span class="sc">&#39;a&#39;</span><span class="p">,</span> <span class="s">&quot;address&quot;</span><span class="p">,</span> <span class="s">&quot;listen and send on URL&quot;</span><span class="p">,</span> <span class="s">&quot;URL&quot;</span><span class="p">);</span>
+    <span class="n">opts</span><span class="p">.</span><span class="n">add_value</span><span class="p">(</span><span class="n">message_count</span><span class="p">,</span> <span class="sc">&#39;m&#39;</span><span class="p">,</span> <span class="s">&quot;messages&quot;</span><span class="p">,</span> <span class="s">&quot;send COUNT messages&quot;</span><span class="p">,</span> <span class="s">&quot;COUNT&quot;</span><span class="p">);</span>
+
+    <span class="k">try</span> <span class="p">{</span>
+        <span class="n">opts</span><span class="p">.</span><span class="n">parse</span><span class="p">();</span>
+
+        <span class="n">simple_send</span> <span class="n">send</span><span class="p">(</span><span class="n">address</span><span class="p">,</span> <span class="n">message_count</span><span class="p">);</span>
+        <span class="n">proton</span><span class="o">::</span><span class="n">default_container</span><span class="p">(</span><span class="n">send</span><span class="p">).</span><span class="n">run</span><span class="p">();</span>
+        <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">catch</span> <span class="p">(</span><span class="k">const</span> <span class="n">example</span><span class="o">::</span><span class="n">bad_option</span><span class="o">&amp;</span> <span class="n">e</span><span class="p">)</span> <span class="p">{</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="n">opts</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span> <span class="o">&lt;&lt;</span> <span class="n">e</span><span class="p">.</span><span class="n">what</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">catch</span> <span class="p">(</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">exception</span><span class="o">&amp;</span> <span class="n">e</span><span class="p">)</span> <span class="p">{</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">cerr</span> <span class="o">&lt;&lt;</span> <span class="n">e</span><span class="p">.</span><span class="n">what</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+    <span class="p">}</span>
+
+    <span class="k">return</span> <span class="mi">1</span><span class="p">;</span>
+<span class="p">}</span>
+</pre></div>
+
+<p><a href="direct_send.cpp">Download this file</a></p>
+
+
+          <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/75ca8b14/content/releases/qpid-proton-0.13.0/proton/cpp/examples/encode_decode.cpp
----------------------------------------------------------------------
diff --git a/content/releases/qpid-proton-0.13.0/proton/cpp/examples/encode_decode.cpp b/content/releases/qpid-proton-0.13.0/proton/cpp/examples/encode_decode.cpp
new file mode 100755
index 0000000..17971d9
--- /dev/null
+++ b/content/releases/qpid-proton-0.13.0/proton/cpp/examples/encode_decode.cpp
@@ -0,0 +1,252 @@
+/*
+ * 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.
+ */
+
+#include <proton/types.hpp>
+#include <proton/codec/encoder.hpp>
+#include <proton/codec/decoder.hpp>
+
+#include <algorithm>
+#include <iostream>
+#include <iterator>
+#include <sstream>
+
+// Examples of how to use the encoder and decoder to create and examine AMQP values.
+//
+
+// Print is defined at the end as an example of how to query and extract complex
+// values from a decoder in terms of their simple components.
+void print(proton::value&);
+
+// Some helper templates to print map and std::vector results.
+namespace std {
+template<class T, class U> ostream& operator<<(ostream& o, const std::pair<T,U>& p) {
+    return o << p.first << ":" << p.second;
+}
+template<class T> ostream& operator<<(ostream& o, const std::vector<T>& v) {
+    o << "[ ";
+    ostream_iterator<T> oi(o, " ");
+    copy(v.begin(), v.end(), oi);
+    return o << "]";
+}
+template<class T> ostream& operator<<(ostream& o, const std::list<T>& v) {
+    o << "[ ";
+    ostream_iterator<T> oi(o, " ");
+    copy(v.begin(), v.end(), oi);
+    return o << "]";
+}
+template<class K, class T> ostream& operator<<(ostream& o, const map<K, T>& m) {
+    o << "{ ";
+    ostream_iterator<std::pair<K,T> > oi(o, " ");
+    copy(m.begin(), m.end(), oi);
+    return o << "}";
+}
+}
+
+// Insert/extract native C++ containers with uniform type values.
+static void uniform_containers() {
+    std::cout << std::endl << "== Array, list and map of uniform type." << std::endl;
+    proton::value v;
+
+    std::vector<int> a;
+    a.push_back(1);
+    a.push_back(2);
+    a.push_back(3);
+    // By default a C++ container is encoded as an AMQP array.
+    v = a;
+    print(v);
+    std::list<int> a1;
+    proton::get(v, a1);
+    std::cout << a1 << std::endl;
+
+    // You can specify that a container should be encoded as an AMQP list instead.
+    v = proton::codec::encoder::list(a1);
+    print(v);
+    std::cout << proton::get<std::vector<int> >(v) << std::endl;
+
+    // C++ map types (types with key_type, mapped_type) convert to an AMQP map by default.
+    std::map<std::string, int> m;
+    m["one"] = 1;
+    m["two"] = 2;
+    v = m;
+    print(v);
+    std::cout << proton::get<std::map<std::string, int> >(v) << std::endl;
+
+    // A sequence of pairs encodes as an AMQP MAP, which lets you control the encoded order.
+    std::vector<std::pair<std::string, int> > pairs;
+    pairs.push_back(std::make_pair("z", 3));
+    pairs.push_back(std::make_pair("a", 4));
+    v = pairs;
+    print(v);
+
+    // You can also decode an AMQP map as a sequence of pairs to preserve encode order.
+    std::vector<std::pair<std::string, int> > pairs2;
+    proton::codec::decoder d(v);
+    d >> pairs2;
+    std::cout << pairs2 << std::endl;
+
+    // A vector of proton::value is normally encoded as a mixed-type AMQP LIST,
+    // but you can encoded it as an array provided all the values match the array type.
+    std::vector<proton::value> vv;
+    vv.push_back(proton::value("a"));
+    vv.push_back(proton::value("b"));
+    vv.push_back(proton::value("c"));
+    v = vv;
+    print(v);
+}
+
+// Containers with mixed types use value to represent arbitrary AMQP types.
+static void mixed_containers() {
+    std::cout << std::endl << "== List and map of mixed type values." << std::endl;
+    proton::value v;
+
+    std::vector<proton::value> l;
+    l.push_back(proton::value(42));
+    l.push_back(proton::value(std::string("foo")));
+    // By default, a sequence of proton::value is treated as an AMQP list.
+    v = l;
+    print(v);
+    std::vector<proton::value> l2 = proton::get<std::vector<proton::value> >(v);
+    std::cout << l2 << std::endl;
+
+    std::map<proton::value, proton::value> m;
+    m[proton::value("five")] = proton::value(5);
+    m[proton::value(4)] = proton::value("four"); v = m;
+    print(v);
+    typedef std::map<proton::value, proton::value> value_map;
+    value_map m2(proton::get<value_map>(v));
+    std::cout << m2 << std::endl;
+}
+
+// Insert using stream operators (see print_next for example of extracting with stream ops.)
+static void insert_stream_operators() {
+    std::cout << std::endl << "== Insert with stream operators." << std::endl;
+    proton::value v;
+
+    // Create an array of INT with values [1, 2, 3]
+    proton::codec::encoder e(v);
+    e << proton::codec::start::array(proton::INT)
+      << int32_t(1) << int32_t(2) << int32_t(3)
+      << proton::codec::finish();
+    print(v);
+
+    // Create a mixed-type list of the values [42, false, "x"].
+    proton::codec::encoder e2(v);
+    e2 << proton::codec::start::list()
+       << int32_t(42) << false << proton::symbol("x")
+       << proton::codec::finish();
+    print(v);
+
+    // Create a map { "k1":42, "k2": false }
+    proton::codec::encoder e3(v);
+    e3 << proton::codec::start::map()
+       << "k1" << int32_t(42)
+       << proton::symbol("k2") << false
+       << proton::codec::finish();
+    print(v);
+}
+
+int main(int, char**) {
+    try {
+        uniform_containers();
+        mixed_containers();
+        insert_stream_operators();
+        return 0;
+    } catch (const std::exception& e) {
+        std::cerr << std::endl << "error: " << e.what() << std::endl;
+    }
+    return 1;
+}
+
+// print_next prints the next value from values by recursively descending into complex values.
+//
+// NOTE this is for example puroses only: There is a built in ostream operator<< for values.
+//
+//
+static void print_next(proton::codec::decoder& d) {
+    proton::type_id type = d.next_type();
+    proton::codec::start s;
+    switch (type) {
+      case proton::ARRAY: {
+          d >> s;
+          std::cout << "array<" << s.element;
+          if (s.is_described) {
+              std::cout  << ", descriptor=";
+              print_next(d);
+          }
+          std::cout << ">[";
+          for (size_t i = 0; i < s.size; ++i) {
+              if (i) std::cout << ", ";
+              print_next(d);
+          }
+          std::cout << "]";
+          d >> proton::codec::finish();
+          break;
+      }
+      case proton::LIST: {
+          d >> s;
+          std::cout << "list[";
+          for (size_t i = 0; i < s.size; ++i) {
+              if (i) std::cout << ", ";
+              print_next(d);
+          }
+          std::cout << "]";
+          d >> proton::codec::finish();
+          break;
+      }
+      case proton::MAP: {
+          d >> s;
+          std::cout << "map{";
+          for (size_t i = 0; i < s.size/2; ++i) {
+              if (i) std::cout << ", ";
+              print_next(d);
+              std::cout << ":";        // key:value
+              print_next(d);
+          }
+          std::cout << "}";
+          d >> proton::codec::finish();
+          break;
+      }
+      case proton::DESCRIBED: {
+          d >> s;
+          std::cout << "described(";
+          print_next(d);      // Descriptor
+          print_next(d);      // value
+          d >> proton::codec::finish();
+          break;
+      }
+      default:
+        // A simple type. We could continue the switch for all AMQP types but
+        // we will take a short cut and extract to another value and print that.
+        proton::value v2;
+        d >> v2;
+        std::cout << type << "(" << v2 << ")";
+    }
+}
+
+// Print a value, for example purposes. Normal code can use operator<<
+void print(proton::value& v) {
+    proton::codec::decoder d(v);
+    d.rewind();
+    std::cout << std::boolalpha; // Print boolean as true/false.
+    while (d.more()) {
+        print_next(d);
+        if (d.more()) std::cout << ", ";
+    }
+    std::cout << std::endl;
+}


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


[18/26] qpid-site git commit: QPID-7350: Examples that should have gone with the previous commit

Posted by jr...@apache.org.
http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/content/releases/qpid-proton-0.13.0/proton/python/examples/abstract_server.py.html
----------------------------------------------------------------------
diff --git a/content/releases/qpid-proton-0.13.0/proton/python/examples/abstract_server.py.html b/content/releases/qpid-proton-0.13.0/proton/python/examples/abstract_server.py.html
new file mode 100644
index 0000000..4c4f433
--- /dev/null
+++ b/content/releases/qpid-proton-0.13.0/proton/python/examples/abstract_server.py.html
@@ -0,0 +1,164 @@
+<!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>abstract_server.py - 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/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;">
+        <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-proton-0.13.0/index.html">Qpid Proton 0.13.0</a></li><li><a href="/releases/qpid-proton-0.13.0/proton/python/examples/index.html">Proton Python Examples</a></li><li>abstract_server.py</li></ul>
+
+        <div id="-middle-content">
+          
+<h1>abstract_server.py</h1>
+<div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">__future__</span> <span class="kn">import</span> <span class="n">print_function</span>
+<span class="kn">from</span> <span class="nn">proton_server</span> <span class="kn">import</span> <span class="n">Server</span>
+
+<span class="k">class</span> <span class="nc">Application</span><span class="p">(</span><span class="n">Server</span><span class="p">):</span>
+    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">host</span><span class="p">,</span> <span class="n">address</span><span class="p">):</span>
+        <span class="nb">super</span><span class="p">(</span><span class="n">Application</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">__init__</span><span class="p">(</span><span class="n">host</span><span class="p">,</span> <span class="n">address</span><span class="p">)</span>
+
+    <span class="k">def</span> <span class="nf">on_request</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">request</span><span class="p">,</span> <span class="n">reply_to</span><span class="p">):</span>
+        <span class="n">response</span> <span class="o">=</span> <span class="n">request</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">send</span><span class="p">(</span><span class="n">response</span><span class="p">,</span> <span class="n">reply_to</span><span class="p">)</span>
+        <span class="k">print</span><span class="p">(</span><span class="s2">&quot;Request from: </span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="n">reply_to</span><span class="p">)</span>
+
+<span class="k">try</span><span class="p">:</span>
+    <span class="n">Application</span><span class="p">(</span><span class="s2">&quot;localhost:5672&quot;</span><span class="p">,</span> <span class="s2">&quot;examples&quot;</span><span class="p">)</span><span class="o">.</span><span class="n">run</span><span class="p">()</span>
+<span class="k">except</span> <span class="ne">KeyboardInterrupt</span><span class="p">:</span> <span class="k">pass</span>
+</pre></div>
+
+<p><a href="abstract_server.py">Download this file</a></p>
+
+
+          <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/75ca8b14/content/releases/qpid-proton-0.13.0/proton/python/examples/broker.py
----------------------------------------------------------------------
diff --git a/content/releases/qpid-proton-0.13.0/proton/python/examples/broker.py b/content/releases/qpid-proton-0.13.0/proton/python/examples/broker.py
new file mode 100755
index 0000000..8769268
--- /dev/null
+++ b/content/releases/qpid-proton-0.13.0/proton/python/examples/broker.py
@@ -0,0 +1,124 @@
+#!/usr/bin/env python
+#
+# 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.
+#
+
+import collections, optparse
+from proton import Endpoint, generate_uuid
+from proton.handlers import MessagingHandler
+from proton.reactor import Container
+
+class Queue(object):
+    def __init__(self, dynamic=False):
+        self.dynamic = dynamic
+        self.queue = collections.deque()
+        self.consumers = []
+
+    def subscribe(self, consumer):
+        self.consumers.append(consumer)
+
+    def unsubscribe(self, consumer):
+        if consumer in self.consumers:
+            self.consumers.remove(consumer)
+        return len(self.consumers) == 0 and (self.dynamic or self.queue.count == 0)
+
+    def publish(self, message):
+        self.queue.append(message)
+        self.dispatch()
+
+    def dispatch(self, consumer=None):
+        if consumer:
+            c = [consumer]
+        else:
+            c = self.consumers
+        while self._deliver_to(c): pass
+
+    def _deliver_to(self, consumers):
+        try:
+            result = False
+            for c in consumers:
+                if c.credit:
+                    c.send(self.queue.popleft())
+                    result = True
+            return result
+        except IndexError: # no more messages
+            return False
+
+class Broker(MessagingHandler):
+    def __init__(self, url):
+        super(Broker, self).__init__()
+        self.url = url
+        self.queues = {}
+
+    def on_start(self, event):
+        self.acceptor = event.container.listen(self.url)
+
+    def _queue(self, address):
+        if address not in self.queues:
+            self.queues[address] = Queue()
+        return self.queues[address]
+
+    def on_link_opening(self, event):
+        if event.link.is_sender:
+            if event.link.remote_source.dynamic:
+                address = str(generate_uuid())
+                event.link.source.address = address
+                q = Queue(True)
+                self.queues[address] = q
+                q.subscribe(event.link)
+            elif event.link.remote_source.address:
+                event.link.source.address = event.link.remote_source.address
+                self._queue(event.link.source.address).subscribe(event.link)
+        elif event.link.remote_target.address:
+            event.link.target.address = event.link.remote_target.address
+
+    def _unsubscribe(self, link):
+        if link.source.address in self.queues and self.queues[link.source.address].unsubscribe(link):
+            del self.queues[link.source.address]
+
+    def on_link_closing(self, event):
+        if event.link.is_sender:
+            self._unsubscribe(event.link)
+
+    def on_connection_closing(self, event):
+        self.remove_stale_consumers(event.connection)
+
+    def on_disconnected(self, event):
+        self.remove_stale_consumers(event.connection)
+
+    def remove_stale_consumers(self, connection):
+        l = connection.link_head(Endpoint.REMOTE_ACTIVE)
+        while l:
+            if l.is_sender:
+                self._unsubscribe(l)
+            l = l.next(Endpoint.REMOTE_ACTIVE)
+
+    def on_sendable(self, event):
+        self._queue(event.link.source.address).dispatch(event.link)
+
+    def on_message(self, event):
+        self._queue(event.link.target.address).publish(event.message)
+
+parser = optparse.OptionParser(usage="usage: %prog [options]")
+parser.add_option("-a", "--address", default="localhost:5672",
+                  help="address router listens on (default %default)")
+opts, args = parser.parse_args()
+
+try:
+    Container(Broker(opts.address)).run()
+except KeyboardInterrupt: pass

http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/content/releases/qpid-proton-0.13.0/proton/python/examples/broker.py.html
----------------------------------------------------------------------
diff --git a/content/releases/qpid-proton-0.13.0/proton/python/examples/broker.py.html b/content/releases/qpid-proton-0.13.0/proton/python/examples/broker.py.html
new file mode 100644
index 0000000..363c834
--- /dev/null
+++ b/content/releases/qpid-proton-0.13.0/proton/python/examples/broker.py.html
@@ -0,0 +1,253 @@
+<!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>broker.py - 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/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;">
+        <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-proton-0.13.0/index.html">Qpid Proton 0.13.0</a></li><li><a href="/releases/qpid-proton-0.13.0/proton/python/examples/index.html">Proton Python Examples</a></li><li>broker.py</li></ul>
+
+        <div id="-middle-content">
+          
+<h1>broker.py</h1>
+<div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">collections</span><span class="o">,</span> <span class="nn">optparse</span>
+<span class="kn">from</span> <span class="nn">proton</span> <span class="kn">import</span> <span class="n">Endpoint</span><span class="p">,</span> <span class="n">generate_uuid</span>
+<span class="kn">from</span> <span class="nn">proton.handlers</span> <span class="kn">import</span> <span class="n">MessagingHandler</span>
+<span class="kn">from</span> <span class="nn">proton.reactor</span> <span class="kn">import</span> <span class="n">Container</span>
+
+<span class="k">class</span> <span class="nc">Queue</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
+    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">dynamic</span><span class="o">=</span><span class="bp">False</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">dynamic</span> <span class="o">=</span> <span class="n">dynamic</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">queue</span> <span class="o">=</span> <span class="n">collections</span><span class="o">.</span><span class="n">deque</span><span class="p">()</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">consumers</span> <span class="o">=</span> <span class="p">[]</span>
+
+    <span class="k">def</span> <span class="nf">subscribe</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">consumer</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">consumers</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">consumer</span><span class="p">)</span>
+
+    <span class="k">def</span> <span class="nf">unsubscribe</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">consumer</span><span class="p">):</span>
+        <span class="k">if</span> <span class="n">consumer</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">consumers</span><span class="p">:</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">consumers</span><span class="o">.</span><span class="n">remove</span><span class="p">(</span><span class="n">consumer</span><span class="p">)</span>
+        <span class="k">return</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">consumers</span><span class="p">)</span> <span class="o">==</span> <span class="mi">0</span> <span class="ow">and</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">dynamic</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">queue</span><span class="o">.</span><span class="n">count</span> <span class="o">==</span> <span class="mi">0</span><span class="p">)</span>
+
+    <span class="k">def</span> <span class="nf">publish</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">message</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">queue</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">message</span><span class="p">)</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">dispatch</span><span class="p">()</span>
+
+    <span class="k">def</span> <span class="nf">dispatch</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">consumer</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
+        <span class="k">if</span> <span class="n">consumer</span><span class="p">:</span>
+            <span class="n">c</span> <span class="o">=</span> <span class="p">[</span><span class="n">consumer</span><span class="p">]</span>
+        <span class="k">else</span><span class="p">:</span>
+            <span class="n">c</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">consumers</span>
+        <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_deliver_to</span><span class="p">(</span><span class="n">c</span><span class="p">):</span> <span class="k">pass</span>
+
+    <span class="k">def</span> <span class="nf">_deliver_to</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">consumers</span><span class="p">):</span>
+        <span class="k">try</span><span class="p">:</span>
+            <span class="n">result</span> <span class="o">=</span> <span class="bp">False</span>
+            <span class="k">for</span> <span class="n">c</span> <span class="ow">in</span> <span class="n">consumers</span><span class="p">:</span>
+                <span class="k">if</span> <span class="n">c</span><span class="o">.</span><span class="n">credit</span><span class="p">:</span>
+                    <span class="n">c</span><span class="o">.</span><span class="n">send</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">queue</span><span class="o">.</span><span class="n">popleft</span><span class="p">())</span>
+                    <span class="n">result</span> <span class="o">=</span> <span class="bp">True</span>
+            <span class="k">return</span> <span class="n">result</span>
+        <span class="k">except</span> <span class="ne">IndexError</span><span class="p">:</span> <span class="c1"># no more messages</span>
+            <span class="k">return</span> <span class="bp">False</span>
+
+<span class="k">class</span> <span class="nc">Broker</span><span class="p">(</span><span class="n">MessagingHandler</span><span class="p">):</span>
+    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">url</span><span class="p">):</span>
+        <span class="nb">super</span><span class="p">(</span><span class="n">Broker</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">__init__</span><span class="p">()</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">url</span> <span class="o">=</span> <span class="n">url</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">queues</span> <span class="o">=</span> <span class="p">{}</span>
+
+    <span class="k">def</span> <span class="nf">on_start</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">acceptor</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">container</span><span class="o">.</span><span class="n">listen</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">url</span><span class="p">)</span>
+
+    <span class="k">def</span> <span class="nf">_queue</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">address</span><span class="p">):</span>
+        <span class="k">if</span> <span class="n">address</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">queues</span><span class="p">:</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">queues</span><span class="p">[</span><span class="n">address</span><span class="p">]</span> <span class="o">=</span> <span class="n">Queue</span><span class="p">()</span>
+        <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">queues</span><span class="p">[</span><span class="n">address</span><span class="p">]</span>
+
+    <span class="k">def</span> <span class="nf">on_link_opening</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="k">if</span> <span class="n">event</span><span class="o">.</span><span class="n">link</span><span class="o">.</span><span class="n">is_sender</span><span class="p">:</span>
+            <span class="k">if</span> <span class="n">event</span><span class="o">.</span><span class="n">link</span><span class="o">.</span><span class="n">remote_source</span><span class="o">.</span><span class="n">dynamic</span><span class="p">:</span>
+                <span class="n">address</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="n">generate_uuid</span><span class="p">())</span>
+                <span class="n">event</span><span class="o">.</span><span class="n">link</span><span class="o">.</span><span class="n">source</span><span class="o">.</span><span class="n">address</span> <span class="o">=</span> <span class="n">address</span>
+                <span class="n">q</span> <span class="o">=</span> <span class="n">Queue</span><span class="p">(</span><span class="bp">True</span><span class="p">)</span>
+                <span class="bp">self</span><span class="o">.</span><span class="n">queues</span><span class="p">[</span><span class="n">address</span><span class="p">]</span> <span class="o">=</span> <span class="n">q</span>
+                <span class="n">q</span><span class="o">.</span><span class="n">subscribe</span><span class="p">(</span><span class="n">event</span><span class="o">.</span><span class="n">link</span><span class="p">)</span>
+            <span class="k">elif</span> <span class="n">event</span><span class="o">.</span><span class="n">link</span><span class="o">.</span><span class="n">remote_source</span><span class="o">.</span><span class="n">address</span><span class="p">:</span>
+                <span class="n">event</span><span class="o">.</span><span class="n">link</span><span class="o">.</span><span class="n">source</span><span class="o">.</span><span class="n">address</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">link</span><span class="o">.</span><span class="n">remote_source</span><span class="o">.</span><span class="n">address</span>
+                <span class="bp">self</span><span class="o">.</span><span class="n">_queue</span><span class="p">(</span><span class="n">event</span><span class="o">.</span><span class="n">link</span><span class="o">.</span><span class="n">source</span><span class="o">.</span><span class="n">address</span><span class="p">)</span><span class="o">.</span><span class="n">subscribe</span><span class="p">(</span><span class="n">event</span><span class="o">.</span><span class="n">link</span><span class="p">)</span>
+        <span class="k">elif</span> <span class="n">event</span><span class="o">.</span><span class="n">link</span><span class="o">.</span><span class="n">remote_target</span><span class="o">.</span><span class="n">address</span><span class="p">:</span>
+            <span class="n">event</span><span class="o">.</span><span class="n">link</span><span class="o">.</span><span class="n">target</span><span class="o">.</span><span class="n">address</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">link</span><span class="o">.</span><span class="n">remote_target</span><span class="o">.</span><span class="n">address</span>
+
+    <span class="k">def</span> <span class="nf">_unsubscribe</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">link</span><span class="p">):</span>
+        <span class="k">if</span> <span class="n">link</span><span class="o">.</span><span class="n">source</span><span class="o">.</span><span class="n">address</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">queues</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">queues</span><span class="p">[</span><span class="n">link</span><span class="o">.</span><span class="n">source</span><span class="o">.</span><span class="n">address</span><span class="p">]</span><span class="o">.</span><span class="n">unsubscribe</span><span class="p">(</span><span class="n">link</span><span class="p">):</span>
+            <span class="k">del</span> <span class="bp">self</span><span class="o">.</span><span class="n">queues</span><span class="p">[</span><span class="n">link</span><span class="o">.</span><span class="n">source</span><span class="o">.</span><span class="n">address</span><span class="p">]</span>
+
+    <span class="k">def</span> <span class="nf">on_link_closing</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="k">if</span> <span class="n">event</span><span class="o">.</span><span class="n">link</span><span class="o">.</span><span class="n">is_sender</span><span class="p">:</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">_unsubscribe</span><span class="p">(</span><span class="n">event</span><span class="o">.</span><span class="n">link</span><span class="p">)</span>
+
+    <span class="k">def</span> <span class="nf">on_connection_closing</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">remove_stale_consumers</span><span class="p">(</span><span class="n">event</span><span class="o">.</span><span class="n">connection</span><span class="p">)</span>
+
+    <span class="k">def</span> <span class="nf">on_disconnected</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">remove_stale_consumers</span><span class="p">(</span><span class="n">event</span><span class="o">.</span><span class="n">connection</span><span class="p">)</span>
+
+    <span class="k">def</span> <span class="nf">remove_stale_consumers</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">connection</span><span class="p">):</span>
+        <span class="n">l</span> <span class="o">=</span> <span class="n">connection</span><span class="o">.</span><span class="n">link_head</span><span class="p">(</span><span class="n">Endpoint</span><span class="o">.</span><span class="n">REMOTE_ACTIVE</span><span class="p">)</span>
+        <span class="k">while</span> <span class="n">l</span><span class="p">:</span>
+            <span class="k">if</span> <span class="n">l</span><span class="o">.</span><span class="n">is_sender</span><span class="p">:</span>
+                <span class="bp">self</span><span class="o">.</span><span class="n">_unsubscribe</span><span class="p">(</span><span class="n">l</span><span class="p">)</span>
+            <span class="n">l</span> <span class="o">=</span> <span class="n">l</span><span class="o">.</span><span class="n">next</span><span class="p">(</span><span class="n">Endpoint</span><span class="o">.</span><span class="n">REMOTE_ACTIVE</span><span class="p">)</span>
+
+    <span class="k">def</span> <span class="nf">on_sendable</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">_queue</span><span class="p">(</span><span class="n">event</span><span class="o">.</span><span class="n">link</span><span class="o">.</span><span class="n">source</span><span class="o">.</span><span class="n">address</span><span class="p">)</span><span class="o">.</span><span class="n">dispatch</span><span class="p">(</span><span class="n">event</span><span class="o">.</span><span class="n">link</span><span class="p">)</span>
+
+    <span class="k">def</span> <span class="nf">on_message</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">_queue</span><span class="p">(</span><span class="n">event</span><span class="o">.</span><span class="n">link</span><span class="o">.</span><span class="n">target</span><span class="o">.</span><span class="n">address</span><span class="p">)</span><span class="o">.</span><span class="n">publish</span><span class="p">(</span><span class="n">event</span><span class="o">.</span><span class="n">message</span><span class="p">)</span>
+
+<span class="n">parser</span> <span class="o">=</span> <span class="n">optparse</span><span class="o">.</span><span class="n">OptionParser</span><span class="p">(</span><span class="n">usage</span><span class="o">=</span><span class="s2">&quot;usage: %prog [options]&quot;</span><span class="p">)</span>
+<span class="n">parser</span><span class="o">.</span><span class="n">add_option</span><span class="p">(</span><span class="s2">&quot;-a&quot;</span><span class="p">,</span> <span class="s2">&quot;--address&quot;</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="s2">&quot;localhost:5672&quot;</span><span class="p">,</span>
+                  <span class="n">help</span><span class="o">=</span><span class="s2">&quot;address router listens on (default </span><span class="si">%d</span><span class="s2">efault)&quot;</span><span class="p">)</span>
+<span class="n">opts</span><span class="p">,</span> <span class="n">args</span> <span class="o">=</span> <span class="n">parser</span><span class="o">.</span><span class="n">parse_args</span><span class="p">()</span>
+
+<span class="k">try</span><span class="p">:</span>
+    <span class="n">Container</span><span class="p">(</span><span class="n">Broker</span><span class="p">(</span><span class="n">opts</span><span class="o">.</span><span class="n">address</span><span class="p">))</span><span class="o">.</span><span class="n">run</span><span class="p">()</span>
+<span class="k">except</span> <span class="ne">KeyboardInterrupt</span><span class="p">:</span> <span class="k">pass</span>
+</pre></div>
+
+<p><a href="broker.py">Download this file</a></p>
+
+
+          <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/75ca8b14/content/releases/qpid-proton-0.13.0/proton/python/examples/client.py
----------------------------------------------------------------------
diff --git a/content/releases/qpid-proton-0.13.0/proton/python/examples/client.py b/content/releases/qpid-proton-0.13.0/proton/python/examples/client.py
new file mode 100755
index 0000000..86f2c76
--- /dev/null
+++ b/content/releases/qpid-proton-0.13.0/proton/python/examples/client.py
@@ -0,0 +1,65 @@
+#!/usr/bin/env python
+#
+# 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.
+#
+
+from __future__ import print_function, unicode_literals
+import optparse
+from proton import Message
+from proton.handlers import MessagingHandler
+from proton.reactor import Container, DynamicNodeProperties
+
+class Client(MessagingHandler):
+    def __init__(self, url, requests):
+        super(Client, self).__init__()
+        self.url = url
+        self.requests = requests
+
+    def on_start(self, event):
+        self.sender = event.container.create_sender(self.url)
+        self.receiver = event.container.create_receiver(self.sender.connection, None, dynamic=True)
+
+    def next_request(self):
+        if self.receiver.remote_source.address:
+            req = Message(reply_to=self.receiver.remote_source.address, body=self.requests[0])
+            self.sender.send(req)
+
+    def on_link_opened(self, event):
+        if event.receiver == self.receiver:
+            self.next_request()
+
+    def on_message(self, event):
+        print("%s => %s" % (self.requests.pop(0), event.message.body))
+        if self.requests:
+            self.next_request()
+        else:
+            event.connection.close()
+
+REQUESTS= ["Twas brillig, and the slithy toves",
+           "Did gire and gymble in the wabe.",
+           "All mimsy were the borogroves,",
+           "And the mome raths outgrabe."]
+
+parser = optparse.OptionParser(usage="usage: %prog [options]",
+                               description="Send requests to the supplied address and print responses.")
+parser.add_option("-a", "--address", default="localhost:5672/examples",
+                  help="address to which messages are sent (default %default)")
+opts, args = parser.parse_args()
+
+Container(Client(opts.address, args or REQUESTS)).run()
+

http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/content/releases/qpid-proton-0.13.0/proton/python/examples/client.py.html
----------------------------------------------------------------------
diff --git a/content/releases/qpid-proton-0.13.0/proton/python/examples/client.py.html b/content/releases/qpid-proton-0.13.0/proton/python/examples/client.py.html
new file mode 100644
index 0000000..1426765
--- /dev/null
+++ b/content/releases/qpid-proton-0.13.0/proton/python/examples/client.py.html
@@ -0,0 +1,193 @@
+<!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>client.py - 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/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;">
+        <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-proton-0.13.0/index.html">Qpid Proton 0.13.0</a></li><li><a href="/releases/qpid-proton-0.13.0/proton/python/examples/index.html">Proton Python Examples</a></li><li>client.py</li></ul>
+
+        <div id="-middle-content">
+          
+<h1>client.py</h1>
+<div class="highlight"><pre><span></span><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>
+<span class="kn">from</span> <span class="nn">proton</span> <span class="kn">import</span> <span class="n">Message</span>
+<span class="kn">from</span> <span class="nn">proton.handlers</span> <span class="kn">import</span> <span class="n">MessagingHandler</span>
+<span class="kn">from</span> <span class="nn">proton.reactor</span> <span class="kn">import</span> <span class="n">Container</span><span class="p">,</span> <span class="n">DynamicNodeProperties</span>
+
+<span class="k">class</span> <span class="nc">Client</span><span class="p">(</span><span class="n">MessagingHandler</span><span class="p">):</span>
+    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">url</span><span class="p">,</span> <span class="n">requests</span><span class="p">):</span>
+        <span class="nb">super</span><span class="p">(</span><span class="n">Client</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">__init__</span><span class="p">()</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">url</span> <span class="o">=</span> <span class="n">url</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">requests</span> <span class="o">=</span> <span class="n">requests</span>
+
+    <span class="k">def</span> <span class="nf">on_start</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">sender</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">container</span><span class="o">.</span><span class="n">create_sender</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">url</span><span class="p">)</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">receiver</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">container</span><span class="o">.</span><span class="n">create_receiver</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">sender</span><span class="o">.</span><span class="n">connection</span><span class="p">,</span> <span class="bp">None</span><span class="p">,</span> <span class="n">dynamic</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
+
+    <span class="k">def</span> <span class="nf">next_request</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">receiver</span><span class="o">.</span><span class="n">remote_source</span><span class="o">.</span><span class="n">address</span><span class="p">:</span>
+            <span class="n">req</span> <span class="o">=</span> <span class="n">Message</span><span class="p">(</span><span class="n">reply_to</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">receiver</span><span class="o">.</span><span class="n">remote_source</span><span class="o">.</span><span class="n">address</span><span class="p">,</span> <span class="n">body</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">requests</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">sender</span><span class="o">.</span><span class="n">send</span><span class="p">(</span><span class="n">req</span><span class="p">)</span>
+
+    <span class="k">def</span> <span class="nf">on_link_opened</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="k">if</span> <span class="n">event</span><span class="o">.</span><span class="n">receiver</span> <span class="o">==</span> <span class="bp">self</span><span class="o">.</span><span class="n">receiver</span><span class="p">:</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">next_request</span><span class="p">()</span>
+
+    <span class="k">def</span> <span class="nf">on_message</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="k">print</span><span class="p">(</span><span class="s2">&quot;</span><span class="si">%s</span><span class="s2"> =&gt; </span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">requests</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="mi">0</span><span class="p">),</span> <span class="n">event</span><span class="o">.</span><span class="n">message</span><span class="o">.</span><span class="n">body</span><span class="p">))</span>
+        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">requests</span><span class="p">:</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">next_request</span><span class="p">()</span>
+        <span class="k">else</span><span class="p">:</span>
+            <span class="n">event</span><span class="o">.</span><span class="n">connection</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
+
+<span class="n">REQUESTS</span><span class="o">=</span> <span class="p">[</span><span class="s2">&quot;Twas brillig, and the slithy toves&quot;</span><span class="p">,</span>
+           <span class="s2">&quot;Did gire and gymble in the wabe.&quot;</span><span class="p">,</span>
+           <span class="s2">&quot;All mimsy were the borogroves,&quot;</span><span class="p">,</span>
+           <span class="s2">&quot;And the mome raths outgrabe.&quot;</span><span class="p">]</span>
+
+<span class="n">parser</span> <span class="o">=</span> <span class="n">optparse</span><span class="o">.</span><span class="n">OptionParser</span><span class="p">(</span><span class="n">usage</span><span class="o">=</span><span class="s2">&quot;usage: %prog [options]&quot;</span><span class="p">,</span>
+                               <span class="n">description</span><span class="o">=</span><span class="s2">&quot;Send requests to the supplied address and print responses.&quot;</span><span class="p">)</span>
+<span class="n">parser</span><span class="o">.</span><span class="n">add_option</span><span class="p">(</span><span class="s2">&quot;-a&quot;</span><span class="p">,</span> <span class="s2">&quot;--address&quot;</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="s2">&quot;localhost:5672/examples&quot;</span><span class="p">,</span>
+                  <span class="n">help</span><span class="o">=</span><span class="s2">&quot;address to which messages are sent (default </span><span class="si">%d</span><span class="s2">efault)&quot;</span><span class="p">)</span>
+<span class="n">opts</span><span class="p">,</span> <span class="n">args</span> <span class="o">=</span> <span class="n">parser</span><span class="o">.</span><span class="n">parse_args</span><span class="p">()</span>
+
+<span class="n">Container</span><span class="p">(</span><span class="n">Client</span><span class="p">(</span><span class="n">opts</span><span class="o">.</span><span class="n">address</span><span class="p">,</span> <span class="n">args</span> <span class="ow">or</span> <span class="n">REQUESTS</span><span class="p">))</span><span class="o">.</span><span class="n">run</span><span class="p">()</span>
+</pre></div>
+
+<p><a href="client.py">Download this file</a></p>
+
+
+          <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/75ca8b14/content/releases/qpid-proton-0.13.0/proton/python/examples/client_http.py
----------------------------------------------------------------------
diff --git a/content/releases/qpid-proton-0.13.0/proton/python/examples/client_http.py b/content/releases/qpid-proton-0.13.0/proton/python/examples/client_http.py
new file mode 100755
index 0000000..bf65639
--- /dev/null
+++ b/content/releases/qpid-proton-0.13.0/proton/python/examples/client_http.py
@@ -0,0 +1,114 @@
+#!/usr/bin/env python
+#
+# 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.
+#
+
+from __future__ import print_function
+import tornado.ioloop
+import tornado.web
+from proton import Message
+from proton.handlers import MessagingHandler
+from proton_tornado import Container
+
+class Client(MessagingHandler):
+    def __init__(self, host, address):
+        super(Client, self).__init__()
+        self.host = host
+        self.address = address
+        self.sent = []
+        self.pending = []
+        self.reply_address = None
+        self.sender = None
+        self.receiver = None
+
+    def on_start(self, event):
+        conn = event.container.connect(self.host)
+        self.sender = event.container.create_sender(conn, self.address)
+        self.receiver = event.container.create_receiver(conn, None, dynamic=True)
+
+    def on_link_opened(self, event):
+        if event.receiver == self.receiver:
+            self.reply_address = event.link.remote_source.address
+            self.do_request()
+
+    def on_sendable(self, event):
+        self.do_request()
+
+    def on_message(self, event):
+        if self.sent:
+            request, handler = self.sent.pop(0)
+            print("%s => %s" % (request, event.message.body))
+            handler(event.message.body)
+            self.do_request()
+
+    def do_request(self):
+        if self.pending and self.reply_address and self.sender.credit:
+            request, handler = self.pending.pop(0)
+            self.sent.append((request, handler))
+            req = Message(reply_to=self.reply_address, body=request)
+            self.sender.send(req)
+
+    def request(self, body, handler):
+        self.pending.append((body, handler))
+        self.do_request()
+        self.container.touch()
+
+class ExampleHandler(tornado.web.RequestHandler):
+    def initialize(self, client):
+        self.client = client
+
+    def get(self):
+        self._write_open()
+        self._write_form()
+        self._write_close()
+
+    @tornado.web.asynchronous
+    def post(self):
+        client.request(self.get_body_argument("message"), lambda x: self.on_response(x))
+
+    def on_response(self, body):
+        self.set_header("Content-Type", "text/html")
+        self._write_open()
+        self._write_form()
+        self.write("Response: " + body)
+        self._write_close()
+        self.finish()
+
+    def _write_open(self):
+        self.write('<html><body>')
+
+    def _write_close(self):
+        self.write('</body></html>')
+
+    def _write_form(self):
+        self.write('<form action="/client" method="POST">'
+                   'Request: <input type="text" name="message">'
+                   '<input type="submit" value="Submit">'
+                   '</form>')
+
+
+loop = tornado.ioloop.IOLoop.instance()
+client = Client("localhost:5672", "examples")
+client.container = Container(client, loop=loop)
+client.container.initialise()
+app = tornado.web.Application([tornado.web.url(r"/client", ExampleHandler, dict(client=client))])
+app.listen(8888)
+try:
+    loop.start()
+except KeyboardInterrupt:
+    loop.stop()

http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/content/releases/qpid-proton-0.13.0/proton/python/examples/client_http.py.html
----------------------------------------------------------------------
diff --git a/content/releases/qpid-proton-0.13.0/proton/python/examples/client_http.py.html b/content/releases/qpid-proton-0.13.0/proton/python/examples/client_http.py.html
new file mode 100644
index 0000000..8bbc07a
--- /dev/null
+++ b/content/releases/qpid-proton-0.13.0/proton/python/examples/client_http.py.html
@@ -0,0 +1,243 @@
+<!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>client_http.py - 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/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;">
+        <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-proton-0.13.0/index.html">Qpid Proton 0.13.0</a></li><li><a href="/releases/qpid-proton-0.13.0/proton/python/examples/index.html">Proton Python Examples</a></li><li>client_http.py</li></ul>
+
+        <div id="-middle-content">
+          
+<h1>client_http.py</h1>
+<div class="highlight"><pre><span></span><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">tornado.ioloop</span>
+<span class="kn">import</span> <span class="nn">tornado.web</span>
+<span class="kn">from</span> <span class="nn">proton</span> <span class="kn">import</span> <span class="n">Message</span>
+<span class="kn">from</span> <span class="nn">proton.handlers</span> <span class="kn">import</span> <span class="n">MessagingHandler</span>
+<span class="kn">from</span> <span class="nn">proton_tornado</span> <span class="kn">import</span> <span class="n">Container</span>
+
+<span class="k">class</span> <span class="nc">Client</span><span class="p">(</span><span class="n">MessagingHandler</span><span class="p">):</span>
+    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">host</span><span class="p">,</span> <span class="n">address</span><span class="p">):</span>
+        <span class="nb">super</span><span class="p">(</span><span class="n">Client</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">__init__</span><span class="p">()</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">host</span> <span class="o">=</span> <span class="n">host</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">address</span> <span class="o">=</span> <span class="n">address</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">sent</span> <span class="o">=</span> <span class="p">[]</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">pending</span> <span class="o">=</span> <span class="p">[]</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">reply_address</span> <span class="o">=</span> <span class="bp">None</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">sender</span> <span class="o">=</span> <span class="bp">None</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">receiver</span> <span class="o">=</span> <span class="bp">None</span>
+
+    <span class="k">def</span> <span class="nf">on_start</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="n">conn</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">container</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">host</span><span class="p">)</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">sender</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">container</span><span class="o">.</span><span class="n">create_sender</span><span class="p">(</span><span class="n">conn</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">address</span><span class="p">)</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">receiver</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">container</span><span class="o">.</span><span class="n">create_receiver</span><span class="p">(</span><span class="n">conn</span><span class="p">,</span> <span class="bp">None</span><span class="p">,</span> <span class="n">dynamic</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
+
+    <span class="k">def</span> <span class="nf">on_link_opened</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="k">if</span> <span class="n">event</span><span class="o">.</span><span class="n">receiver</span> <span class="o">==</span> <span class="bp">self</span><span class="o">.</span><span class="n">receiver</span><span class="p">:</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">reply_address</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">link</span><span class="o">.</span><span class="n">remote_source</span><span class="o">.</span><span class="n">address</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">do_request</span><span class="p">()</span>
+
+    <span class="k">def</span> <span class="nf">on_sendable</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">do_request</span><span class="p">()</span>
+
+    <span class="k">def</span> <span class="nf">on_message</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">sent</span><span class="p">:</span>
+            <span class="n">request</span><span class="p">,</span> <span class="n">handler</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sent</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
+            <span class="k">print</span><span class="p">(</span><span class="s2">&quot;</span><span class="si">%s</span><span class="s2"> =&gt; </span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="n">event</span><span class="o">.</span><span class="n">message</span><span class="o">.</span><span class="n">body</span><span class="p">))</span>
+            <span class="n">handler</span><span class="p">(</span><span class="n">event</span><span class="o">.</span><span class="n">message</span><span class="o">.</span><span class="n">body</span><span class="p">)</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">do_request</span><span class="p">()</span>
+
+    <span class="k">def</span> <span class="nf">do_request</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">pending</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">reply_address</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">sender</span><span class="o">.</span><span class="n">credit</span><span class="p">:</span>
+            <span class="n">request</span><span class="p">,</span> <span class="n">handler</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">pending</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">sent</span><span class="o">.</span><span class="n">append</span><span class="p">((</span><span class="n">request</span><span class="p">,</span> <span class="n">handler</span><span class="p">))</span>
+            <span class="n">req</span> <span class="o">=</span> <span class="n">Message</span><span class="p">(</span><span class="n">reply_to</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">reply_address</span><span class="p">,</span> <span class="n">body</span><span class="o">=</span><span class="n">request</span><span class="p">)</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">sender</span><span class="o">.</span><span class="n">send</span><span class="p">(</span><span class="n">req</span><span class="p">)</span>
+
+    <span class="k">def</span> <span class="nf">request</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">body</span><span class="p">,</span> <span class="n">handler</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">pending</span><span class="o">.</span><span class="n">append</span><span class="p">((</span><span class="n">body</span><span class="p">,</span> <span class="n">handler</span><span class="p">))</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">do_request</span><span class="p">()</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">container</span><span class="o">.</span><span class="n">touch</span><span class="p">()</span>
+
+<span class="k">class</span> <span class="nc">ExampleHandler</span><span class="p">(</span><span class="n">tornado</span><span class="o">.</span><span class="n">web</span><span class="o">.</span><span class="n">RequestHandler</span><span class="p">):</span>
+    <span class="k">def</span> <span class="nf">initialize</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">client</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">client</span> <span class="o">=</span> <span class="n">client</span>
+
+    <span class="k">def</span> <span class="nf">get</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">_write_open</span><span class="p">()</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">_write_form</span><span class="p">()</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">_write_close</span><span class="p">()</span>
+
+    <span class="nd">@tornado.web.asynchronous</span>
+    <span class="k">def</span> <span class="nf">post</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="n">client</span><span class="o">.</span><span class="n">request</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">get_body_argument</span><span class="p">(</span><span class="s2">&quot;message&quot;</span><span class="p">),</span> <span class="k">lambda</span> <span class="n">x</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">on_response</span><span class="p">(</span><span class="n">x</span><span class="p">))</span>
+
+    <span class="k">def</span> <span class="nf">on_response</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">body</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">set_header</span><span class="p">(</span><span class="s2">&quot;Content-Type&quot;</span><span class="p">,</span> <span class="s2">&quot;text/html&quot;</span><span class="p">)</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">_write_open</span><span class="p">()</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">_write_form</span><span class="p">()</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="s2">&quot;Response: &quot;</span> <span class="o">+</span> <span class="n">body</span><span class="p">)</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">_write_close</span><span class="p">()</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">finish</span><span class="p">()</span>
+
+    <span class="k">def</span> <span class="nf">_write_open</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="s1">&#39;&lt;html&gt;&lt;body&gt;&#39;</span><span class="p">)</span>
+
+    <span class="k">def</span> <span class="nf">_write_close</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="s1">&#39;&lt;/body&gt;&lt;/html&gt;&#39;</span><span class="p">)</span>
+
+    <span class="k">def</span> <span class="nf">_write_form</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="s1">&#39;&lt;form action=&quot;/client&quot; method=&quot;POST&quot;&gt;&#39;</span>
+                   <span class="s1">&#39;Request: &lt;input type=&quot;text&quot; name=&quot;message&quot;&gt;&#39;</span>
+                   <span class="s1">&#39;&lt;input type=&quot;submit&quot; value=&quot;Submit&quot;&gt;&#39;</span>
+                   <span class="s1">&#39;&lt;/form&gt;&#39;</span><span class="p">)</span>
+
+
+<span class="n">loop</span> <span class="o">=</span> <span class="n">tornado</span><span class="o">.</span><span class="n">ioloop</span><span class="o">.</span><span class="n">IOLoop</span><span class="o">.</span><span class="n">instance</span><span class="p">()</span>
+<span class="n">client</span> <span class="o">=</span> <span class="n">Client</span><span class="p">(</span><span class="s2">&quot;localhost:5672&quot;</span><span class="p">,</span> <span class="s2">&quot;examples&quot;</span><span class="p">)</span>
+<span class="n">client</span><span class="o">.</span><span class="n">container</span> <span class="o">=</span> <span class="n">Container</span><span class="p">(</span><span class="n">client</span><span class="p">,</span> <span class="n">loop</span><span class="o">=</span><span class="n">loop</span><span class="p">)</span>
+<span class="n">client</span><span class="o">.</span><span class="n">container</span><span class="o">.</span><span class="n">initialise</span><span class="p">()</span>
+<span class="n">app</span> <span class="o">=</span> <span class="n">tornado</span><span class="o">.</span><span class="n">web</span><span class="o">.</span><span class="n">Application</span><span class="p">([</span><span class="n">tornado</span><span class="o">.</span><span class="n">web</span><span class="o">.</span><span class="n">url</span><span class="p">(</span><span class="s2">r&quot;/client&quot;</span><span class="p">,</span> <span class="n">ExampleHandler</span><span class="p">,</span> <span class="nb">dict</span><span class="p">(</span><span class="n">client</span><span class="o">=</span><span class="n">client</span><span class="p">))])</span>
+<span class="n">app</span><span class="o">.</span><span class="n">listen</span><span class="p">(</span><span class="mi">8888</span><span class="p">)</span>
+<span class="k">try</span><span class="p">:</span>
+    <span class="n">loop</span><span class="o">.</span><span class="n">start</span><span class="p">()</span>
+<span class="k">except</span> <span class="ne">KeyboardInterrupt</span><span class="p">:</span>
+    <span class="n">loop</span><span class="o">.</span><span class="n">stop</span><span class="p">()</span>
+</pre></div>
+
+<p><a href="client_http.py">Download this file</a></p>
+
+
+          <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/75ca8b14/content/releases/qpid-proton-0.13.0/proton/python/examples/db_common.py
----------------------------------------------------------------------
diff --git a/content/releases/qpid-proton-0.13.0/proton/python/examples/db_common.py b/content/releases/qpid-proton-0.13.0/proton/python/examples/db_common.py
new file mode 100755
index 0000000..54af87b
--- /dev/null
+++ b/content/releases/qpid-proton-0.13.0/proton/python/examples/db_common.py
@@ -0,0 +1,118 @@
+#!/usr/bin/env python
+#
+# 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.
+#
+
+try:
+    import Queue
+except:
+    import queue as Queue
+
+import sqlite3
+import threading
+
+class Db(object):
+    def __init__(self, db, injector):
+        self.db = db
+        self.injector = injector
+        self.tasks = Queue.Queue()
+        self.position = None
+        self.pending_events = []
+        self.running = True
+        self.thread = threading.Thread(target=self._process)
+        self.thread.daemon=True
+        self.thread.start()
+
+    def close(self):
+        self.tasks.put(lambda conn: self._close())
+
+    def reset(self):
+        self.tasks.put(lambda conn: self._reset())
+
+    def load(self, records, event=None):
+        self.tasks.put(lambda conn: self._load(conn, records, event))
+
+    def get_id(self, event):
+        self.tasks.put(lambda conn: self._get_id(conn, event))
+
+    def insert(self, id, data, event=None):
+        self.tasks.put(lambda conn: self._insert(conn, id, data, event))
+
+    def delete(self, id, event=None):
+        self.tasks.put(lambda conn: self._delete(conn, id, event))
+
+    def _reset(self, ignored=None):
+        self.position = None
+
+    def _close(self, ignored=None):
+        self.running = False
+
+    def _get_id(self, conn, event):
+        cursor = conn.execute("SELECT * FROM records ORDER BY id DESC")
+        row = cursor.fetchone()
+        if event:
+            if row:
+                event.id = row['id']
+            else:
+                event.id = 0
+            self.injector.trigger(event)
+
+    def _load(self, conn, records, event):
+        if self.position:
+            cursor = conn.execute("SELECT * FROM records WHERE id > ? ORDER BY id", (self.position,))
+        else:
+            cursor = conn.execute("SELECT * FROM records ORDER BY id")
+        while not records.full():
+            row = cursor.fetchone()
+            if row:
+                self.position = row['id']
+                records.put(dict(row))
+            else:
+                break
+        if event:
+            self.injector.trigger(event)
+
+    def _insert(self, conn, id, data, event):
+        if id:
+            conn.execute("INSERT INTO records(id, description) VALUES (?, ?)", (id, data))
+        else:
+            conn.execute("INSERT INTO records(description) VALUES (?)", (data,))
+        if event:
+            self.pending_events.append(event)
+
+    def _delete(self, conn, id, event):
+        conn.execute("DELETE FROM records WHERE id=?", (id,))
+        if event:
+            self.pending_events.append(event)
+
+    def _process(self):
+        conn = sqlite3.connect(self.db)
+        conn.row_factory = sqlite3.Row
+        with conn:
+            while self.running:
+                f = self.tasks.get(True)
+                try:
+                    while True:
+                        f(conn)
+                        f = self.tasks.get(False)
+                except Queue.Empty: pass
+                conn.commit()
+                for event in self.pending_events:
+                    self.injector.trigger(event)
+                self.pending_events = []
+        self.injector.close()


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


[26/26] qpid-site git commit: QPID-7350: Examples that should have gone with the previous commit

Posted by jr...@apache.org.
QPID-7350: Examples that should have gone with the previous commit


Project: http://git-wip-us.apache.org/repos/asf/qpid-site/repo
Commit: http://git-wip-us.apache.org/repos/asf/qpid-site/commit/75ca8b14
Tree: http://git-wip-us.apache.org/repos/asf/qpid-site/tree/75ca8b14
Diff: http://git-wip-us.apache.org/repos/asf/qpid-site/diff/75ca8b14

Branch: refs/heads/asf-site
Commit: 75ca8b144ff3de1073b7ec0a8d25ca29d16d9783
Parents: 59433af
Author: Justin Ross <jr...@redhat.com>
Authored: Wed Jul 13 11:54:26 2016 +0200
Committer: Justin Ross <jr...@redhat.com>
Committed: Wed Jul 13 11:54:26 2016 +0200

----------------------------------------------------------------------
 .../proton/cpp/examples/broker.cpp              | 276 +++++++++++++
 .../proton/cpp/examples/broker.cpp.html         | 404 +++++++++++++++++++
 .../proton/cpp/examples/broker.hpp              | 236 +++++++++++
 .../proton/cpp/examples/broker.hpp.html         | 368 +++++++++++++++++
 .../proton/cpp/examples/client.cpp              | 107 +++++
 .../proton/cpp/examples/client.cpp.html         | 235 +++++++++++
 .../proton/cpp/examples/connection_options.cpp  |  76 ++++
 .../cpp/examples/connection_options.cpp.html    | 204 ++++++++++
 .../proton/cpp/examples/direct_recv.cpp         |  91 +++++
 .../proton/cpp/examples/direct_recv.cpp.html    | 219 ++++++++++
 .../proton/cpp/examples/direct_send.cpp         | 101 +++++
 .../proton/cpp/examples/direct_send.cpp.html    | 229 +++++++++++
 .../proton/cpp/examples/encode_decode.cpp       | 252 ++++++++++++
 .../proton/cpp/examples/encode_decode.cpp.html  | 382 ++++++++++++++++++
 .../proton/cpp/examples/fake_cpp11.hpp          |  34 ++
 .../proton/cpp/examples/fake_cpp11.hpp.html     | 166 ++++++++
 .../proton/cpp/examples/flow_control.cpp        | 233 +++++++++++
 .../proton/cpp/examples/flow_control.cpp.html   | 361 +++++++++++++++++
 .../proton/cpp/examples/helloworld.cpp          |  73 ++++
 .../proton/cpp/examples/helloworld.cpp.html     | 201 +++++++++
 .../proton/cpp/examples/helloworld_direct.cpp   |  79 ++++
 .../cpp/examples/helloworld_direct.cpp.html     | 207 ++++++++++
 .../proton/cpp/examples/index.html              | 177 ++++++++
 .../proton/cpp/examples/options.hpp             | 175 ++++++++
 .../proton/cpp/examples/options.hpp.html        | 305 ++++++++++++++
 .../proton/cpp/examples/queue_browser.cpp       |  67 +++
 .../proton/cpp/examples/queue_browser.cpp.html  | 195 +++++++++
 .../proton/cpp/examples/selected_recv.cpp       |  88 ++++
 .../proton/cpp/examples/selected_recv.cpp.html  | 216 ++++++++++
 .../proton/cpp/examples/server.cpp              | 100 +++++
 .../proton/cpp/examples/server.cpp.html         | 228 +++++++++++
 .../proton/cpp/examples/server_direct.cpp       | 119 ++++++
 .../proton/cpp/examples/server_direct.cpp.html  | 247 ++++++++++++
 .../proton/cpp/examples/simple_recv.cpp         |  92 +++++
 .../proton/cpp/examples/simple_recv.cpp.html    | 220 ++++++++++
 .../proton/cpp/examples/simple_send.cpp         | 100 +++++
 .../proton/cpp/examples/simple_send.cpp.html    | 228 +++++++++++
 .../proton/cpp/examples/ssl.cpp                 | 179 ++++++++
 .../proton/cpp/examples/ssl.cpp.html            | 307 ++++++++++++++
 .../proton/cpp/examples/ssl_client_cert.cpp     | 193 +++++++++
 .../cpp/examples/ssl_client_cert.cpp.html       | 321 +++++++++++++++
 .../proton/python/examples/abstract_server.py   |  36 ++
 .../python/examples/abstract_server.py.html     | 164 ++++++++
 .../proton/python/examples/broker.py            | 124 ++++++
 .../proton/python/examples/broker.py.html       | 253 ++++++++++++
 .../proton/python/examples/client.py            |  65 +++
 .../proton/python/examples/client.py.html       | 193 +++++++++
 .../proton/python/examples/client_http.py       | 114 ++++++
 .../proton/python/examples/client_http.py.html  | 243 +++++++++++
 .../proton/python/examples/db_common.py         | 118 ++++++
 .../proton/python/examples/db_common.py.html    | 247 ++++++++++++
 .../proton/python/examples/db_ctrl.py           |  47 +++
 .../proton/python/examples/db_ctrl.py.html      | 176 ++++++++
 .../proton/python/examples/db_recv.py           |  80 ++++
 .../proton/python/examples/db_recv.py.html      | 206 ++++++++++
 .../proton/python/examples/db_send.py           | 111 +++++
 .../proton/python/examples/db_send.py.html      | 239 +++++++++++
 .../proton/python/examples/direct_recv.py       |  60 +++
 .../proton/python/examples/direct_recv.py.html  | 186 +++++++++
 .../proton/python/examples/direct_send.py       |  64 +++
 .../proton/python/examples/direct_send.py.html  | 193 +++++++++
 .../proton/python/examples/helloworld.py        |  45 +++
 .../proton/python/examples/helloworld.py.html   | 174 ++++++++
 .../python/examples/helloworld_blocking.py      |  34 ++
 .../python/examples/helloworld_blocking.py.html | 162 ++++++++
 .../proton/python/examples/helloworld_direct.py |  48 +++
 .../python/examples/helloworld_direct.py.html   | 177 ++++++++
 .../examples/helloworld_direct_tornado.py       |  48 +++
 .../examples/helloworld_direct_tornado.py.html  | 177 ++++++++
 .../python/examples/helloworld_tornado.py       |  45 +++
 .../python/examples/helloworld_tornado.py.html  | 174 ++++++++
 .../proton/python/examples/index.html           | 188 +++++++++
 .../proton/python/examples/proton_server.py     |  51 +++
 .../python/examples/proton_server.py.html       | 199 +++++++++
 .../proton/python/examples/proton_tornado.py    | 114 ++++++
 .../python/examples/proton_tornado.py.html      | 243 +++++++++++
 .../proton/python/examples/queue_browser.py     |  43 ++
 .../python/examples/queue_browser.py.html       | 169 ++++++++
 .../proton/python/examples/recurring_timer.py   |  43 ++
 .../python/examples/recurring_timer.py.html     | 170 ++++++++
 .../python/examples/recurring_timer_tornado.py  |  45 +++
 .../examples/recurring_timer_tornado.py.html    | 172 ++++++++
 .../proton/python/examples/selected_recv.py     |  41 ++
 .../python/examples/selected_recv.py.html       | 167 ++++++++
 .../proton/python/examples/server.py            |  49 +++
 .../proton/python/examples/server.py.html       | 175 ++++++++
 .../proton/python/examples/server_direct.py     |  64 +++
 .../python/examples/server_direct.py.html       | 190 +++++++++
 .../proton/python/examples/server_tx.py         |  79 ++++
 .../proton/python/examples/server_tx.py.html    | 205 ++++++++++
 .../proton/python/examples/simple_recv.py       |  59 +++
 .../proton/python/examples/simple_recv.py.html  | 185 +++++++++
 .../proton/python/examples/simple_send.py       |  63 +++
 .../proton/python/examples/simple_send.py.html  | 192 +++++++++
 .../proton/python/examples/sync_client.py       |  55 +++
 .../proton/python/examples/sync_client.py.html  | 183 +++++++++
 .../proton/python/examples/test_examples.py     | 151 +++++++
 .../python/examples/test_examples.py.html       | 281 +++++++++++++
 .../proton/python/examples/tx_recv.py           |  80 ++++
 .../proton/python/examples/tx_recv.py.html      | 206 ++++++++++
 .../python/examples/tx_recv_interactive.py      |  85 ++++
 .../python/examples/tx_recv_interactive.py.html | 212 ++++++++++
 .../proton/python/examples/tx_send.py           |  89 ++++
 .../proton/python/examples/tx_send.py.html      | 218 ++++++++++
 .../proton/cpp/examples/broker.cpp              | 276 +++++++++++++
 .../proton/cpp/examples/broker.cpp.html.in      | 260 ++++++++++++
 .../proton/cpp/examples/broker.hpp              | 236 +++++++++++
 .../proton/cpp/examples/broker.hpp.html.in      | 224 ++++++++++
 .../proton/cpp/examples/client.cpp              | 107 +++++
 .../proton/cpp/examples/client.cpp.html.in      |  91 +++++
 .../proton/cpp/examples/connection_options.cpp  |  76 ++++
 .../cpp/examples/connection_options.cpp.html.in |  60 +++
 .../proton/cpp/examples/direct_recv.cpp         |  91 +++++
 .../proton/cpp/examples/direct_recv.cpp.html.in |  75 ++++
 .../proton/cpp/examples/direct_send.cpp         | 101 +++++
 .../proton/cpp/examples/direct_send.cpp.html.in |  85 ++++
 .../proton/cpp/examples/encode_decode.cpp       | 252 ++++++++++++
 .../cpp/examples/encode_decode.cpp.html.in      | 238 +++++++++++
 .../proton/cpp/examples/fake_cpp11.hpp          |  34 ++
 .../proton/cpp/examples/fake_cpp11.hpp.html.in  |  22 +
 .../proton/cpp/examples/flow_control.cpp        | 233 +++++++++++
 .../cpp/examples/flow_control.cpp.html.in       | 217 ++++++++++
 .../proton/cpp/examples/helloworld.cpp          |  73 ++++
 .../proton/cpp/examples/helloworld.cpp.html.in  |  57 +++
 .../proton/cpp/examples/helloworld_direct.cpp   |  79 ++++
 .../cpp/examples/helloworld_direct.cpp.html.in  |  63 +++
 .../proton/cpp/examples/index.md                |  30 ++
 .../proton/cpp/examples/options.hpp             | 175 ++++++++
 .../proton/cpp/examples/options.hpp.html.in     | 161 ++++++++
 .../proton/cpp/examples/queue_browser.cpp       |  67 +++
 .../cpp/examples/queue_browser.cpp.html.in      |  51 +++
 .../proton/cpp/examples/selected_recv.cpp       |  88 ++++
 .../cpp/examples/selected_recv.cpp.html.in      |  72 ++++
 .../proton/cpp/examples/server.cpp              | 100 +++++
 .../proton/cpp/examples/server.cpp.html.in      |  84 ++++
 .../proton/cpp/examples/server_direct.cpp       | 119 ++++++
 .../cpp/examples/server_direct.cpp.html.in      | 103 +++++
 .../proton/cpp/examples/simple_recv.cpp         |  92 +++++
 .../proton/cpp/examples/simple_recv.cpp.html.in |  76 ++++
 .../proton/cpp/examples/simple_send.cpp         | 100 +++++
 .../proton/cpp/examples/simple_send.cpp.html.in |  84 ++++
 .../proton/cpp/examples/ssl.cpp                 | 179 ++++++++
 .../proton/cpp/examples/ssl.cpp.html.in         | 163 ++++++++
 .../proton/cpp/examples/ssl_client_cert.cpp     | 193 +++++++++
 .../cpp/examples/ssl_client_cert.cpp.html.in    | 177 ++++++++
 .../proton/python/examples/abstract_server.py   |  36 ++
 .../python/examples/abstract_server.py.html.in  |  20 +
 .../proton/python/examples/broker.py            | 124 ++++++
 .../proton/python/examples/broker.py.html.in    | 109 +++++
 .../proton/python/examples/client.py            |  65 +++
 .../proton/python/examples/client.py.html.in    |  49 +++
 .../proton/python/examples/client_http.py       | 114 ++++++
 .../python/examples/client_http.py.html.in      |  99 +++++
 .../proton/python/examples/db_common.py         | 118 ++++++
 .../proton/python/examples/db_common.py.html.in | 103 +++++
 .../proton/python/examples/db_ctrl.py           |  47 +++
 .../proton/python/examples/db_ctrl.py.html.in   |  32 ++
 .../proton/python/examples/db_recv.py           |  80 ++++
 .../proton/python/examples/db_recv.py.html.in   |  62 +++
 .../proton/python/examples/db_send.py           | 111 +++++
 .../proton/python/examples/db_send.py.html.in   |  95 +++++
 .../proton/python/examples/direct_recv.py       |  60 +++
 .../python/examples/direct_recv.py.html.in      |  42 ++
 .../proton/python/examples/direct_send.py       |  64 +++
 .../python/examples/direct_send.py.html.in      |  49 +++
 .../proton/python/examples/helloworld.py        |  45 +++
 .../python/examples/helloworld.py.html.in       |  30 ++
 .../python/examples/helloworld_blocking.py      |  34 ++
 .../examples/helloworld_blocking.py.html.in     |  18 +
 .../proton/python/examples/helloworld_direct.py |  48 +++
 .../examples/helloworld_direct.py.html.in       |  33 ++
 .../examples/helloworld_direct_tornado.py       |  48 +++
 .../helloworld_direct_tornado.py.html.in        |  33 ++
 .../python/examples/helloworld_tornado.py       |  45 +++
 .../examples/helloworld_tornado.py.html.in      |  30 ++
 .../proton/python/examples/index.md             |  41 ++
 .../proton/python/examples/proton_server.py     |  51 +++
 .../python/examples/proton_server.py.html.in    |  55 +++
 .../proton/python/examples/proton_tornado.py    | 114 ++++++
 .../python/examples/proton_tornado.py.html.in   |  99 +++++
 .../proton/python/examples/queue_browser.py     |  43 ++
 .../python/examples/queue_browser.py.html.in    |  25 ++
 .../proton/python/examples/recurring_timer.py   |  43 ++
 .../python/examples/recurring_timer.py.html.in  |  26 ++
 .../python/examples/recurring_timer_tornado.py  |  45 +++
 .../examples/recurring_timer_tornado.py.html.in |  28 ++
 .../proton/python/examples/selected_recv.py     |  41 ++
 .../python/examples/selected_recv.py.html.in    |  23 ++
 .../proton/python/examples/server.py            |  49 +++
 .../proton/python/examples/server.py.html.in    |  31 ++
 .../proton/python/examples/server_direct.py     |  64 +++
 .../python/examples/server_direct.py.html.in    |  46 +++
 .../proton/python/examples/server_tx.py         |  79 ++++
 .../proton/python/examples/server_tx.py.html.in |  61 +++
 .../proton/python/examples/simple_recv.py       |  59 +++
 .../python/examples/simple_recv.py.html.in      |  41 ++
 .../proton/python/examples/simple_send.py       |  63 +++
 .../python/examples/simple_send.py.html.in      |  48 +++
 .../proton/python/examples/sync_client.py       |  55 +++
 .../python/examples/sync_client.py.html.in      |  39 ++
 .../proton/python/examples/test_examples.py     | 151 +++++++
 .../python/examples/test_examples.py.html.in    | 137 +++++++
 .../proton/python/examples/tx_recv.py           |  80 ++++
 .../proton/python/examples/tx_recv.py.html.in   |  62 +++
 .../python/examples/tx_recv_interactive.py      |  85 ++++
 .../examples/tx_recv_interactive.py.html.in     |  68 ++++
 .../proton/python/examples/tx_send.py           |  89 ++++
 .../proton/python/examples/tx_send.py.html.in   |  74 ++++
 208 files changed, 25482 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/content/releases/qpid-proton-0.13.0/proton/cpp/examples/broker.cpp
----------------------------------------------------------------------
diff --git a/content/releases/qpid-proton-0.13.0/proton/cpp/examples/broker.cpp b/content/releases/qpid-proton-0.13.0/proton/cpp/examples/broker.cpp
new file mode 100755
index 0000000..bb3aefb
--- /dev/null
+++ b/content/releases/qpid-proton-0.13.0/proton/cpp/examples/broker.cpp
@@ -0,0 +1,276 @@
+/*
+ *
+ * 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.
+ *
+ */
+
+#include "options.hpp"
+
+#include <proton/connection.hpp>
+#include <proton/default_container.hpp>
+#include <proton/delivery.hpp>
+#include <proton/messaging_handler.hpp>
+#include <proton/message.hpp>
+#include <proton/receiver_options.hpp>
+#include <proton/sender.hpp>
+#include <proton/sender_options.hpp>
+#include <proton/source_options.hpp>
+#include <proton/target_options.hpp>
+#include <proton/transport.hpp>
+#include <proton/url.hpp>
+
+#include <deque>
+#include <iostream>
+#include <list>
+#include <map>
+#include <string>
+
+#include "fake_cpp11.hpp"
+
+/// A simple implementation of a queue.
+class queue {
+  public:
+    queue(const std::string &name, bool dynamic = false) : name_(name), dynamic_(dynamic) {}
+
+    std::string name() const { return name_; }
+
+    void subscribe(proton::sender s) {
+        consumers_.push_back(s);
+    }
+
+    // Return true if queue can be deleted.
+    bool unsubscribe(proton::sender s) {
+        consumers_.remove(s);
+        return (consumers_.size() == 0 && (dynamic_ || messages_.size() == 0));
+    }
+
+    void publish(const proton::message &m) {
+        messages_.push_back(m);
+        dispatch(0);
+    }
+
+    void dispatch(proton::sender *s) {
+        while (deliver_to(s)) {}
+    }
+
+    bool deliver_to(proton::sender *s) {
+        // Deliver to single sender if supplied, else all consumers
+        int count = s ? 1 : consumers_.size();
+
+        if (!count) return false;
+
+        bool result = false;
+        sender_list::iterator it = consumers_.begin();
+
+        if (!s && count) {
+            s = &*it;
+        }
+
+        while (messages_.size()) {
+            if (s->credit()) {
+                const proton::message& m = messages_.front();
+
+                s->send(m);
+                messages_.pop_front();
+                result = true;
+            }
+
+            if (--count) {
+                it++;
+            } else {
+                return result;
+            }
+        }
+
+        return false;
+    }
+
+  private:
+    typedef std::deque<proton::message> message_queue;
+    typedef std::list<proton::sender> sender_list;
+
+    std::string name_;
+    bool dynamic_;
+    message_queue messages_;
+    sender_list consumers_;
+};
+
+/// A collection of queues and queue factory, used by a broker.
+class queues {
+  public:
+    queues() : next_id_(0) {}
+    virtual ~queues() {}
+
+    // Get or create a queue.
+    virtual queue &get(const std::string &address = std::string()) {
+        if (address.empty()) {
+            throw std::runtime_error("empty queue name");
+        }
+
+        queue*& q = queues_[address];
+
+        if (!q) q = new queue(address);
+
+        return *q;
+    }
+
+    // Create a dynamic queue with a unique name.
+    virtual queue &dynamic() {
+        std::ostringstream os;
+        os << "q" << next_id_++;
+        queue *q = queues_[os.str()] = new queue(os.str(), true);
+
+        return *q;
+    }
+
+    // Delete the named queue
+    virtual void erase(std::string &name) {
+        delete queues_[name];
+        queues_.erase(name);
+    }
+
+  protected:
+    typedef std::map<std::string, queue *> queue_map;
+    queue_map queues_;
+    uint64_t next_id_; // Use to generate unique queue IDs.
+};
+
+// A handler to implement broker logic
+class broker_handler : public proton::messaging_handler {
+  public:
+    broker_handler(queues& qs) : queues_(qs) {}
+
+    void on_sender_open(proton::sender &sender) OVERRIDE {
+        proton::source src(sender.source());
+        queue &q = src.dynamic() ?
+            queues_.dynamic() : queues_.get(src.address());
+        sender.open(proton::sender_options().source(proton::source_options().address(q.name())));
+        q.subscribe(sender);
+        std::cout << "broker outgoing link from " << q.name() << std::endl;
+    }
+
+    void on_receiver_open(proton::receiver &receiver) OVERRIDE {
+        std::string address = receiver.target().address();
+        if (!address.empty()) {
+            receiver.open(proton::receiver_options().target(proton::target_options().address(address)));
+            std::cout << "broker incoming link to " << address << std::endl;
+        }
+    }
+
+    void unsubscribe(proton::sender lnk) {
+        std::string address = lnk.source().address();
+
+        if (queues_.get(address).unsubscribe(lnk)) {
+            queues_.erase(address);
+        }
+    }
+
+    void on_sender_close(proton::sender &sender) OVERRIDE {
+        unsubscribe(sender);
+    }
+
+    void on_connection_close(proton::connection &c) OVERRIDE {
+        remove_stale_consumers(c);
+    }
+
+    void on_transport_close(proton::transport &t) OVERRIDE {
+        remove_stale_consumers(t.connection());
+    }
+
+    void on_transport_error(proton::transport &t) OVERRIDE {
+        std::cout << "broker client disconnect: " << t.error().what() << std::endl;
+    }
+
+    void on_error(const proton::error_condition &c) OVERRIDE {
+        std::cerr << "broker error: " << c.what() << std::endl;
+    }
+
+    void remove_stale_consumers(proton::connection connection) {
+        proton::session_range r1 = connection.sessions();
+        for (proton::session_iterator i1 = r1.begin(); i1 != r1.end(); ++i1) {
+            proton::sender_range r2 = i1->senders();
+            for (proton::sender_iterator i2 = r2.begin(); i2 != r2.end(); ++i2) {
+                if (i2->active())
+                    unsubscribe(*i2);
+            }
+        }
+    }
+
+    void on_sendable(proton::sender &s) OVERRIDE {
+        std::string address = s.source().address();
+
+        queues_.get(address).dispatch(&s);
+    }
+
+    void on_message(proton::delivery &d, proton::message &m) OVERRIDE {
+        std::string address = d.receiver().target().address();
+        queues_.get(address).publish(m);
+    }
+
+  protected:
+    queues& queues_;
+};
+
+
+// The broker
+class broker {
+  public:
+    broker(const std::string& url) : handler_(url, queues_) {}
+
+    proton::messaging_handler& handler() { return handler_; }
+
+  private:
+    class my_handler : public broker_handler {
+      public:
+        my_handler(const std::string& u, queues& qs) : broker_handler(qs), url_(u) {}
+
+        void on_container_start(proton::container &c) OVERRIDE {
+            c.listen(url_);
+            std::cout << "broker listening on " << url_ << std::endl;
+        }
+
+      private:
+        const std::string& url_;
+    };
+
+  private:
+    queues queues_;
+    my_handler handler_;
+};
+
+int main(int argc, char **argv) {
+    std::string url("0.0.0.0");
+    example::options opts(argc, argv);
+
+    opts.add_value(url, 'a', "address", "listen on URL", "URL");
+
+    try {
+        opts.parse();
+
+        broker b(url);
+        proton::default_container(b.handler()).run();
+
+        return 0;
+    } catch (const example::bad_option& e) {
+        std::cout << opts << std::endl << e.what() << std::endl;
+    } catch (const std::exception& e) {
+        std::cerr << e.what() << std::endl;
+    }
+
+    return 1;
+}

http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/content/releases/qpid-proton-0.13.0/proton/cpp/examples/broker.cpp.html
----------------------------------------------------------------------
diff --git a/content/releases/qpid-proton-0.13.0/proton/cpp/examples/broker.cpp.html b/content/releases/qpid-proton-0.13.0/proton/cpp/examples/broker.cpp.html
new file mode 100644
index 0000000..cadb820
--- /dev/null
+++ b/content/releases/qpid-proton-0.13.0/proton/cpp/examples/broker.cpp.html
@@ -0,0 +1,404 @@
+<!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>broker.cpp - 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/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;">
+        <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-proton-0.13.0/index.html">Qpid Proton 0.13.0</a></li><li><a href="/releases/qpid-proton-0.13.0/proton/cpp/examples/index.html">Proton C++ Examples</a></li><li>broker.cpp</li></ul>
+
+        <div id="-middle-content">
+          
+<h1>broker.cpp</h1>
+<div class="highlight"><pre><span></span><span class="cp">#include</span> <span class="cpf">&quot;options.hpp&quot;</span><span class="cp"></span>
+
+<span class="cp">#include</span> <span class="cpf">&lt;proton/connection.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/default_container.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/delivery.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/messaging_handler.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/message.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/receiver_options.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/sender.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/sender_options.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/source_options.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/target_options.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/transport.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/url.hpp&gt;</span><span class="cp"></span>
+
+<span class="cp">#include</span> <span class="cpf">&lt;deque&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;iostream&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;list&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;map&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;string&gt;</span><span class="cp"></span>
+
+<span class="cp">#include</span> <span class="cpf">&quot;fake_cpp11.hpp&quot;</span><span class="cp"></span>
+
+<span class="c1">/// A simple implementation of a queue.</span>
+<span class="k">class</span> <span class="nc">queue</span> <span class="p">{</span>
+  <span class="k">public</span><span class="o">:</span>
+    <span class="n">queue</span><span class="p">(</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="o">&amp;</span><span class="n">name</span><span class="p">,</span> <span class="kt">bool</span> <span class="n">dynamic</span> <span class="o">=</span> <span class="nb">false</span><span class="p">)</span> <span class="o">:</span> <span class="n">name_</span><span class="p">(</span><span class="n">name</span><span class="p">),</span> <span class="n">dynamic_</span><span class="p">(</span><span class="n">dynamic</span><span class="p">)</span> <span class="p">{}</span>
+
+    <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">name</span><span class="p">()</span> <span class="k">const</span> <span class="p">{</span> <span class="k">return</span> <span class="n">name_</span><span class="p">;</span> <span class="p">}</span>
+
+    <span class="kt">void</span> <span class="n">subscribe</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">sender</span> <span class="n">s</span><span class="p">)</span> <span class="p">{</span>
+        <span class="n">consumers_</span><span class="p">.</span><span class="n">push_back</span><span class="p">(</span><span class="n">s</span><span class="p">);</span>
+    <span class="p">}</span>
+
+    <span class="c1">// Return true if queue can be deleted.</span>
+    <span class="kt">bool</span> <span class="n">unsubscribe</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">sender</span> <span class="n">s</span><span class="p">)</span> <span class="p">{</span>
+        <span class="n">consumers_</span><span class="p">.</span><span class="n">remove</span><span class="p">(</span><span class="n">s</span><span class="p">);</span>
+        <span class="k">return</span> <span class="p">(</span><span class="n">consumers_</span><span class="p">.</span><span class="n">size</span><span class="p">()</span> <span class="o">==</span> <span class="mi">0</span> <span class="o">&amp;&amp;</span> <span class="p">(</span><span class="n">dynamic_</span> <span class="o">||</span> <span class="n">messages_</span><span class="p">.</span><span class="n">size</span><span class="p">()</span> <span class="o">==</span> <span class="mi">0</span><span class="p">));</span>
+    <span class="p">}</span>
+
+    <span class="kt">void</span> <span class="n">publish</span><span class="p">(</span><span class="k">const</span> <span class="n">proton</span><span class="o">::</span><span class="n">message</span> <span class="o">&amp;</span><span class="n">m</span><span class="p">)</span> <span class="p">{</span>
+        <span class="n">messages_</span><span class="p">.</span><span class="n">push_back</span><span class="p">(</span><span class="n">m</span><span class="p">);</span>
+        <span class="n">dispatch</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
+    <span class="p">}</span>
+
+    <span class="kt">void</span> <span class="n">dispatch</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">sender</span> <span class="o">*</span><span class="n">s</span><span class="p">)</span> <span class="p">{</span>
+        <span class="k">while</span> <span class="p">(</span><span class="n">deliver_to</span><span class="p">(</span><span class="n">s</span><span class="p">))</span> <span class="p">{}</span>
+    <span class="p">}</span>
+
+    <span class="kt">bool</span> <span class="n">deliver_to</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">sender</span> <span class="o">*</span><span class="n">s</span><span class="p">)</span> <span class="p">{</span>
+        <span class="c1">// Deliver to single sender if supplied, else all consumers</span>
+        <span class="kt">int</span> <span class="n">count</span> <span class="o">=</span> <span class="n">s</span> <span class="o">?</span> <span class="mi">1</span> <span class="o">:</span> <span class="n">consumers_</span><span class="p">.</span><span class="n">size</span><span class="p">();</span>
+
+        <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">count</span><span class="p">)</span> <span class="k">return</span> <span class="nb">false</span><span class="p">;</span>
+
+        <span class="kt">bool</span> <span class="n">result</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
+        <span class="n">sender_list</span><span class="o">::</span><span class="n">iterator</span> <span class="n">it</span> <span class="o">=</span> <span class="n">consumers_</span><span class="p">.</span><span class="n">begin</span><span class="p">();</span>
+
+        <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">s</span> <span class="o">&amp;&amp;</span> <span class="n">count</span><span class="p">)</span> <span class="p">{</span>
+            <span class="n">s</span> <span class="o">=</span> <span class="o">&amp;*</span><span class="n">it</span><span class="p">;</span>
+        <span class="p">}</span>
+
+        <span class="k">while</span> <span class="p">(</span><span class="n">messages_</span><span class="p">.</span><span class="n">size</span><span class="p">())</span> <span class="p">{</span>
+            <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">credit</span><span class="p">())</span> <span class="p">{</span>
+                <span class="k">const</span> <span class="n">proton</span><span class="o">::</span><span class="n">message</span><span class="o">&amp;</span> <span class="n">m</span> <span class="o">=</span> <span class="n">messages_</span><span class="p">.</span><span class="n">front</span><span class="p">();</span>
+
+                <span class="n">s</span><span class="o">-&gt;</span><span class="n">send</span><span class="p">(</span><span class="n">m</span><span class="p">);</span>
+                <span class="n">messages_</span><span class="p">.</span><span class="n">pop_front</span><span class="p">();</span>
+                <span class="n">result</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
+            <span class="p">}</span>
+
+            <span class="k">if</span> <span class="p">(</span><span class="o">--</span><span class="n">count</span><span class="p">)</span> <span class="p">{</span>
+                <span class="n">it</span><span class="o">++</span><span class="p">;</span>
+            <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
+                <span class="k">return</span> <span class="n">result</span><span class="p">;</span>
+            <span class="p">}</span>
+        <span class="p">}</span>
+
+        <span class="k">return</span> <span class="nb">false</span><span class="p">;</span>
+    <span class="p">}</span>
+
+  <span class="k">private</span><span class="o">:</span>
+    <span class="k">typedef</span> <span class="n">std</span><span class="o">::</span><span class="n">deque</span><span class="o">&lt;</span><span class="n">proton</span><span class="o">::</span><span class="n">message</span><span class="o">&gt;</span> <span class="n">message_queue</span><span class="p">;</span>
+    <span class="k">typedef</span> <span class="n">std</span><span class="o">::</span><span class="n">list</span><span class="o">&lt;</span><span class="n">proton</span><span class="o">::</span><span class="n">sender</span><span class="o">&gt;</span> <span class="n">sender_list</span><span class="p">;</span>
+
+    <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">name_</span><span class="p">;</span>
+    <span class="kt">bool</span> <span class="n">dynamic_</span><span class="p">;</span>
+    <span class="n">message_queue</span> <span class="n">messages_</span><span class="p">;</span>
+    <span class="n">sender_list</span> <span class="n">consumers_</span><span class="p">;</span>
+<span class="p">};</span>
+
+<span class="c1">/// A collection of queues and queue factory, used by a broker.</span>
+<span class="k">class</span> <span class="nc">queues</span> <span class="p">{</span>
+  <span class="k">public</span><span class="o">:</span>
+    <span class="n">queues</span><span class="p">()</span> <span class="o">:</span> <span class="n">next_id_</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span> <span class="p">{}</span>
+    <span class="k">virtual</span> <span class="o">~</span><span class="n">queues</span><span class="p">()</span> <span class="p">{}</span>
+
+    <span class="c1">// Get or create a queue.</span>
+    <span class="k">virtual</span> <span class="n">queue</span> <span class="o">&amp;</span><span class="n">get</span><span class="p">(</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="o">&amp;</span><span class="n">address</span> <span class="o">=</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="p">())</span> <span class="p">{</span>
+        <span class="k">if</span> <span class="p">(</span><span class="n">address</span><span class="p">.</span><span class="n">empty</span><span class="p">())</span> <span class="p">{</span>
+            <span class="k">throw</span> <span class="n">std</span><span class="o">::</span><span class="n">runtime_error</span><span class="p">(</span><span class="s">&quot;empty queue name&quot;</span><span class="p">);</span>
+        <span class="p">}</span>
+
+        <span class="n">queue</span><span class="o">*&amp;</span> <span class="n">q</span> <span class="o">=</span> <span class="n">queues_</span><span class="p">[</span><span class="n">address</span><span class="p">];</span>
+
+        <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">q</span><span class="p">)</span> <span class="n">q</span> <span class="o">=</span> <span class="k">new</span> <span class="n">queue</span><span class="p">(</span><span class="n">address</span><span class="p">);</span>
+
+        <span class="k">return</span> <span class="o">*</span><span class="n">q</span><span class="p">;</span>
+    <span class="p">}</span>
+
+    <span class="c1">// Create a dynamic queue with a unique name.</span>
+    <span class="k">virtual</span> <span class="n">queue</span> <span class="o">&amp;</span><span class="n">dynamic</span><span class="p">()</span> <span class="p">{</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">ostringstream</span> <span class="n">os</span><span class="p">;</span>
+        <span class="n">os</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;q&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">next_id_</span><span class="o">++</span><span class="p">;</span>
+        <span class="n">queue</span> <span class="o">*</span><span class="n">q</span> <span class="o">=</span> <span class="n">queues_</span><span class="p">[</span><span class="n">os</span><span class="p">.</span><span class="n">str</span><span class="p">()]</span> <span class="o">=</span> <span class="k">new</span> <span class="n">queue</span><span class="p">(</span><span class="n">os</span><span class="p">.</span><span class="n">str</span><span class="p">(),</span> <span class="nb">true</span><span class="p">);</span>
+
+        <span class="k">return</span> <span class="o">*</span><span class="n">q</span><span class="p">;</span>
+    <span class="p">}</span>
+
+    <span class="c1">// Delete the named queue</span>
+    <span class="k">virtual</span> <span class="kt">void</span> <span class="n">erase</span><span class="p">(</span><span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="o">&amp;</span><span class="n">name</span><span class="p">)</span> <span class="p">{</span>
+        <span class="k">delete</span> <span class="n">queues_</span><span class="p">[</span><span class="n">name</span><span class="p">];</span>
+        <span class="n">queues_</span><span class="p">.</span><span class="n">erase</span><span class="p">(</span><span class="n">name</span><span class="p">);</span>
+    <span class="p">}</span>
+
+  <span class="k">protected</span><span class="o">:</span>
+    <span class="k">typedef</span> <span class="n">std</span><span class="o">::</span><span class="n">map</span><span class="o">&lt;</span><span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="p">,</span> <span class="n">queue</span> <span class="o">*&gt;</span> <span class="n">queue_map</span><span class="p">;</span>
+    <span class="n">queue_map</span> <span class="n">queues_</span><span class="p">;</span>
+    <span class="kt">uint64_t</span> <span class="n">next_id_</span><span class="p">;</span> <span class="c1">// Use to generate unique queue IDs.</span>
+<span class="p">};</span>
+
+<span class="c1">// A handler to implement broker logic</span>
+<span class="k">class</span> <span class="nc">broker_handler</span> <span class="o">:</span> <span class="k">public</span> <span class="n">proton</span><span class="o">::</span><span class="n">messaging_handler</span> <span class="p">{</span>
+  <span class="k">public</span><span class="o">:</span>
+    <span class="n">broker_handler</span><span class="p">(</span><span class="n">queues</span><span class="o">&amp;</span> <span class="n">qs</span><span class="p">)</span> <span class="o">:</span> <span class="n">queues_</span><span class="p">(</span><span class="n">qs</span><span class="p">)</span> <span class="p">{}</span>
+
+    <span class="kt">void</span> <span class="n">on_sender_open</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">sender</span> <span class="o">&amp;</span><span class="n">sender</span><span class="p">)</span> <span class="n">OVERRIDE</span> <span class="p">{</span>
+        <span class="n">proton</span><span class="o">::</span><span class="n">source</span> <span class="n">src</span><span class="p">(</span><span class="n">sender</span><span class="p">.</span><span class="n">source</span><span class="p">());</span>
+        <span class="n">queue</span> <span class="o">&amp;</span><span class="n">q</span> <span class="o">=</span> <span class="n">src</span><span class="p">.</span><span class="n">dynamic</span><span class="p">()</span> <span class="o">?</span>
+            <span class="n">queues_</span><span class="p">.</span><span class="n">dynamic</span><span class="p">()</span> <span class="o">:</span> <span class="n">queues_</span><span class="p">.</span><span class="n">get</span><span class="p">(</span><span class="n">src</span><span class="p">.</span><span class="n">address</span><span class="p">());</span>
+        <span class="n">sender</span><span class="p">.</span><span class="n">open</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">sender_options</span><span class="p">().</span><span class="n">source</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">source_options</span><span class="p">().</span><span class="n">address</span><span class="p">(</span><span class="n">q</span><span class="p">.</span><span class="n">name</span><span class="p">())));</span>
+        <span class="n">q</span><span class="p">.</span><span class="n">subscribe</span><span class="p">(</span><span class="n">sender</span><span class="p">);</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;broker outgoing link from &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">q</span><span class="p">.</span><span class="n">name</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+    <span class="p">}</span>
+
+    <span class="kt">void</span> <span class="n">on_receiver_open</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">receiver</span> <span class="o">&amp;</span><span class="n">receiver</span><span class="p">)</span> <span class="n">OVERRIDE</span> <span class="p">{</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">address</span> <span class="o">=</span> <span class="n">receiver</span><span class="p">.</span><span class="n">target</span><span class="p">().</span><span class="n">address</span><span class="p">();</span>
+        <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">address</span><span class="p">.</span><span class="n">empty</span><span class="p">())</span> <span class="p">{</span>
+            <span class="n">receiver</span><span class="p">.</span><span class="n">open</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">receiver_options</span><span class="p">().</span><span class="n">target</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">target_options</span><span class="p">().</span><span class="n">address</span><span class="p">(</span><span class="n">address</span><span class="p">)));</span>
+            <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;broker incoming link to &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">address</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+        <span class="p">}</span>
+    <span class="p">}</span>
+
+    <span class="kt">void</span> <span class="n">unsubscribe</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">sender</span> <span class="n">lnk</span><span class="p">)</span> <span class="p">{</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">address</span> <span class="o">=</span> <span class="n">lnk</span><span class="p">.</span><span class="n">source</span><span class="p">().</span><span class="n">address</span><span class="p">();</span>
+
+        <span class="k">if</span> <span class="p">(</span><span class="n">queues_</span><span class="p">.</span><span class="n">get</span><span class="p">(</span><span class="n">address</span><span class="p">).</span><span class="n">unsubscribe</span><span class="p">(</span><span class="n">lnk</span><span class="p">))</span> <span class="p">{</span>
+            <span class="n">queues_</span><span class="p">.</span><span class="n">erase</span><span class="p">(</span><span class="n">address</span><span class="p">);</span>
+        <span class="p">}</span>
+    <span class="p">}</span>
+
+    <span class="kt">void</span> <span class="n">on_sender_close</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">sender</span> <span class="o">&amp;</span><span class="n">sender</span><span class="p">)</span> <span class="n">OVERRIDE</span> <span class="p">{</span>
+        <span class="n">unsubscribe</span><span class="p">(</span><span class="n">sender</span><span class="p">);</span>
+    <span class="p">}</span>
+
+    <span class="kt">void</span> <span class="n">on_connection_close</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">connection</span> <span class="o">&amp;</span><span class="n">c</span><span class="p">)</span> <span class="n">OVERRIDE</span> <span class="p">{</span>
+        <span class="n">remove_stale_consumers</span><span class="p">(</span><span class="n">c</span><span class="p">);</span>
+    <span class="p">}</span>
+
+    <span class="kt">void</span> <span class="n">on_transport_close</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">transport</span> <span class="o">&amp;</span><span class="n">t</span><span class="p">)</span> <span class="n">OVERRIDE</span> <span class="p">{</span>
+        <span class="n">remove_stale_consumers</span><span class="p">(</span><span class="n">t</span><span class="p">.</span><span class="n">connection</span><span class="p">());</span>
+    <span class="p">}</span>
+
+    <span class="kt">void</span> <span class="n">on_transport_error</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">transport</span> <span class="o">&amp;</span><span class="n">t</span><span class="p">)</span> <span class="n">OVERRIDE</span> <span class="p">{</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;broker client disconnect: &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">t</span><span class="p">.</span><span class="n">error</span><span class="p">().</span><span class="n">what</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+    <span class="p">}</span>
+
+    <span class="kt">void</span> <span class="n">on_error</span><span class="p">(</span><span class="k">const</span> <span class="n">proton</span><span class="o">::</span><span class="n">error_condition</span> <span class="o">&amp;</span><span class="n">c</span><span class="p">)</span> <span class="n">OVERRIDE</span> <span class="p">{</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">cerr</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;broker error: &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">c</span><span class="p">.</span><span class="n">what</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+    <span class="p">}</span>
+
+    <span class="kt">void</span> <span class="n">remove_stale_consumers</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">connection</span> <span class="n">connection</span><span class="p">)</span> <span class="p">{</span>
+        <span class="n">proton</span><span class="o">::</span><span class="n">session_range</span> <span class="n">r1</span> <span class="o">=</span> <span class="n">connection</span><span class="p">.</span><span class="n">sessions</span><span class="p">();</span>
+        <span class="k">for</span> <span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">session_iterator</span> <span class="n">i1</span> <span class="o">=</span> <span class="n">r1</span><span class="p">.</span><span class="n">begin</span><span class="p">();</span> <span class="n">i1</span> <span class="o">!=</span> <span class="n">r1</span><span class="p">.</span><span class="n">end</span><span class="p">();</span> <span class="o">++</span><span class="n">i1</span><span class="p">)</span> <span class="p">{</span>
+            <span class="n">proton</span><span class="o">::</span><span class="n">sender_range</span> <span class="n">r2</span> <span class="o">=</span> <span class="n">i1</span><span class="o">-&gt;</span><span class="n">senders</span><span class="p">();</span>
+            <span class="k">for</span> <span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">sender_iterator</span> <span class="n">i2</span> <span class="o">=</span> <span class="n">r2</span><span class="p">.</span><span class="n">begin</span><span class="p">();</span> <span class="n">i2</span> <span class="o">!=</span> <span class="n">r2</span><span class="p">.</span><span class="n">end</span><span class="p">();</span> <span class="o">++</span><span class="n">i2</span><span class="p">)</span> <span class="p">{</span>
+                <span class="k">if</span> <span class="p">(</span><span class="n">i2</span><span class="o">-&gt;</span><span class="n">active</span><span class="p">())</span>
+                    <span class="n">unsubscribe</span><span class="p">(</span><span class="o">*</span><span class="n">i2</span><span class="p">);</span>
+            <span class="p">}</span>
+        <span class="p">}</span>
+    <span class="p">}</span>
+
+    <span class="kt">void</span> <span class="n">on_sendable</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">sender</span> <span class="o">&amp;</span><span class="n">s</span><span class="p">)</span> <span class="n">OVERRIDE</span> <span class="p">{</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">address</span> <span class="o">=</span> <span class="n">s</span><span class="p">.</span><span class="n">source</span><span class="p">().</span><span class="n">address</span><span class="p">();</span>
+
+        <span class="n">queues_</span><span class="p">.</span><span class="n">get</span><span class="p">(</span><span class="n">address</span><span class="p">).</span><span class="n">dispatch</span><span class="p">(</span><span class="o">&amp;</span><span class="n">s</span><span class="p">);</span>
+    <span class="p">}</span>
+
+    <span class="kt">void</span> <span class="n">on_message</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">delivery</span> <span class="o">&amp;</span><span class="n">d</span><span class="p">,</span> <span class="n">proton</span><span class="o">::</span><span class="n">message</span> <span class="o">&amp;</span><span class="n">m</span><span class="p">)</span> <span class="n">OVERRIDE</span> <span class="p">{</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">address</span> <span class="o">=</span> <span class="n">d</span><span class="p">.</span><span class="n">receiver</span><span class="p">().</span><span class="n">target</span><span class="p">().</span><span class="n">address</span><span class="p">();</span>
+        <span class="n">queues_</span><span class="p">.</span><span class="n">get</span><span class="p">(</span><span class="n">address</span><span class="p">).</span><span class="n">publish</span><span class="p">(</span><span class="n">m</span><span class="p">);</span>
+    <span class="p">}</span>
+
+  <span class="k">protected</span><span class="o">:</span>
+    <span class="n">queues</span><span class="o">&amp;</span> <span class="n">queues_</span><span class="p">;</span>
+<span class="p">};</span>
+
+
+<span class="c1">// The broker</span>
+<span class="k">class</span> <span class="nc">broker</span> <span class="p">{</span>
+  <span class="k">public</span><span class="o">:</span>
+    <span class="n">broker</span><span class="p">(</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="o">&amp;</span> <span class="n">url</span><span class="p">)</span> <span class="o">:</span> <span class="n">handler_</span><span class="p">(</span><span class="n">url</span><span class="p">,</span> <span class="n">queues_</span><span class="p">)</span> <span class="p">{}</span>
+
+    <span class="n">proton</span><span class="o">::</span><span class="n">messaging_handler</span><span class="o">&amp;</span> <span class="n">handler</span><span class="p">()</span> <span class="p">{</span> <span class="k">return</span> <span class="n">handler_</span><span class="p">;</span> <span class="p">}</span>
+
+  <span class="k">private</span><span class="o">:</span>
+    <span class="k">class</span> <span class="nc">my_handler</span> <span class="o">:</span> <span class="k">public</span> <span class="n">broker_handler</span> <span class="p">{</span>
+      <span class="k">public</span><span class="o">:</span>
+        <span class="n">my_handler</span><span class="p">(</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="o">&amp;</span> <span class="n">u</span><span class="p">,</span> <span class="n">queues</span><span class="o">&amp;</span> <span class="n">qs</span><span class="p">)</span> <span class="o">:</span> <span class="n">broker_handler</span><span class="p">(</span><span class="n">qs</span><span class="p">),</span> <span class="n">url_</span><span class="p">(</span><span class="n">u</span><span class="p">)</span> <span class="p">{}</span>
+
+        <span class="kt">void</span> <span class="n">on_container_start</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">container</span> <span class="o">&amp;</span><span class="n">c</span><span class="p">)</span> <span class="n">OVERRIDE</span> <span class="p">{</span>
+            <span class="n">c</span><span class="p">.</span><span class="n">listen</span><span class="p">(</span><span class="n">url_</span><span class="p">);</span>
+            <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;broker listening on &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">url_</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+        <span class="p">}</span>
+
+      <span class="k">private</span><span class="o">:</span>
+        <span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="o">&amp;</span> <span class="n">url_</span><span class="p">;</span>
+    <span class="p">};</span>
+
+  <span class="k">private</span><span class="o">:</span>
+    <span class="n">queues</span> <span class="n">queues_</span><span class="p">;</span>
+    <span class="n">my_handler</span> <span class="n">handler_</span><span class="p">;</span>
+<span class="p">};</span>
+
+<span class="kt">int</span> <span class="nf">main</span><span class="p">(</span><span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">**</span><span class="n">argv</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">url</span><span class="p">(</span><span class="s">&quot;0.0.0.0&quot;</span><span class="p">);</span>
+    <span class="n">example</span><span class="o">::</span><span class="n">options</span> <span class="n">opts</span><span class="p">(</span><span class="n">argc</span><span class="p">,</span> <span class="n">argv</span><span class="p">);</span>
+
+    <span class="n">opts</span><span class="p">.</span><span class="n">add_value</span><span class="p">(</span><span class="n">url</span><span class="p">,</span> <span class="sc">&#39;a&#39;</span><span class="p">,</span> <span class="s">&quot;address&quot;</span><span class="p">,</span> <span class="s">&quot;listen on URL&quot;</span><span class="p">,</span> <span class="s">&quot;URL&quot;</span><span class="p">);</span>
+
+    <span class="k">try</span> <span class="p">{</span>
+        <span class="n">opts</span><span class="p">.</span><span class="n">parse</span><span class="p">();</span>
+
+        <span class="n">broker</span> <span class="n">b</span><span class="p">(</span><span class="n">url</span><span class="p">);</span>
+        <span class="n">proton</span><span class="o">::</span><span class="n">default_container</span><span class="p">(</span><span class="n">b</span><span class="p">.</span><span class="n">handler</span><span class="p">()).</span><span class="n">run</span><span class="p">();</span>
+
+        <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">catch</span> <span class="p">(</span><span class="k">const</span> <span class="n">example</span><span class="o">::</span><span class="n">bad_option</span><span class="o">&amp;</span> <span class="n">e</span><span class="p">)</span> <span class="p">{</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="n">opts</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span> <span class="o">&lt;&lt;</span> <span class="n">e</span><span class="p">.</span><span class="n">what</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">catch</span> <span class="p">(</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">exception</span><span class="o">&amp;</span> <span class="n">e</span><span class="p">)</span> <span class="p">{</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">cerr</span> <span class="o">&lt;&lt;</span> <span class="n">e</span><span class="p">.</span><span class="n">what</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+    <span class="p">}</span>
+
+    <span class="k">return</span> <span class="mi">1</span><span class="p">;</span>
+<span class="p">}</span>
+</pre></div>
+
+<p><a href="broker.cpp">Download this file</a></p>
+
+
+          <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/75ca8b14/content/releases/qpid-proton-0.13.0/proton/cpp/examples/broker.hpp
----------------------------------------------------------------------
diff --git a/content/releases/qpid-proton-0.13.0/proton/cpp/examples/broker.hpp b/content/releases/qpid-proton-0.13.0/proton/cpp/examples/broker.hpp
new file mode 100755
index 0000000..184ddc7
--- /dev/null
+++ b/content/releases/qpid-proton-0.13.0/proton/cpp/examples/broker.hpp
@@ -0,0 +1,236 @@
+#ifndef BROKER_HPP
+#define BROKER_HPP
+
+/*
+ * 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.
+ */
+
+/// @file
+///
+/// Common code used by different broker examples.
+///
+/// The examples add functionality as needed, this helps to make it
+/// easier to see the important differences between the examples.
+
+#include <proton/connection.hpp>
+#include <proton/delivery.hpp>
+#include <proton/messaging_handler.hpp>
+#include <proton/message.hpp>
+#include <proton/sasl.hpp>
+#include <proton/sender.hpp>
+#include <proton/tracker.hpp>
+#include <proton/transport.hpp>
+#include <proton/sender_options.hpp>
+#include <proton/receiver_options.hpp>
+#include <proton/source_options.hpp>
+#include <proton/target_options.hpp>
+
+#include <iostream>
+#include <deque>
+#include <map>
+#include <list>
+#include <sstream>
+
+/// A simple implementation of a queue.
+class queue {
+  public:
+    queue(const std::string &name, bool dynamic = false) : name_(name), dynamic_(dynamic) {}
+
+    std::string name() const { return name_; }
+
+    void subscribe(proton::sender s) {
+        consumers_.push_back(s);
+    }
+
+    // Return true if queue can be deleted.
+    bool unsubscribe(proton::sender s) {
+        consumers_.remove(s);
+        return (consumers_.size() == 0 && (dynamic_ || messages_.size() == 0));
+    }
+
+    void publish(const proton::message &m) {
+        messages_.push_back(m);
+        dispatch(0);
+    }
+
+    void dispatch(proton::sender *s) {
+        while (deliver_to(s)) {}
+    }
+
+    bool deliver_to(proton::sender *s) {
+        // Deliver to single sender if supplied, else all consumers
+        int count = s ? 1 : consumers_.size();
+
+        if (!count) return false;
+
+        bool result = false;
+        sender_list::iterator it = consumers_.begin();
+
+        if (!s && count) {
+            s = &*it;
+        }
+
+        while (messages_.size()) {
+            if (s->credit()) {
+                const proton::message& m = messages_.front();
+
+                s->send(m);
+                messages_.pop_front();
+                result = true;
+            }
+
+            if (--count) {
+                it++;
+            } else {
+                return result;
+            }
+        }
+
+        return false;
+    }
+
+  private:
+    typedef std::deque<proton::message> message_queue;
+    typedef std::list<proton::sender> sender_list;
+
+    std::string name_;
+    bool dynamic_;
+    message_queue messages_;
+    sender_list consumers_;
+};
+
+/// A collection of queues and queue factory, used by a broker.
+class queues {
+  public:
+    queues() : next_id_(0) {}
+    virtual ~queues() {}
+
+    // Get or create a queue.
+    virtual queue &get(const std::string &address = std::string()) {
+        if (address.empty()) {
+            throw std::runtime_error("empty queue name");
+        }
+
+        queue*& q = queues_[address];
+
+        if (!q) q = new queue(address);
+
+        return *q;
+    }
+
+    // Create a dynamic queue with a unique name.
+    virtual queue &dynamic() {
+        std::ostringstream os;
+        os << "q" << next_id_++;
+        queue *q = queues_[os.str()] = new queue(os.str(), true);
+
+        return *q;
+    }
+
+    // Delete the named queue
+    virtual void erase(std::string &name) {
+        delete queues_[name];
+        queues_.erase(name);
+    }
+
+  protected:
+    typedef std::map<std::string, queue *> queue_map;
+    queue_map queues_;
+    uint64_t next_id_; // Use to generate unique queue IDs.
+};
+
+#include <proton/config.hpp>
+
+/** Common handler logic for brokers. */
+class broker_handler : public proton::messaging_handler {
+  public:
+    broker_handler(queues& qs) : queues_(qs) {}
+
+    void on_transport_open(proton::transport &t) OVERRIDE {
+        std::cout << "Connection from user: " << t.sasl().user() << " (mechanism: " << t.sasl().mech() << ")" << std::endl;
+    }
+
+    void on_sender_open(proton::sender &sender) OVERRIDE {
+        proton::source src(sender.source());
+        queue &q = src.dynamic() ?
+            queues_.dynamic() : queues_.get(src.address());
+        sender.open(proton::sender_options().source(proton::source_options().address(q.name())));
+        q.subscribe(sender);
+        std::cout << "broker outgoing link from " << q.name() << std::endl;
+    }
+
+    void on_receiver_open(proton::receiver &receiver) OVERRIDE {
+        std::string address = receiver.target().address();
+        if (!address.empty()) {
+            receiver.open(proton::receiver_options().target(proton::target_options().address(address)));
+            std::cout << "broker incoming link to " << address << std::endl;
+        }
+    }
+
+    void unsubscribe(proton::sender lnk) {
+        std::string address = lnk.source().address();
+
+        if (queues_.get(address).unsubscribe(lnk)) {
+            queues_.erase(address);
+        }
+    }
+
+    void on_sender_close(proton::sender &sender) OVERRIDE {
+        unsubscribe(sender);
+    }
+
+    void on_connection_close(proton::connection &c) OVERRIDE {
+        remove_stale_consumers(c);
+    }
+
+    void on_transport_close(proton::transport &t) OVERRIDE {
+        remove_stale_consumers(t.connection());
+    }
+
+    void on_transport_error(proton::transport &t) OVERRIDE {
+        std::cout << "broker client disconnect: " << t.error().what() << std::endl;
+    }
+
+    void on_error(const proton::error_condition &c) OVERRIDE {
+        std::cerr << "broker error: " << c.what() << std::endl;
+    }
+
+    void remove_stale_consumers(proton::connection connection) {
+        proton::sender_range sr = connection.senders();
+        for (proton::sender_iterator i = sr.begin(); i != sr.end(); ++i) {
+            if (i->active())
+                unsubscribe(*i);
+        }
+    }
+
+    void on_sendable(proton::sender &s) OVERRIDE {
+        std::string address = s.source().address();
+
+        queues_.get(address).dispatch(&s);
+    }
+
+    void on_message(proton::delivery &d, proton::message &m) OVERRIDE {
+        std::string address = d.receiver().target().address();
+        queues_.get(address).publish(m);
+    }
+
+  protected:
+    queues& queues_;
+};
+
+#endif // BROKER_HPP


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


[21/26] qpid-site git commit: QPID-7350: Examples that should have gone with the previous commit

Posted by jr...@apache.org.
http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/content/releases/qpid-proton-0.13.0/proton/cpp/examples/options.hpp.html
----------------------------------------------------------------------
diff --git a/content/releases/qpid-proton-0.13.0/proton/cpp/examples/options.hpp.html b/content/releases/qpid-proton-0.13.0/proton/cpp/examples/options.hpp.html
new file mode 100644
index 0000000..f0f4f4e
--- /dev/null
+++ b/content/releases/qpid-proton-0.13.0/proton/cpp/examples/options.hpp.html
@@ -0,0 +1,305 @@
+<!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>options.hpp - 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/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;">
+        <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-proton-0.13.0/index.html">Qpid Proton 0.13.0</a></li><li><a href="/releases/qpid-proton-0.13.0/proton/cpp/examples/index.html">Proton C++ Examples</a></li><li>options.hpp</li></ul>
+
+        <div id="-middle-content">
+          
+<h1>options.hpp</h1>
+<div class="highlight"><pre><span></span><span class="cp">#ifndef OPTIONS_HPP</span>
+<span class="cp">#define OPTIONS_HPP</span>
+
+
+<span class="cp">#include</span> <span class="cpf">&lt;string&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;sstream&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;ostream&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;vector&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;stdexcept&gt;</span><span class="cp"></span>
+
+<span class="k">namespace</span> <span class="n">example</span> <span class="p">{</span>
+
+<span class="k">struct</span> <span class="nl">bad_option</span> <span class="p">:</span> <span class="k">public</span> <span class="n">std</span><span class="o">::</span><span class="n">runtime_error</span> <span class="p">{</span>
+    <span class="n">bad_option</span><span class="p">(</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="o">&amp;</span> <span class="n">s</span><span class="p">)</span> <span class="o">:</span> <span class="n">std</span><span class="o">::</span><span class="n">runtime_error</span><span class="p">(</span><span class="n">s</span><span class="p">)</span> <span class="p">{}</span>
+<span class="p">};</span>
+
+
+<span class="k">class</span> <span class="nc">options</span> <span class="p">{</span>
+  <span class="k">public</span><span class="o">:</span>
+
+    <span class="n">options</span><span class="p">(</span><span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="k">const</span> <span class="o">*</span> <span class="k">const</span> <span class="o">*</span> <span class="n">argv</span><span class="p">)</span> <span class="o">:</span> <span class="n">argc_</span><span class="p">(</span><span class="n">argc</span><span class="p">),</span> <span class="n">argv_</span><span class="p">(</span><span class="n">argv</span><span class="p">),</span> <span class="n">prog_</span><span class="p">(</span><span class="n">argv</span><span class="p">[</span><span class="mi">0</span><span class="p">]),</span> <span class="n">help_</span><span class="p">()</span> <span class="p">{</span>
+        <span class="kt">size_t</span> <span class="n">slash</span> <span class="o">=</span> <span class="n">prog_</span><span class="p">.</span><span class="n">find_last_of</span><span class="p">(</span><span class="s">&quot;/</span><span class="se">\\</span><span class="s">&quot;</span><span class="p">);</span>
+        <span class="k">if</span> <span class="p">(</span><span class="n">slash</span> <span class="o">!=</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="o">::</span><span class="n">npos</span><span class="p">)</span>
+            <span class="n">prog_</span> <span class="o">=</span> <span class="n">prog_</span><span class="p">.</span><span class="n">substr</span><span class="p">(</span><span class="n">slash</span><span class="o">+</span><span class="mi">1</span><span class="p">);</span> <span class="c1">// Extract prog name from path</span>
+        <span class="n">add_flag</span><span class="p">(</span><span class="n">help_</span><span class="p">,</span> <span class="sc">&#39;h&#39;</span><span class="p">,</span> <span class="s">&quot;help&quot;</span><span class="p">,</span> <span class="s">&quot;Print the help message&quot;</span><span class="p">);</span>
+    <span class="p">}</span>
+
+    <span class="o">~</span><span class="n">options</span><span class="p">()</span> <span class="p">{</span>
+        <span class="k">for</span> <span class="p">(</span><span class="n">opts</span><span class="o">::</span><span class="n">iterator</span> <span class="n">i</span> <span class="o">=</span> <span class="n">opts_</span><span class="p">.</span><span class="n">begin</span><span class="p">();</span> <span class="n">i</span> <span class="o">!=</span> <span class="n">opts_</span><span class="p">.</span><span class="n">end</span><span class="p">();</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span>
+            <span class="k">delete</span> <span class="o">*</span><span class="n">i</span><span class="p">;</span>
+    <span class="p">}</span>
+
+    
+    <span class="k">template</span><span class="o">&lt;</span><span class="k">class</span> <span class="nc">T</span><span class="o">&gt;</span>
+    <span class="kt">void</span> <span class="n">add_value</span><span class="p">(</span><span class="n">T</span><span class="o">&amp;</span> <span class="n">value</span><span class="p">,</span> <span class="kt">char</span> <span class="n">short_name</span><span class="p">,</span> <span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="o">&amp;</span> <span class="n">long_name</span><span class="p">,</span> <span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="o">&amp;</span> <span class="n">description</span><span class="p">,</span> <span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">var</span><span class="p">)</span> <span class="p">{</span>
+        <span class="n">opts_</span><span class="p">.</span><span class="n">push_back</span><span class="p">(</span><span class="k">new</span> <span class="n">option_value</span><span class="o">&lt;</span><span class="n">T</span><span class="o">&gt;</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="n">short_name</span><span class="p">,</span> <span class="n">long_name</span><span class="p">,</span> <span class="n">description</span><span class="p">,</span> <span class="n">var</span><span class="p">));</span>
+    <span class="p">}</span>
+
+    
+    <span class="kt">void</span> <span class="n">add_flag</span><span class="p">(</span><span class="kt">bool</span><span class="o">&amp;</span> <span class="n">flag</span><span class="p">,</span> <span class="kt">char</span> <span class="n">short_name</span><span class="p">,</span> <span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="o">&amp;</span> <span class="n">long_name</span><span class="p">,</span> <span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="o">&amp;</span> <span class="n">description</span><span class="p">)</span> <span class="p">{</span>
+        <span class="n">opts_</span><span class="p">.</span><span class="n">push_back</span><span class="p">(</span><span class="k">new</span> <span class="n">option_flag</span><span class="p">(</span><span class="n">flag</span><span class="p">,</span> <span class="n">short_name</span><span class="p">,</span> <span class="n">long_name</span><span class="p">,</span> <span class="n">description</span><span class="p">));</span>
+    <span class="p">}</span>
+
+    
+    <span class="kt">int</span> <span class="n">parse</span><span class="p">()</span> <span class="p">{</span>
+        <span class="kt">int</span> <span class="n">arg</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+        <span class="k">for</span> <span class="p">(;</span> <span class="n">arg</span> <span class="o">&lt;</span> <span class="n">argc_</span> <span class="o">&amp;&amp;</span> <span class="n">argv_</span><span class="p">[</span><span class="n">arg</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span> <span class="o">==</span> <span class="sc">&#39;-&#39;</span><span class="p">;</span> <span class="o">++</span><span class="n">arg</span><span class="p">)</span> <span class="p">{</span>
+            <span class="n">opts</span><span class="o">::</span><span class="n">iterator</span> <span class="n">i</span> <span class="o">=</span> <span class="n">opts_</span><span class="p">.</span><span class="n">begin</span><span class="p">();</span>
+            <span class="k">while</span> <span class="p">(</span><span class="n">i</span> <span class="o">!=</span> <span class="n">opts_</span><span class="p">.</span><span class="n">end</span><span class="p">()</span> <span class="o">&amp;&amp;</span> <span class="o">!</span><span class="p">(</span><span class="o">*</span><span class="n">i</span><span class="p">)</span><span class="o">-&gt;</span><span class="n">parse</span><span class="p">(</span><span class="n">argc_</span><span class="p">,</span> <span class="n">argv_</span><span class="p">,</span> <span class="n">arg</span><span class="p">))</span>
+                <span class="o">++</span><span class="n">i</span><span class="p">;</span>
+            <span class="k">if</span> <span class="p">(</span><span class="n">i</span> <span class="o">==</span> <span class="n">opts_</span><span class="p">.</span><span class="n">end</span><span class="p">())</span>
+                <span class="k">throw</span> <span class="n">bad_option</span><span class="p">(</span><span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="p">(</span><span class="s">&quot;unknown option &quot;</span><span class="p">)</span> <span class="o">+</span> <span class="n">argv_</span><span class="p">[</span><span class="n">arg</span><span class="p">]);</span>
+        <span class="p">}</span>
+        <span class="k">if</span> <span class="p">(</span><span class="n">help_</span><span class="p">)</span> <span class="k">throw</span> <span class="n">bad_option</span><span class="p">(</span><span class="s">&quot;&quot;</span><span class="p">);</span>
+        <span class="k">return</span> <span class="n">arg</span><span class="p">;</span>
+    <span class="p">}</span>
+
+    
+  <span class="k">friend</span> <span class="n">std</span><span class="o">::</span><span class="n">ostream</span><span class="o">&amp;</span> <span class="k">operator</span><span class="o">&lt;&lt;</span><span class="p">(</span><span class="n">std</span><span class="o">::</span><span class="n">ostream</span><span class="o">&amp;</span> <span class="n">os</span><span class="p">,</span> <span class="k">const</span> <span class="n">options</span><span class="o">&amp;</span> <span class="n">op</span><span class="p">)</span> <span class="p">{</span>
+      <span class="n">os</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;usage: &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">op</span><span class="p">.</span><span class="n">prog_</span> <span class="o">&lt;&lt;</span> <span class="s">&quot; [options]&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+      <span class="n">os</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;options:&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+      <span class="k">for</span> <span class="p">(</span><span class="n">opts</span><span class="o">::</span><span class="n">const_iterator</span> <span class="n">i</span> <span class="o">=</span> <span class="n">op</span><span class="p">.</span><span class="n">opts_</span><span class="p">.</span><span class="n">begin</span><span class="p">();</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">op</span><span class="p">.</span><span class="n">opts_</span><span class="p">.</span><span class="n">end</span><span class="p">();</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span>
+          <span class="n">os</span> <span class="o">&lt;&lt;</span> <span class="o">**</span><span class="n">i</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+      <span class="k">return</span> <span class="n">os</span><span class="p">;</span>
+  <span class="p">}</span>
+
+ <span class="k">private</span><span class="o">:</span>
+    <span class="k">class</span> <span class="nc">option</span> <span class="p">{</span>
+      <span class="k">public</span><span class="o">:</span>
+        <span class="n">option</span><span class="p">(</span><span class="kt">char</span> <span class="n">s</span><span class="p">,</span> <span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="o">&amp;</span> <span class="n">l</span><span class="p">,</span> <span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="o">&amp;</span> <span class="n">d</span><span class="p">,</span> <span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">v</span><span class="p">)</span> <span class="o">:</span>
+            <span class="n">short_</span><span class="p">(</span><span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="p">(</span><span class="s">&quot;-&quot;</span><span class="p">)</span> <span class="o">+</span> <span class="n">s</span><span class="p">),</span> <span class="n">long_</span><span class="p">(</span><span class="s">&quot;--&quot;</span> <span class="o">+</span> <span class="n">l</span><span class="p">),</span> <span class="n">desc_</span><span class="p">(</span><span class="n">d</span><span class="p">),</span> <span class="n">var_</span><span class="p">(</span><span class="n">v</span><span class="p">)</span> <span class="p">{}</span>
+        <span class="k">virtual</span> <span class="o">~</span><span class="n">option</span><span class="p">()</span> <span class="p">{}</span>
+
+        <span class="k">virtual</span> <span class="kt">bool</span> <span class="n">parse</span><span class="p">(</span><span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="k">const</span> <span class="o">*</span> <span class="k">const</span> <span class="o">*</span> <span class="n">argv</span><span class="p">,</span> <span class="kt">int</span> <span class="o">&amp;</span><span class="n">i</span><span class="p">)</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+        <span class="k">virtual</span> <span class="kt">void</span> <span class="nf">print_default</span><span class="p">(</span><span class="n">std</span><span class="o">::</span><span class="n">ostream</span><span class="o">&amp;</span><span class="p">)</span> <span class="k">const</span> <span class="p">{}</span>
+
+      <span class="k">friend</span> <span class="n">std</span><span class="o">::</span><span class="n">ostream</span><span class="o">&amp;</span> <span class="k">operator</span><span class="o">&lt;&lt;</span><span class="p">(</span><span class="n">std</span><span class="o">::</span><span class="n">ostream</span><span class="o">&amp;</span> <span class="n">os</span><span class="p">,</span> <span class="k">const</span> <span class="n">option</span><span class="o">&amp;</span> <span class="n">op</span><span class="p">)</span> <span class="p">{</span>
+          <span class="n">os</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;  &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">op</span><span class="p">.</span><span class="n">short_</span><span class="p">;</span>
+          <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">op</span><span class="p">.</span><span class="n">var_</span><span class="p">.</span><span class="n">empty</span><span class="p">())</span> <span class="n">os</span> <span class="o">&lt;&lt;</span> <span class="s">&quot; &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">op</span><span class="p">.</span><span class="n">var_</span><span class="p">;</span>
+          <span class="n">os</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;, &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">op</span><span class="p">.</span><span class="n">long_</span><span class="p">;</span>
+          <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">op</span><span class="p">.</span><span class="n">var_</span><span class="p">.</span><span class="n">empty</span><span class="p">())</span> <span class="n">os</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;=&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">op</span><span class="p">.</span><span class="n">var_</span><span class="p">;</span>
+          <span class="n">os</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;        &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">op</span><span class="p">.</span><span class="n">desc_</span><span class="p">;</span>
+          <span class="n">op</span><span class="p">.</span><span class="n">print_default</span><span class="p">(</span><span class="n">os</span><span class="p">);</span>
+          <span class="k">return</span> <span class="n">os</span><span class="p">;</span>
+      <span class="p">}</span>
+
+      <span class="k">protected</span><span class="o">:</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">short_</span><span class="p">,</span> <span class="n">long_</span><span class="p">,</span> <span class="n">desc_</span><span class="p">,</span> <span class="n">var_</span><span class="p">;</span>
+    <span class="p">};</span>
+
+    <span class="k">template</span> <span class="o">&lt;</span><span class="k">class</span> <span class="nc">T</span><span class="o">&gt;</span>
+    <span class="k">class</span> <span class="nc">option_value</span> <span class="o">:</span> <span class="k">public</span> <span class="n">option</span> <span class="p">{</span>
+      <span class="k">public</span><span class="o">:</span>
+        <span class="n">option_value</span><span class="p">(</span><span class="n">T</span><span class="o">&amp;</span> <span class="n">value</span><span class="p">,</span> <span class="kt">char</span> <span class="n">s</span><span class="p">,</span> <span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="o">&amp;</span> <span class="n">l</span><span class="p">,</span> <span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="o">&amp;</span> <span class="n">d</span><span class="p">,</span> <span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="o">&amp;</span> <span class="n">v</span><span class="p">)</span> <span class="o">:</span>
+            <span class="n">option</span><span class="p">(</span><span class="n">s</span><span class="p">,</span> <span class="n">l</span><span class="p">,</span> <span class="n">d</span><span class="p">,</span> <span class="n">v</span><span class="p">),</span> <span class="n">value_</span><span class="p">(</span><span class="n">value</span><span class="p">)</span> <span class="p">{}</span>
+
+        <span class="kt">bool</span> <span class="n">parse</span><span class="p">(</span><span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="k">const</span> <span class="o">*</span> <span class="k">const</span> <span class="o">*</span> <span class="n">argv</span><span class="p">,</span> <span class="kt">int</span> <span class="o">&amp;</span><span class="n">i</span><span class="p">)</span> <span class="p">{</span>
+            <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">arg</span><span class="p">(</span><span class="n">argv</span><span class="p">[</span><span class="n">i</span><span class="p">]);</span>
+            <span class="k">if</span> <span class="p">(</span><span class="n">arg</span> <span class="o">==</span> <span class="n">short_</span> <span class="o">||</span> <span class="n">arg</span> <span class="o">==</span> <span class="n">long_</span><span class="p">)</span> <span class="p">{</span>
+                <span class="k">if</span> <span class="p">(</span><span class="n">i</span> <span class="o">&lt;</span> <span class="n">argc</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span> <span class="p">{</span>
+                    <span class="n">set_value</span><span class="p">(</span><span class="n">arg</span><span class="p">,</span> <span class="n">argv</span><span class="p">[</span><span class="o">++</span><span class="n">i</span><span class="p">]);</span>
+                    <span class="k">return</span> <span class="nb">true</span><span class="p">;</span>
+                <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
+                    <span class="k">throw</span> <span class="n">bad_option</span><span class="p">(</span><span class="s">&quot;missing value for &quot;</span> <span class="o">+</span> <span class="n">arg</span><span class="p">);</span>
+                <span class="p">}</span>
+            <span class="p">}</span>
+            <span class="k">if</span> <span class="p">(</span><span class="n">arg</span><span class="p">.</span><span class="n">compare</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">long_</span><span class="p">.</span><span class="n">size</span><span class="p">(),</span> <span class="n">long_</span><span class="p">)</span> <span class="o">==</span> <span class="mi">0</span> <span class="o">&amp;&amp;</span> <span class="n">arg</span><span class="p">[</span><span class="n">long_</span><span class="p">.</span><span class="n">size</span><span class="p">()]</span> <span class="o">==</span> <span class="sc">&#39;=&#39;</span> <span class="p">)</span> <span class="p">{</span>
+                <span class="n">set_value</span><span class="p">(</span><span class="n">long_</span><span class="p">,</span> <span class="n">arg</span><span class="p">.</span><span class="n">substr</span><span class="p">(</span><span class="n">long_</span><span class="p">.</span><span class="n">size</span><span class="p">()</span><span class="o">+</span><span class="mi">1</span><span class="p">));</span>
+                <span class="k">return</span> <span class="nb">true</span><span class="p">;</span>
+            <span class="p">}</span>
+            <span class="k">return</span> <span class="nb">false</span><span class="p">;</span>
+        <span class="p">}</span>
+
+        <span class="k">virtual</span> <span class="kt">void</span> <span class="n">print_default</span><span class="p">(</span><span class="n">std</span><span class="o">::</span><span class="n">ostream</span><span class="o">&amp;</span> <span class="n">os</span><span class="p">)</span> <span class="k">const</span> <span class="p">{</span> <span class="n">os</span> <span class="o">&lt;&lt;</span> <span class="s">&quot; (default &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">value_</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;)&quot;</span><span class="p">;</span> <span class="p">}</span>
+
+        <span class="kt">void</span> <span class="n">set_value</span><span class="p">(</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="o">&amp;</span> <span class="n">opt</span><span class="p">,</span> <span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="o">&amp;</span> <span class="n">s</span><span class="p">)</span> <span class="p">{</span>
+            <span class="n">std</span><span class="o">::</span><span class="n">istringstream</span> <span class="n">is</span><span class="p">(</span><span class="n">s</span><span class="p">);</span>
+            <span class="n">is</span> <span class="o">&gt;&gt;</span> <span class="n">value_</span><span class="p">;</span>
+            <span class="k">if</span> <span class="p">(</span><span class="n">is</span><span class="p">.</span><span class="n">fail</span><span class="p">()</span> <span class="o">||</span> <span class="n">is</span><span class="p">.</span><span class="n">bad</span><span class="p">())</span>
+                <span class="k">throw</span> <span class="n">bad_option</span><span class="p">(</span><span class="s">&quot;bad value for &quot;</span> <span class="o">+</span> <span class="n">opt</span> <span class="o">+</span> <span class="s">&quot;: &quot;</span> <span class="o">+</span> <span class="n">s</span><span class="p">);</span>
+        <span class="p">}</span>
+
+      <span class="k">private</span><span class="o">:</span>
+        <span class="n">T</span><span class="o">&amp;</span> <span class="n">value_</span><span class="p">;</span>
+    <span class="p">};</span>
+
+    <span class="k">class</span> <span class="nc">option_flag</span><span class="o">:</span> <span class="k">public</span> <span class="n">option</span> <span class="p">{</span>
+      <span class="k">public</span><span class="o">:</span>
+        <span class="n">option_flag</span><span class="p">(</span><span class="kt">bool</span><span class="o">&amp;</span> <span class="n">flag</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="n">s</span><span class="p">,</span> <span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="o">&amp;</span> <span class="n">l</span><span class="p">,</span> <span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="o">&amp;</span> <span class="n">d</span><span class="p">)</span> <span class="o">:</span>
+            <span class="n">option</span><span class="p">(</span><span class="n">s</span><span class="p">,</span> <span class="n">l</span><span class="p">,</span> <span class="n">d</span><span class="p">,</span> <span class="s">&quot;&quot;</span><span class="p">),</span> <span class="n">flag_</span><span class="p">(</span><span class="n">flag</span><span class="p">)</span>
+        <span class="p">{</span> <span class="n">flag_</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span> <span class="p">}</span>
+
+        <span class="kt">bool</span> <span class="n">parse</span><span class="p">(</span><span class="kt">int</span> <span class="p">,</span> <span class="kt">char</span> <span class="k">const</span> <span class="o">*</span> <span class="k">const</span> <span class="o">*</span> <span class="n">argv</span><span class="p">,</span> <span class="kt">int</span> <span class="o">&amp;</span><span class="n">i</span><span class="p">)</span> <span class="p">{</span>
+            <span class="k">if</span> <span class="p">(</span><span class="n">argv</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">==</span> <span class="n">short_</span> <span class="o">||</span> <span class="n">argv</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">==</span> <span class="n">long_</span><span class="p">)</span> <span class="p">{</span>
+                <span class="n">flag_</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
+                <span class="k">return</span> <span class="nb">true</span><span class="p">;</span>
+            <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
+                <span class="k">return</span> <span class="nb">false</span><span class="p">;</span>
+            <span class="p">}</span>
+        <span class="p">}</span>
+
+      <span class="k">private</span><span class="o">:</span>
+        <span class="kt">bool</span> <span class="o">&amp;</span><span class="n">flag_</span><span class="p">;</span>
+    <span class="p">};</span>
+
+    <span class="k">typedef</span> <span class="n">std</span><span class="o">::</span><span class="n">vector</span><span class="o">&lt;</span><span class="n">option</span><span class="o">*&gt;</span> <span class="n">opts</span><span class="p">;</span>
+
+    <span class="kt">int</span> <span class="n">argc_</span><span class="p">;</span>
+    <span class="kt">char</span> <span class="k">const</span> <span class="o">*</span> <span class="k">const</span> <span class="o">*</span> <span class="n">argv_</span><span class="p">;</span>
+    <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">prog_</span><span class="p">;</span>
+    <span class="n">opts</span> <span class="n">opts_</span><span class="p">;</span>
+    <span class="kt">bool</span> <span class="n">help_</span><span class="p">;</span>
+<span class="p">};</span>
+<span class="p">}</span>
+
+<span class="cp">#endif </span><span class="c1">// OPTIONS_HPP</span>
+</pre></div>
+
+<p><a href="options.hpp">Download this file</a></p>
+
+
+          <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/75ca8b14/content/releases/qpid-proton-0.13.0/proton/cpp/examples/queue_browser.cpp
----------------------------------------------------------------------
diff --git a/content/releases/qpid-proton-0.13.0/proton/cpp/examples/queue_browser.cpp b/content/releases/qpid-proton-0.13.0/proton/cpp/examples/queue_browser.cpp
new file mode 100755
index 0000000..649716b
--- /dev/null
+++ b/content/releases/qpid-proton-0.13.0/proton/cpp/examples/queue_browser.cpp
@@ -0,0 +1,67 @@
+/*
+ *
+ * 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.
+ *
+ */
+
+#include <proton/connection.hpp>
+#include <proton/default_container.hpp>
+#include <proton/delivery.hpp>
+#include <proton/messaging_handler.hpp>
+#include <proton/receiver_options.hpp>
+#include <proton/source_options.hpp>
+#include <proton/url.hpp>
+
+#include <iostream>
+
+#include "fake_cpp11.hpp"
+
+using proton::source_options;
+
+class browser : public proton::messaging_handler {
+  private:
+    proton::url url;
+
+  public:
+    browser(const std::string& u) : url(u) {}
+
+    void on_container_start(proton::container &c) OVERRIDE {
+        proton::connection conn = c.connect(url);
+        source_options browsing = source_options().distribution_mode(proton::source::COPY);
+        conn.open_receiver(url.path(), proton::receiver_options().source(browsing));
+    }
+
+    void on_message(proton::delivery &, proton::message &m) OVERRIDE {
+        std::cout << m.body() << std::endl;
+    }
+};
+
+int main(int argc, char **argv) {
+    try {
+        std::string url = argc > 1 ? argv[1] : "127.0.0.1:5672/examples";
+
+        browser b(url);
+        proton::default_container(b).run();
+
+        return 0;
+    } catch (const std::exception& e) {
+        std::cerr << e.what() << std::endl;
+    }
+
+    return 1;
+}

http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/content/releases/qpid-proton-0.13.0/proton/cpp/examples/queue_browser.cpp.html
----------------------------------------------------------------------
diff --git a/content/releases/qpid-proton-0.13.0/proton/cpp/examples/queue_browser.cpp.html b/content/releases/qpid-proton-0.13.0/proton/cpp/examples/queue_browser.cpp.html
new file mode 100644
index 0000000..6839a49
--- /dev/null
+++ b/content/releases/qpid-proton-0.13.0/proton/cpp/examples/queue_browser.cpp.html
@@ -0,0 +1,195 @@
+<!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>queue_browser.cpp - 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/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;">
+        <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-proton-0.13.0/index.html">Qpid Proton 0.13.0</a></li><li><a href="/releases/qpid-proton-0.13.0/proton/cpp/examples/index.html">Proton C++ Examples</a></li><li>queue_browser.cpp</li></ul>
+
+        <div id="-middle-content">
+          
+<h1>queue_browser.cpp</h1>
+<div class="highlight"><pre><span></span><span class="cp">#include</span> <span class="cpf">&lt;proton/connection.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/default_container.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/delivery.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/messaging_handler.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/receiver_options.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/source_options.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/url.hpp&gt;</span><span class="cp"></span>
+
+<span class="cp">#include</span> <span class="cpf">&lt;iostream&gt;</span><span class="cp"></span>
+
+<span class="cp">#include</span> <span class="cpf">&quot;fake_cpp11.hpp&quot;</span><span class="cp"></span>
+
+<span class="k">using</span> <span class="n">proton</span><span class="o">::</span><span class="n">source_options</span><span class="p">;</span>
+
+<span class="k">class</span> <span class="nc">browser</span> <span class="o">:</span> <span class="k">public</span> <span class="n">proton</span><span class="o">::</span><span class="n">messaging_handler</span> <span class="p">{</span>
+  <span class="k">private</span><span class="o">:</span>
+    <span class="n">proton</span><span class="o">::</span><span class="n">url</span> <span class="n">url</span><span class="p">;</span>
+
+  <span class="k">public</span><span class="o">:</span>
+    <span class="n">browser</span><span class="p">(</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="o">&amp;</span> <span class="n">u</span><span class="p">)</span> <span class="o">:</span> <span class="n">url</span><span class="p">(</span><span class="n">u</span><span class="p">)</span> <span class="p">{}</span>
+
+    <span class="kt">void</span> <span class="n">on_container_start</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">container</span> <span class="o">&amp;</span><span class="n">c</span><span class="p">)</span> <span class="n">OVERRIDE</span> <span class="p">{</span>
+        <span class="n">proton</span><span class="o">::</span><span class="n">connection</span> <span class="n">conn</span> <span class="o">=</span> <span class="n">c</span><span class="p">.</span><span class="n">connect</span><span class="p">(</span><span class="n">url</span><span class="p">);</span>
+        <span class="n">source_options</span> <span class="n">browsing</span> <span class="o">=</span> <span class="n">source_options</span><span class="p">().</span><span class="n">distribution_mode</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">source</span><span class="o">::</span><span class="n">COPY</span><span class="p">);</span>
+        <span class="n">conn</span><span class="p">.</span><span class="n">open_receiver</span><span class="p">(</span><span class="n">url</span><span class="p">.</span><span class="n">path</span><span class="p">(),</span> <span class="n">proton</span><span class="o">::</span><span class="n">receiver_options</span><span class="p">().</span><span class="n">source</span><span class="p">(</span><span class="n">browsing</span><span class="p">));</span>
+    <span class="p">}</span>
+
+    <span class="kt">void</span> <span class="n">on_message</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">delivery</span> <span class="o">&amp;</span><span class="p">,</span> <span class="n">proton</span><span class="o">::</span><span class="n">message</span> <span class="o">&amp;</span><span class="n">m</span><span class="p">)</span> <span class="n">OVERRIDE</span> <span class="p">{</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="n">m</span><span class="p">.</span><span class="n">body</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+    <span class="p">}</span>
+<span class="p">};</span>
+
+<span class="kt">int</span> <span class="nf">main</span><span class="p">(</span><span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">**</span><span class="n">argv</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">try</span> <span class="p">{</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">url</span> <span class="o">=</span> <span class="n">argc</span> <span class="o">&gt;</span> <span class="mi">1</span> <span class="o">?</span> <span class="n">argv</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">:</span> <span class="s">&quot;127.0.0.1:5672/examples&quot;</span><span class="p">;</span>
+
+        <span class="n">browser</span> <span class="n">b</span><span class="p">(</span><span class="n">url</span><span class="p">);</span>
+        <span class="n">proton</span><span class="o">::</span><span class="n">default_container</span><span class="p">(</span><span class="n">b</span><span class="p">).</span><span class="n">run</span><span class="p">();</span>
+
+        <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">catch</span> <span class="p">(</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">exception</span><span class="o">&amp;</span> <span class="n">e</span><span class="p">)</span> <span class="p">{</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">cerr</span> <span class="o">&lt;&lt;</span> <span class="n">e</span><span class="p">.</span><span class="n">what</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+    <span class="p">}</span>
+
+    <span class="k">return</span> <span class="mi">1</span><span class="p">;</span>
+<span class="p">}</span>
+</pre></div>
+
+<p><a href="queue_browser.cpp">Download this file</a></p>
+
+
+          <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/75ca8b14/content/releases/qpid-proton-0.13.0/proton/cpp/examples/selected_recv.cpp
----------------------------------------------------------------------
diff --git a/content/releases/qpid-proton-0.13.0/proton/cpp/examples/selected_recv.cpp b/content/releases/qpid-proton-0.13.0/proton/cpp/examples/selected_recv.cpp
new file mode 100755
index 0000000..c7a63d9
--- /dev/null
+++ b/content/releases/qpid-proton-0.13.0/proton/cpp/examples/selected_recv.cpp
@@ -0,0 +1,88 @@
+/*
+ *
+ * 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.
+ *
+ */
+
+#include <proton/connection.hpp>
+#include <proton/default_container.hpp>
+#include <proton/messaging_handler.hpp>
+#include <proton/receiver_options.hpp>
+#include <proton/source_options.hpp>
+#include <proton/url.hpp>
+
+#include <iostream>
+
+#include "fake_cpp11.hpp"
+
+namespace {
+
+    // Example custom function to configure an AMQP filter,
+    // specifically an APACHE.ORG:SELECTOR
+    // (http://www.amqp.org/specification/1.0/filters)
+
+    void set_filter(proton::source_options &opts, const std::string& selector_str) {
+        proton::source::filter_map map;
+        proton::symbol filter_key("selector");
+        proton::value filter_value;
+        // The value is a specific AMQP "described type": binary string with symbolic descriptor
+        proton::codec::encoder enc(filter_value);
+        enc << proton::codec::start::described()
+            << proton::symbol("apache.org:selector-filter:string")
+            << proton::binary(selector_str)
+            << proton::codec::finish();
+        // In our case, the map has this one element
+        map[filter_key] = filter_value;
+        opts.filters(map);
+    }
+}
+
+
+class selected_recv : public proton::messaging_handler {
+  private:
+    proton::url url;
+
+  public:
+    selected_recv(const std::string& u) : url(u) {}
+
+    void on_container_start(proton::container &c) OVERRIDE {
+        proton::source_options opts;
+        set_filter(opts, "colour = 'green'");
+        proton::connection conn = c.connect(url);
+        conn.open_receiver(url.path(), proton::receiver_options().source(opts));
+    }
+
+    void on_message(proton::delivery &, proton::message &m) OVERRIDE {
+        std::cout << m.body() << std::endl;
+    }
+};
+
+int main(int argc, char **argv) {
+    try {
+        std::string url = argc > 1 ? argv[1] : "127.0.0.1:5672/examples";
+
+        selected_recv recv(url);
+        proton::default_container(recv).run();
+
+        return 0;
+    } catch (const std::exception& e) {
+        std::cerr << e.what() << std::endl;
+    }
+
+    return 1;
+}

http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/content/releases/qpid-proton-0.13.0/proton/cpp/examples/selected_recv.cpp.html
----------------------------------------------------------------------
diff --git a/content/releases/qpid-proton-0.13.0/proton/cpp/examples/selected_recv.cpp.html b/content/releases/qpid-proton-0.13.0/proton/cpp/examples/selected_recv.cpp.html
new file mode 100644
index 0000000..7d1b711
--- /dev/null
+++ b/content/releases/qpid-proton-0.13.0/proton/cpp/examples/selected_recv.cpp.html
@@ -0,0 +1,216 @@
+<!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>selected_recv.cpp - 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/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;">
+        <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-proton-0.13.0/index.html">Qpid Proton 0.13.0</a></li><li><a href="/releases/qpid-proton-0.13.0/proton/cpp/examples/index.html">Proton C++ Examples</a></li><li>selected_recv.cpp</li></ul>
+
+        <div id="-middle-content">
+          
+<h1>selected_recv.cpp</h1>
+<div class="highlight"><pre><span></span><span class="cp">#include</span> <span class="cpf">&lt;proton/connection.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/default_container.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/messaging_handler.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/receiver_options.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/source_options.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/url.hpp&gt;</span><span class="cp"></span>
+
+<span class="cp">#include</span> <span class="cpf">&lt;iostream&gt;</span><span class="cp"></span>
+
+<span class="cp">#include</span> <span class="cpf">&quot;fake_cpp11.hpp&quot;</span><span class="cp"></span>
+
+<span class="k">namespace</span> <span class="p">{</span>
+
+    <span class="c1">// Example custom function to configure an AMQP filter,</span>
+    <span class="c1">// specifically an APACHE.ORG:SELECTOR</span>
+    <span class="c1">// (http://www.amqp.org/specification/1.0/filters)</span>
+
+    <span class="kt">void</span> <span class="n">set_filter</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">source_options</span> <span class="o">&amp;</span><span class="n">opts</span><span class="p">,</span> <span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="o">&amp;</span> <span class="n">selector_str</span><span class="p">)</span> <span class="p">{</span>
+        <span class="n">proton</span><span class="o">::</span><span class="n">source</span><span class="o">::</span><span class="n">filter_map</span> <span class="n">map</span><span class="p">;</span>
+        <span class="n">proton</span><span class="o">::</span><span class="n">symbol</span> <span class="n">filter_key</span><span class="p">(</span><span class="s">&quot;selector&quot;</span><span class="p">);</span>
+        <span class="n">proton</span><span class="o">::</span><span class="n">value</span> <span class="n">filter_value</span><span class="p">;</span>
+        <span class="c1">// The value is a specific AMQP &quot;described type&quot;: binary string with symbolic descriptor</span>
+        <span class="n">proton</span><span class="o">::</span><span class="n">codec</span><span class="o">::</span><span class="n">encoder</span> <span class="n">enc</span><span class="p">(</span><span class="n">filter_value</span><span class="p">);</span>
+        <span class="n">enc</span> <span class="o">&lt;&lt;</span> <span class="n">proton</span><span class="o">::</span><span class="n">codec</span><span class="o">::</span><span class="n">start</span><span class="o">::</span><span class="n">described</span><span class="p">()</span>
+            <span class="o">&lt;&lt;</span> <span class="n">proton</span><span class="o">::</span><span class="n">symbol</span><span class="p">(</span><span class="s">&quot;apache.org:selector-filter:string&quot;</span><span class="p">)</span>
+            <span class="o">&lt;&lt;</span> <span class="n">proton</span><span class="o">::</span><span class="n">binary</span><span class="p">(</span><span class="n">selector_str</span><span class="p">)</span>
+            <span class="o">&lt;&lt;</span> <span class="n">proton</span><span class="o">::</span><span class="n">codec</span><span class="o">::</span><span class="n">finish</span><span class="p">();</span>
+        <span class="c1">// In our case, the map has this one element</span>
+        <span class="n">map</span><span class="p">[</span><span class="n">filter_key</span><span class="p">]</span> <span class="o">=</span> <span class="n">filter_value</span><span class="p">;</span>
+        <span class="n">opts</span><span class="p">.</span><span class="n">filters</span><span class="p">(</span><span class="n">map</span><span class="p">);</span>
+    <span class="p">}</span>
+<span class="p">}</span>
+
+
+<span class="k">class</span> <span class="nc">selected_recv</span> <span class="o">:</span> <span class="k">public</span> <span class="n">proton</span><span class="o">::</span><span class="n">messaging_handler</span> <span class="p">{</span>
+  <span class="k">private</span><span class="o">:</span>
+    <span class="n">proton</span><span class="o">::</span><span class="n">url</span> <span class="n">url</span><span class="p">;</span>
+
+  <span class="k">public</span><span class="o">:</span>
+    <span class="n">selected_recv</span><span class="p">(</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="o">&amp;</span> <span class="n">u</span><span class="p">)</span> <span class="o">:</span> <span class="n">url</span><span class="p">(</span><span class="n">u</span><span class="p">)</span> <span class="p">{}</span>
+
+    <span class="kt">void</span> <span class="n">on_container_start</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">container</span> <span class="o">&amp;</span><span class="n">c</span><span class="p">)</span> <span class="n">OVERRIDE</span> <span class="p">{</span>
+        <span class="n">proton</span><span class="o">::</span><span class="n">source_options</span> <span class="n">opts</span><span class="p">;</span>
+        <span class="n">set_filter</span><span class="p">(</span><span class="n">opts</span><span class="p">,</span> <span class="s">&quot;colour = &#39;green&#39;&quot;</span><span class="p">);</span>
+        <span class="n">proton</span><span class="o">::</span><span class="n">connection</span> <span class="n">conn</span> <span class="o">=</span> <span class="n">c</span><span class="p">.</span><span class="n">connect</span><span class="p">(</span><span class="n">url</span><span class="p">);</span>
+        <span class="n">conn</span><span class="p">.</span><span class="n">open_receiver</span><span class="p">(</span><span class="n">url</span><span class="p">.</span><span class="n">path</span><span class="p">(),</span> <span class="n">proton</span><span class="o">::</span><span class="n">receiver_options</span><span class="p">().</span><span class="n">source</span><span class="p">(</span><span class="n">opts</span><span class="p">));</span>
+    <span class="p">}</span>
+
+    <span class="kt">void</span> <span class="n">on_message</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">delivery</span> <span class="o">&amp;</span><span class="p">,</span> <span class="n">proton</span><span class="o">::</span><span class="n">message</span> <span class="o">&amp;</span><span class="n">m</span><span class="p">)</span> <span class="n">OVERRIDE</span> <span class="p">{</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="n">m</span><span class="p">.</span><span class="n">body</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+    <span class="p">}</span>
+<span class="p">};</span>
+
+<span class="kt">int</span> <span class="nf">main</span><span class="p">(</span><span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">**</span><span class="n">argv</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">try</span> <span class="p">{</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">url</span> <span class="o">=</span> <span class="n">argc</span> <span class="o">&gt;</span> <span class="mi">1</span> <span class="o">?</span> <span class="n">argv</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">:</span> <span class="s">&quot;127.0.0.1:5672/examples&quot;</span><span class="p">;</span>
+
+        <span class="n">selected_recv</span> <span class="n">recv</span><span class="p">(</span><span class="n">url</span><span class="p">);</span>
+        <span class="n">proton</span><span class="o">::</span><span class="n">default_container</span><span class="p">(</span><span class="n">recv</span><span class="p">).</span><span class="n">run</span><span class="p">();</span>
+
+        <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">catch</span> <span class="p">(</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">exception</span><span class="o">&amp;</span> <span class="n">e</span><span class="p">)</span> <span class="p">{</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">cerr</span> <span class="o">&lt;&lt;</span> <span class="n">e</span><span class="p">.</span><span class="n">what</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+    <span class="p">}</span>
+
+    <span class="k">return</span> <span class="mi">1</span><span class="p">;</span>
+<span class="p">}</span>
+</pre></div>
+
+<p><a href="selected_recv.cpp">Download this file</a></p>
+
+
+          <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/75ca8b14/content/releases/qpid-proton-0.13.0/proton/cpp/examples/server.cpp
----------------------------------------------------------------------
diff --git a/content/releases/qpid-proton-0.13.0/proton/cpp/examples/server.cpp b/content/releases/qpid-proton-0.13.0/proton/cpp/examples/server.cpp
new file mode 100755
index 0000000..ec24f9f
--- /dev/null
+++ b/content/releases/qpid-proton-0.13.0/proton/cpp/examples/server.cpp
@@ -0,0 +1,100 @@
+/*
+ *
+ * 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.
+ *
+ */
+
+#include "options.hpp"
+
+#include <proton/connection.hpp>
+#include <proton/default_container.hpp>
+#include <proton/messaging_handler.hpp>
+#include <proton/tracker.hpp>
+#include <proton/url.hpp>
+
+#include <iostream>
+#include <map>
+#include <string>
+#include <cctype>
+
+#include "fake_cpp11.hpp"
+
+class server : public proton::messaging_handler {
+  private:
+    typedef std::map<std::string, proton::sender> sender_map;
+    proton::url url;
+    proton::connection connection;
+    sender_map senders;
+
+  public:
+    server(const std::string &u) : url(u) {}
+
+    void on_container_start(proton::container &c) OVERRIDE {
+        connection = c.connect(url);
+        connection.open_receiver(url.path());
+
+        std::cout << "server connected to " << url << std::endl;
+    }
+
+    std::string to_upper(const std::string &s) {
+        std::string uc(s);
+        size_t l = uc.size();
+        for (size_t i=0; i<l; i++)
+            uc[i] = static_cast<char>(std::toupper(uc[i]));
+        return uc;
+    }
+
+    void on_message(proton::delivery &, proton::message &m) OVERRIDE {
+        std::cout << "Received " << m.body() << std::endl;
+
+        std::string reply_to = m.reply_to();
+        proton::message reply;
+
+        reply.to(reply_to);
+        reply.body(to_upper(proton::get<std::string>(m.body())));
+        reply.correlation_id(m.correlation_id());
+
+        if (!senders[reply_to]) {
+            senders[reply_to] = connection.open_sender(reply_to);
+        }
+
+        senders[reply_to].send(reply);
+    }
+};
+
+int main(int argc, char **argv) {
+    std::string address("amqp://0.0.0.0:5672/examples");
+    example::options opts(argc, argv);
+
+    opts.add_value(address, 'a', "address", "listen on URL", "URL");
+
+    try {
+        opts.parse();
+
+        server srv(address);
+        proton::default_container(srv).run();
+
+        return 0;
+    } catch (const example::bad_option& e) {
+        std::cout << opts << std::endl << e.what() << std::endl;
+    } catch (const std::exception& e) {
+        std::cerr << e.what() << std::endl;
+    }
+
+    return 1;
+}


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


[10/26] qpid-site git commit: QPID-7350: Examples that should have gone with the previous commit

Posted by jr...@apache.org.
http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/input/releases/qpid-proton-0.13.0/proton/cpp/examples/broker.hpp.html.in
----------------------------------------------------------------------
diff --git a/input/releases/qpid-proton-0.13.0/proton/cpp/examples/broker.hpp.html.in b/input/releases/qpid-proton-0.13.0/proton/cpp/examples/broker.hpp.html.in
new file mode 100644
index 0000000..e540fa8
--- /dev/null
+++ b/input/releases/qpid-proton-0.13.0/proton/cpp/examples/broker.hpp.html.in
@@ -0,0 +1,224 @@
+
+<h1>broker.hpp</h1>
+<div class="highlight"><pre><span></span><span class="cp">#ifndef BROKER_HPP</span>
+<span class="cp">#define BROKER_HPP</span>
+
+
+
+<span class="c1">/// @file</span>
+<span class="c1">///</span>
+<span class="c1">/// Common code used by different broker examples.</span>
+<span class="c1">///</span>
+<span class="c1">/// The examples add functionality as needed, this helps to make it</span>
+<span class="c1">/// easier to see the important differences between the examples.</span>
+
+<span class="cp">#include</span> <span class="cpf">&lt;proton/connection.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/delivery.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/messaging_handler.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/message.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/sasl.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/sender.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/tracker.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/transport.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/sender_options.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/receiver_options.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/source_options.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/target_options.hpp&gt;</span><span class="cp"></span>
+
+<span class="cp">#include</span> <span class="cpf">&lt;iostream&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;deque&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;map&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;list&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;sstream&gt;</span><span class="cp"></span>
+
+<span class="c1">/// A simple implementation of a queue.</span>
+<span class="k">class</span> <span class="nc">queue</span> <span class="p">{</span>
+  <span class="k">public</span><span class="o">:</span>
+    <span class="n">queue</span><span class="p">(</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="o">&amp;</span><span class="n">name</span><span class="p">,</span> <span class="kt">bool</span> <span class="n">dynamic</span> <span class="o">=</span> <span class="nb">false</span><span class="p">)</span> <span class="o">:</span> <span class="n">name_</span><span class="p">(</span><span class="n">name</span><span class="p">),</span> <span class="n">dynamic_</span><span class="p">(</span><span class="n">dynamic</span><span class="p">)</span> <span class="p">{}</span>
+
+    <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">name</span><span class="p">()</span> <span class="k">const</span> <span class="p">{</span> <span class="k">return</span> <span class="n">name_</span><span class="p">;</span> <span class="p">}</span>
+
+    <span class="kt">void</span> <span class="n">subscribe</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">sender</span> <span class="n">s</span><span class="p">)</span> <span class="p">{</span>
+        <span class="n">consumers_</span><span class="p">.</span><span class="n">push_back</span><span class="p">(</span><span class="n">s</span><span class="p">);</span>
+    <span class="p">}</span>
+
+    <span class="c1">// Return true if queue can be deleted.</span>
+    <span class="kt">bool</span> <span class="n">unsubscribe</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">sender</span> <span class="n">s</span><span class="p">)</span> <span class="p">{</span>
+        <span class="n">consumers_</span><span class="p">.</span><span class="n">remove</span><span class="p">(</span><span class="n">s</span><span class="p">);</span>
+        <span class="k">return</span> <span class="p">(</span><span class="n">consumers_</span><span class="p">.</span><span class="n">size</span><span class="p">()</span> <span class="o">==</span> <span class="mi">0</span> <span class="o">&amp;&amp;</span> <span class="p">(</span><span class="n">dynamic_</span> <span class="o">||</span> <span class="n">messages_</span><span class="p">.</span><span class="n">size</span><span class="p">()</span> <span class="o">==</span> <span class="mi">0</span><span class="p">));</span>
+    <span class="p">}</span>
+
+    <span class="kt">void</span> <span class="n">publish</span><span class="p">(</span><span class="k">const</span> <span class="n">proton</span><span class="o">::</span><span class="n">message</span> <span class="o">&amp;</span><span class="n">m</span><span class="p">)</span> <span class="p">{</span>
+        <span class="n">messages_</span><span class="p">.</span><span class="n">push_back</span><span class="p">(</span><span class="n">m</span><span class="p">);</span>
+        <span class="n">dispatch</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
+    <span class="p">}</span>
+
+    <span class="kt">void</span> <span class="n">dispatch</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">sender</span> <span class="o">*</span><span class="n">s</span><span class="p">)</span> <span class="p">{</span>
+        <span class="k">while</span> <span class="p">(</span><span class="n">deliver_to</span><span class="p">(</span><span class="n">s</span><span class="p">))</span> <span class="p">{}</span>
+    <span class="p">}</span>
+
+    <span class="kt">bool</span> <span class="n">deliver_to</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">sender</span> <span class="o">*</span><span class="n">s</span><span class="p">)</span> <span class="p">{</span>
+        <span class="c1">// Deliver to single sender if supplied, else all consumers</span>
+        <span class="kt">int</span> <span class="n">count</span> <span class="o">=</span> <span class="n">s</span> <span class="o">?</span> <span class="mi">1</span> <span class="o">:</span> <span class="n">consumers_</span><span class="p">.</span><span class="n">size</span><span class="p">();</span>
+
+        <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">count</span><span class="p">)</span> <span class="k">return</span> <span class="nb">false</span><span class="p">;</span>
+
+        <span class="kt">bool</span> <span class="n">result</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
+        <span class="n">sender_list</span><span class="o">::</span><span class="n">iterator</span> <span class="n">it</span> <span class="o">=</span> <span class="n">consumers_</span><span class="p">.</span><span class="n">begin</span><span class="p">();</span>
+
+        <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">s</span> <span class="o">&amp;&amp;</span> <span class="n">count</span><span class="p">)</span> <span class="p">{</span>
+            <span class="n">s</span> <span class="o">=</span> <span class="o">&amp;*</span><span class="n">it</span><span class="p">;</span>
+        <span class="p">}</span>
+
+        <span class="k">while</span> <span class="p">(</span><span class="n">messages_</span><span class="p">.</span><span class="n">size</span><span class="p">())</span> <span class="p">{</span>
+            <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">credit</span><span class="p">())</span> <span class="p">{</span>
+                <span class="k">const</span> <span class="n">proton</span><span class="o">::</span><span class="n">message</span><span class="o">&amp;</span> <span class="n">m</span> <span class="o">=</span> <span class="n">messages_</span><span class="p">.</span><span class="n">front</span><span class="p">();</span>
+
+                <span class="n">s</span><span class="o">-&gt;</span><span class="n">send</span><span class="p">(</span><span class="n">m</span><span class="p">);</span>
+                <span class="n">messages_</span><span class="p">.</span><span class="n">pop_front</span><span class="p">();</span>
+                <span class="n">result</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
+            <span class="p">}</span>
+
+            <span class="k">if</span> <span class="p">(</span><span class="o">--</span><span class="n">count</span><span class="p">)</span> <span class="p">{</span>
+                <span class="n">it</span><span class="o">++</span><span class="p">;</span>
+            <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
+                <span class="k">return</span> <span class="n">result</span><span class="p">;</span>
+            <span class="p">}</span>
+        <span class="p">}</span>
+
+        <span class="k">return</span> <span class="nb">false</span><span class="p">;</span>
+    <span class="p">}</span>
+
+  <span class="k">private</span><span class="o">:</span>
+    <span class="k">typedef</span> <span class="n">std</span><span class="o">::</span><span class="n">deque</span><span class="o">&lt;</span><span class="n">proton</span><span class="o">::</span><span class="n">message</span><span class="o">&gt;</span> <span class="n">message_queue</span><span class="p">;</span>
+    <span class="k">typedef</span> <span class="n">std</span><span class="o">::</span><span class="n">list</span><span class="o">&lt;</span><span class="n">proton</span><span class="o">::</span><span class="n">sender</span><span class="o">&gt;</span> <span class="n">sender_list</span><span class="p">;</span>
+
+    <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">name_</span><span class="p">;</span>
+    <span class="kt">bool</span> <span class="n">dynamic_</span><span class="p">;</span>
+    <span class="n">message_queue</span> <span class="n">messages_</span><span class="p">;</span>
+    <span class="n">sender_list</span> <span class="n">consumers_</span><span class="p">;</span>
+<span class="p">};</span>
+
+<span class="c1">/// A collection of queues and queue factory, used by a broker.</span>
+<span class="k">class</span> <span class="nc">queues</span> <span class="p">{</span>
+  <span class="k">public</span><span class="o">:</span>
+    <span class="n">queues</span><span class="p">()</span> <span class="o">:</span> <span class="n">next_id_</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span> <span class="p">{}</span>
+    <span class="k">virtual</span> <span class="o">~</span><span class="n">queues</span><span class="p">()</span> <span class="p">{}</span>
+
+    <span class="c1">// Get or create a queue.</span>
+    <span class="k">virtual</span> <span class="n">queue</span> <span class="o">&amp;</span><span class="n">get</span><span class="p">(</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="o">&amp;</span><span class="n">address</span> <span class="o">=</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="p">())</span> <span class="p">{</span>
+        <span class="k">if</span> <span class="p">(</span><span class="n">address</span><span class="p">.</span><span class="n">empty</span><span class="p">())</span> <span class="p">{</span>
+            <span class="k">throw</span> <span class="n">std</span><span class="o">::</span><span class="n">runtime_error</span><span class="p">(</span><span class="s">&quot;empty queue name&quot;</span><span class="p">);</span>
+        <span class="p">}</span>
+
+        <span class="n">queue</span><span class="o">*&amp;</span> <span class="n">q</span> <span class="o">=</span> <span class="n">queues_</span><span class="p">[</span><span class="n">address</span><span class="p">];</span>
+
+        <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">q</span><span class="p">)</span> <span class="n">q</span> <span class="o">=</span> <span class="k">new</span> <span class="n">queue</span><span class="p">(</span><span class="n">address</span><span class="p">);</span>
+
+        <span class="k">return</span> <span class="o">*</span><span class="n">q</span><span class="p">;</span>
+    <span class="p">}</span>
+
+    <span class="c1">// Create a dynamic queue with a unique name.</span>
+    <span class="k">virtual</span> <span class="n">queue</span> <span class="o">&amp;</span><span class="n">dynamic</span><span class="p">()</span> <span class="p">{</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">ostringstream</span> <span class="n">os</span><span class="p">;</span>
+        <span class="n">os</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;q&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">next_id_</span><span class="o">++</span><span class="p">;</span>
+        <span class="n">queue</span> <span class="o">*</span><span class="n">q</span> <span class="o">=</span> <span class="n">queues_</span><span class="p">[</span><span class="n">os</span><span class="p">.</span><span class="n">str</span><span class="p">()]</span> <span class="o">=</span> <span class="k">new</span> <span class="n">queue</span><span class="p">(</span><span class="n">os</span><span class="p">.</span><span class="n">str</span><span class="p">(),</span> <span class="nb">true</span><span class="p">);</span>
+
+        <span class="k">return</span> <span class="o">*</span><span class="n">q</span><span class="p">;</span>
+    <span class="p">}</span>
+
+    <span class="c1">// Delete the named queue</span>
+    <span class="k">virtual</span> <span class="kt">void</span> <span class="n">erase</span><span class="p">(</span><span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="o">&amp;</span><span class="n">name</span><span class="p">)</span> <span class="p">{</span>
+        <span class="k">delete</span> <span class="n">queues_</span><span class="p">[</span><span class="n">name</span><span class="p">];</span>
+        <span class="n">queues_</span><span class="p">.</span><span class="n">erase</span><span class="p">(</span><span class="n">name</span><span class="p">);</span>
+    <span class="p">}</span>
+
+  <span class="k">protected</span><span class="o">:</span>
+    <span class="k">typedef</span> <span class="n">std</span><span class="o">::</span><span class="n">map</span><span class="o">&lt;</span><span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="p">,</span> <span class="n">queue</span> <span class="o">*&gt;</span> <span class="n">queue_map</span><span class="p">;</span>
+    <span class="n">queue_map</span> <span class="n">queues_</span><span class="p">;</span>
+    <span class="kt">uint64_t</span> <span class="n">next_id_</span><span class="p">;</span> <span class="c1">// Use to generate unique queue IDs.</span>
+<span class="p">};</span>
+
+<span class="cp">#include</span> <span class="cpf">&lt;proton/config.hpp&gt;</span><span class="cp"></span>
+
+
+<span class="k">class</span> <span class="nc">broker_handler</span> <span class="o">:</span> <span class="k">public</span> <span class="n">proton</span><span class="o">::</span><span class="n">messaging_handler</span> <span class="p">{</span>
+  <span class="k">public</span><span class="o">:</span>
+    <span class="n">broker_handler</span><span class="p">(</span><span class="n">queues</span><span class="o">&amp;</span> <span class="n">qs</span><span class="p">)</span> <span class="o">:</span> <span class="n">queues_</span><span class="p">(</span><span class="n">qs</span><span class="p">)</span> <span class="p">{}</span>
+
+    <span class="kt">void</span> <span class="n">on_transport_open</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">transport</span> <span class="o">&amp;</span><span class="n">t</span><span class="p">)</span> <span class="n">OVERRIDE</span> <span class="p">{</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Connection from user: &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">t</span><span class="p">.</span><span class="n">sasl</span><span class="p">().</span><span class="n">user</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="s">&quot; (mechanism: &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">t</span><span class="p">.</span><span class="n">sasl</span><span class="p">().</span><span class="n">mech</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;)&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+    <span class="p">}</span>
+
+    <span class="kt">void</span> <span class="n">on_sender_open</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">sender</span> <span class="o">&amp;</span><span class="n">sender</span><span class="p">)</span> <span class="n">OVERRIDE</span> <span class="p">{</span>
+        <span class="n">proton</span><span class="o">::</span><span class="n">source</span> <span class="n">src</span><span class="p">(</span><span class="n">sender</span><span class="p">.</span><span class="n">source</span><span class="p">());</span>
+        <span class="n">queue</span> <span class="o">&amp;</span><span class="n">q</span> <span class="o">=</span> <span class="n">src</span><span class="p">.</span><span class="n">dynamic</span><span class="p">()</span> <span class="o">?</span>
+            <span class="n">queues_</span><span class="p">.</span><span class="n">dynamic</span><span class="p">()</span> <span class="o">:</span> <span class="n">queues_</span><span class="p">.</span><span class="n">get</span><span class="p">(</span><span class="n">src</span><span class="p">.</span><span class="n">address</span><span class="p">());</span>
+        <span class="n">sender</span><span class="p">.</span><span class="n">open</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">sender_options</span><span class="p">().</span><span class="n">source</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">source_options</span><span class="p">().</span><span class="n">address</span><span class="p">(</span><span class="n">q</span><span class="p">.</span><span class="n">name</span><span class="p">())));</span>
+        <span class="n">q</span><span class="p">.</span><span class="n">subscribe</span><span class="p">(</span><span class="n">sender</span><span class="p">);</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;broker outgoing link from &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">q</span><span class="p">.</span><span class="n">name</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+    <span class="p">}</span>
+
+    <span class="kt">void</span> <span class="n">on_receiver_open</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">receiver</span> <span class="o">&amp;</span><span class="n">receiver</span><span class="p">)</span> <span class="n">OVERRIDE</span> <span class="p">{</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">address</span> <span class="o">=</span> <span class="n">receiver</span><span class="p">.</span><span class="n">target</span><span class="p">().</span><span class="n">address</span><span class="p">();</span>
+        <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">address</span><span class="p">.</span><span class="n">empty</span><span class="p">())</span> <span class="p">{</span>
+            <span class="n">receiver</span><span class="p">.</span><span class="n">open</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">receiver_options</span><span class="p">().</span><span class="n">target</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">target_options</span><span class="p">().</span><span class="n">address</span><span class="p">(</span><span class="n">address</span><span class="p">)));</span>
+            <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;broker incoming link to &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">address</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+        <span class="p">}</span>
+    <span class="p">}</span>
+
+    <span class="kt">void</span> <span class="n">unsubscribe</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">sender</span> <span class="n">lnk</span><span class="p">)</span> <span class="p">{</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">address</span> <span class="o">=</span> <span class="n">lnk</span><span class="p">.</span><span class="n">source</span><span class="p">().</span><span class="n">address</span><span class="p">();</span>
+
+        <span class="k">if</span> <span class="p">(</span><span class="n">queues_</span><span class="p">.</span><span class="n">get</span><span class="p">(</span><span class="n">address</span><span class="p">).</span><span class="n">unsubscribe</span><span class="p">(</span><span class="n">lnk</span><span class="p">))</span> <span class="p">{</span>
+            <span class="n">queues_</span><span class="p">.</span><span class="n">erase</span><span class="p">(</span><span class="n">address</span><span class="p">);</span>
+        <span class="p">}</span>
+    <span class="p">}</span>
+
+    <span class="kt">void</span> <span class="n">on_sender_close</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">sender</span> <span class="o">&amp;</span><span class="n">sender</span><span class="p">)</span> <span class="n">OVERRIDE</span> <span class="p">{</span>
+        <span class="n">unsubscribe</span><span class="p">(</span><span class="n">sender</span><span class="p">);</span>
+    <span class="p">}</span>
+
+    <span class="kt">void</span> <span class="n">on_connection_close</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">connection</span> <span class="o">&amp;</span><span class="n">c</span><span class="p">)</span> <span class="n">OVERRIDE</span> <span class="p">{</span>
+        <span class="n">remove_stale_consumers</span><span class="p">(</span><span class="n">c</span><span class="p">);</span>
+    <span class="p">}</span>
+
+    <span class="kt">void</span> <span class="n">on_transport_close</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">transport</span> <span class="o">&amp;</span><span class="n">t</span><span class="p">)</span> <span class="n">OVERRIDE</span> <span class="p">{</span>
+        <span class="n">remove_stale_consumers</span><span class="p">(</span><span class="n">t</span><span class="p">.</span><span class="n">connection</span><span class="p">());</span>
+    <span class="p">}</span>
+
+    <span class="kt">void</span> <span class="n">on_transport_error</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">transport</span> <span class="o">&amp;</span><span class="n">t</span><span class="p">)</span> <span class="n">OVERRIDE</span> <span class="p">{</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;broker client disconnect: &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">t</span><span class="p">.</span><span class="n">error</span><span class="p">().</span><span class="n">what</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+    <span class="p">}</span>
+
+    <span class="kt">void</span> <span class="n">on_error</span><span class="p">(</span><span class="k">const</span> <span class="n">proton</span><span class="o">::</span><span class="n">error_condition</span> <span class="o">&amp;</span><span class="n">c</span><span class="p">)</span> <span class="n">OVERRIDE</span> <span class="p">{</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">cerr</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;broker error: &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">c</span><span class="p">.</span><span class="n">what</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+    <span class="p">}</span>
+
+    <span class="kt">void</span> <span class="n">remove_stale_consumers</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">connection</span> <span class="n">connection</span><span class="p">)</span> <span class="p">{</span>
+        <span class="n">proton</span><span class="o">::</span><span class="n">sender_range</span> <span class="n">sr</span> <span class="o">=</span> <span class="n">connection</span><span class="p">.</span><span class="n">senders</span><span class="p">();</span>
+        <span class="k">for</span> <span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">sender_iterator</span> <span class="n">i</span> <span class="o">=</span> <span class="n">sr</span><span class="p">.</span><span class="n">begin</span><span class="p">();</span> <span class="n">i</span> <span class="o">!=</span> <span class="n">sr</span><span class="p">.</span><span class="n">end</span><span class="p">();</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span> <span class="p">{</span>
+            <span class="k">if</span> <span class="p">(</span><span class="n">i</span><span class="o">-&gt;</span><span class="n">active</span><span class="p">())</span>
+                <span class="n">unsubscribe</span><span class="p">(</span><span class="o">*</span><span class="n">i</span><span class="p">);</span>
+        <span class="p">}</span>
+    <span class="p">}</span>
+
+    <span class="kt">void</span> <span class="n">on_sendable</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">sender</span> <span class="o">&amp;</span><span class="n">s</span><span class="p">)</span> <span class="n">OVERRIDE</span> <span class="p">{</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">address</span> <span class="o">=</span> <span class="n">s</span><span class="p">.</span><span class="n">source</span><span class="p">().</span><span class="n">address</span><span class="p">();</span>
+
+        <span class="n">queues_</span><span class="p">.</span><span class="n">get</span><span class="p">(</span><span class="n">address</span><span class="p">).</span><span class="n">dispatch</span><span class="p">(</span><span class="o">&amp;</span><span class="n">s</span><span class="p">);</span>
+    <span class="p">}</span>
+
+    <span class="kt">void</span> <span class="n">on_message</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">delivery</span> <span class="o">&amp;</span><span class="n">d</span><span class="p">,</span> <span class="n">proton</span><span class="o">::</span><span class="n">message</span> <span class="o">&amp;</span><span class="n">m</span><span class="p">)</span> <span class="n">OVERRIDE</span> <span class="p">{</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">address</span> <span class="o">=</span> <span class="n">d</span><span class="p">.</span><span class="n">receiver</span><span class="p">().</span><span class="n">target</span><span class="p">().</span><span class="n">address</span><span class="p">();</span>
+        <span class="n">queues_</span><span class="p">.</span><span class="n">get</span><span class="p">(</span><span class="n">address</span><span class="p">).</span><span class="n">publish</span><span class="p">(</span><span class="n">m</span><span class="p">);</span>
+    <span class="p">}</span>
+
+  <span class="k">protected</span><span class="o">:</span>
+    <span class="n">queues</span><span class="o">&amp;</span> <span class="n">queues_</span><span class="p">;</span>
+<span class="p">};</span>
+
+<span class="cp">#endif </span><span class="c1">// BROKER_HPP</span>
+</pre></div>
+
+<p><a href="broker.hpp">Download this file</a></p>

http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/input/releases/qpid-proton-0.13.0/proton/cpp/examples/client.cpp
----------------------------------------------------------------------
diff --git a/input/releases/qpid-proton-0.13.0/proton/cpp/examples/client.cpp b/input/releases/qpid-proton-0.13.0/proton/cpp/examples/client.cpp
new file mode 100644
index 0000000..dd22ccd
--- /dev/null
+++ b/input/releases/qpid-proton-0.13.0/proton/cpp/examples/client.cpp
@@ -0,0 +1,107 @@
+/*
+ *
+ * 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.
+ *
+ */
+
+#include "options.hpp"
+#include <proton/default_container.hpp>
+#include <proton/delivery.hpp>
+#include <proton/messaging_handler.hpp>
+#include <proton/connection.hpp>
+#include <proton/tracker.hpp>
+#include <proton/source_options.hpp>
+
+#include <iostream>
+#include <vector>
+
+#include "fake_cpp11.hpp"
+
+using proton::receiver_options;
+using proton::source_options;
+
+class client : public proton::messaging_handler {
+  private:
+    std::string url;
+    std::vector<std::string> requests;
+    proton::sender sender;
+    proton::receiver receiver;
+
+  public:
+    client(const std::string &u, const std::vector<std::string>& r) : url(u), requests(r) {}
+
+    void on_container_start(proton::container &c) OVERRIDE {
+        sender = c.open_sender(url);
+        // Create a receiver requesting a dynamically created queue
+        // for the message source.
+        receiver_options opts = receiver_options().source(source_options().dynamic(true));
+        receiver = sender.connection().open_receiver("", opts);
+    }
+
+    void send_request() {
+        proton::message req;
+        req.body(requests.front());
+        req.reply_to(receiver.source().address());
+        sender.send(req);
+    }
+
+    void on_receiver_open(proton::receiver &) OVERRIDE {
+        send_request();
+    }
+
+    void on_message(proton::delivery &d, proton::message &response) OVERRIDE {
+        if (requests.empty()) return; // Spurious extra message!
+
+        std::cout << requests.front() << " => " << response.body() << std::endl;
+        requests.erase(requests.begin());
+
+        if (!requests.empty()) {
+            send_request();
+        } else {
+            d.connection().close();
+        }
+    }
+};
+
+int main(int argc, char **argv) {
+    std::string url("127.0.0.1:5672/examples");
+    example::options opts(argc, argv);
+
+    opts.add_value(url, 'a', "address", "connect and send to URL", "URL");
+
+    try {
+        opts.parse();
+
+        std::vector<std::string> requests;
+        requests.push_back("Twas brillig, and the slithy toves");
+        requests.push_back("Did gire and gymble in the wabe.");
+        requests.push_back("All mimsy were the borogroves,");
+        requests.push_back("And the mome raths outgrabe.");
+
+        client c(url, requests);
+        proton::default_container(c).run();
+
+        return 0;
+    } catch (const example::bad_option& e) {
+        std::cout << opts << std::endl << e.what() << std::endl;
+    } catch (const std::exception& e) {
+        std::cerr << e.what() << std::endl;
+    }
+
+    return 1;
+}

http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/input/releases/qpid-proton-0.13.0/proton/cpp/examples/client.cpp.html.in
----------------------------------------------------------------------
diff --git a/input/releases/qpid-proton-0.13.0/proton/cpp/examples/client.cpp.html.in b/input/releases/qpid-proton-0.13.0/proton/cpp/examples/client.cpp.html.in
new file mode 100644
index 0000000..eb97389
--- /dev/null
+++ b/input/releases/qpid-proton-0.13.0/proton/cpp/examples/client.cpp.html.in
@@ -0,0 +1,91 @@
+
+<h1>client.cpp</h1>
+<div class="highlight"><pre><span></span><span class="cp">#include</span> <span class="cpf">&quot;options.hpp&quot;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/default_container.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/delivery.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/messaging_handler.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/connection.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/tracker.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/source_options.hpp&gt;</span><span class="cp"></span>
+
+<span class="cp">#include</span> <span class="cpf">&lt;iostream&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;vector&gt;</span><span class="cp"></span>
+
+<span class="cp">#include</span> <span class="cpf">&quot;fake_cpp11.hpp&quot;</span><span class="cp"></span>
+
+<span class="k">using</span> <span class="n">proton</span><span class="o">::</span><span class="n">receiver_options</span><span class="p">;</span>
+<span class="k">using</span> <span class="n">proton</span><span class="o">::</span><span class="n">source_options</span><span class="p">;</span>
+
+<span class="k">class</span> <span class="nc">client</span> <span class="o">:</span> <span class="k">public</span> <span class="n">proton</span><span class="o">::</span><span class="n">messaging_handler</span> <span class="p">{</span>
+  <span class="k">private</span><span class="o">:</span>
+    <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">url</span><span class="p">;</span>
+    <span class="n">std</span><span class="o">::</span><span class="n">vector</span><span class="o">&lt;</span><span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="o">&gt;</span> <span class="n">requests</span><span class="p">;</span>
+    <span class="n">proton</span><span class="o">::</span><span class="n">sender</span> <span class="n">sender</span><span class="p">;</span>
+    <span class="n">proton</span><span class="o">::</span><span class="n">receiver</span> <span class="n">receiver</span><span class="p">;</span>
+
+  <span class="k">public</span><span class="o">:</span>
+    <span class="n">client</span><span class="p">(</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="o">&amp;</span><span class="n">u</span><span class="p">,</span> <span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">vector</span><span class="o">&lt;</span><span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="o">&gt;&amp;</span> <span class="n">r</span><span class="p">)</span> <span class="o">:</span> <span class="n">url</span><span class="p">(</span><span class="n">u</span><span class="p">),</span> <span class="n">requests</span><span class="p">(</span><span class="n">r</span><span class="p">)</span> <span class="p">{}</span>
+
+    <span class="kt">void</span> <span class="n">on_container_start</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">container</span> <span class="o">&amp;</span><span class="n">c</span><span class="p">)</span> <span class="n">OVERRIDE</span> <span class="p">{</span>
+        <span class="n">sender</span> <span class="o">=</span> <span class="n">c</span><span class="p">.</span><span class="n">open_sender</span><span class="p">(</span><span class="n">url</span><span class="p">);</span>
+        <span class="c1">// Create a receiver requesting a dynamically created queue</span>
+        <span class="c1">// for the message source.</span>
+        <span class="n">receiver_options</span> <span class="n">opts</span> <span class="o">=</span> <span class="n">receiver_options</span><span class="p">().</span><span class="n">source</span><span class="p">(</span><span class="n">source_options</span><span class="p">().</span><span class="n">dynamic</span><span class="p">(</span><span class="nb">true</span><span class="p">));</span>
+        <span class="n">receiver</span> <span class="o">=</span> <span class="n">sender</span><span class="p">.</span><span class="n">connection</span><span class="p">().</span><span class="n">open_receiver</span><span class="p">(</span><span class="s">&quot;&quot;</span><span class="p">,</span> <span class="n">opts</span><span class="p">);</span>
+    <span class="p">}</span>
+
+    <span class="kt">void</span> <span class="n">send_request</span><span class="p">()</span> <span class="p">{</span>
+        <span class="n">proton</span><span class="o">::</span><span class="n">message</span> <span class="n">req</span><span class="p">;</span>
+        <span class="n">req</span><span class="p">.</span><span class="n">body</span><span class="p">(</span><span class="n">requests</span><span class="p">.</span><span class="n">front</span><span class="p">());</span>
+        <span class="n">req</span><span class="p">.</span><span class="n">reply_to</span><span class="p">(</span><span class="n">receiver</span><span class="p">.</span><span class="n">source</span><span class="p">().</span><span class="n">address</span><span class="p">());</span>
+        <span class="n">sender</span><span class="p">.</span><span class="n">send</span><span class="p">(</span><span class="n">req</span><span class="p">);</span>
+    <span class="p">}</span>
+
+    <span class="kt">void</span> <span class="n">on_receiver_open</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">receiver</span> <span class="o">&amp;</span><span class="p">)</span> <span class="n">OVERRIDE</span> <span class="p">{</span>
+        <span class="n">send_request</span><span class="p">();</span>
+    <span class="p">}</span>
+
+    <span class="kt">void</span> <span class="n">on_message</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">delivery</span> <span class="o">&amp;</span><span class="n">d</span><span class="p">,</span> <span class="n">proton</span><span class="o">::</span><span class="n">message</span> <span class="o">&amp;</span><span class="n">response</span><span class="p">)</span> <span class="n">OVERRIDE</span> <span class="p">{</span>
+        <span class="k">if</span> <span class="p">(</span><span class="n">requests</span><span class="p">.</span><span class="n">empty</span><span class="p">())</span> <span class="k">return</span><span class="p">;</span> <span class="c1">// Spurious extra message!</span>
+
+        <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="n">requests</span><span class="p">.</span><span class="n">front</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="s">&quot; =&gt; &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">response</span><span class="p">.</span><span class="n">body</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+        <span class="n">requests</span><span class="p">.</span><span class="n">erase</span><span class="p">(</span><span class="n">requests</span><span class="p">.</span><span class="n">begin</span><span class="p">());</span>
+
+        <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">requests</span><span class="p">.</span><span class="n">empty</span><span class="p">())</span> <span class="p">{</span>
+            <span class="n">send_request</span><span class="p">();</span>
+        <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
+            <span class="n">d</span><span class="p">.</span><span class="n">connection</span><span class="p">().</span><span class="n">close</span><span class="p">();</span>
+        <span class="p">}</span>
+    <span class="p">}</span>
+<span class="p">};</span>
+
+<span class="kt">int</span> <span class="nf">main</span><span class="p">(</span><span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">**</span><span class="n">argv</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">url</span><span class="p">(</span><span class="s">&quot;127.0.0.1:5672/examples&quot;</span><span class="p">);</span>
+    <span class="n">example</span><span class="o">::</span><span class="n">options</span> <span class="n">opts</span><span class="p">(</span><span class="n">argc</span><span class="p">,</span> <span class="n">argv</span><span class="p">);</span>
+
+    <span class="n">opts</span><span class="p">.</span><span class="n">add_value</span><span class="p">(</span><span class="n">url</span><span class="p">,</span> <span class="sc">&#39;a&#39;</span><span class="p">,</span> <span class="s">&quot;address&quot;</span><span class="p">,</span> <span class="s">&quot;connect and send to URL&quot;</span><span class="p">,</span> <span class="s">&quot;URL&quot;</span><span class="p">);</span>
+
+    <span class="k">try</span> <span class="p">{</span>
+        <span class="n">opts</span><span class="p">.</span><span class="n">parse</span><span class="p">();</span>
+
+        <span class="n">std</span><span class="o">::</span><span class="n">vector</span><span class="o">&lt;</span><span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="o">&gt;</span> <span class="n">requests</span><span class="p">;</span>
+        <span class="n">requests</span><span class="p">.</span><span class="n">push_back</span><span class="p">(</span><span class="s">&quot;Twas brillig, and the slithy toves&quot;</span><span class="p">);</span>
+        <span class="n">requests</span><span class="p">.</span><span class="n">push_back</span><span class="p">(</span><span class="s">&quot;Did gire and gymble in the wabe.&quot;</span><span class="p">);</span>
+        <span class="n">requests</span><span class="p">.</span><span class="n">push_back</span><span class="p">(</span><span class="s">&quot;All mimsy were the borogroves,&quot;</span><span class="p">);</span>
+        <span class="n">requests</span><span class="p">.</span><span class="n">push_back</span><span class="p">(</span><span class="s">&quot;And the mome raths outgrabe.&quot;</span><span class="p">);</span>
+
+        <span class="n">client</span> <span class="n">c</span><span class="p">(</span><span class="n">url</span><span class="p">,</span> <span class="n">requests</span><span class="p">);</span>
+        <span class="n">proton</span><span class="o">::</span><span class="n">default_container</span><span class="p">(</span><span class="n">c</span><span class="p">).</span><span class="n">run</span><span class="p">();</span>
+
+        <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">catch</span> <span class="p">(</span><span class="k">const</span> <span class="n">example</span><span class="o">::</span><span class="n">bad_option</span><span class="o">&amp;</span> <span class="n">e</span><span class="p">)</span> <span class="p">{</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="n">opts</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span> <span class="o">&lt;&lt;</span> <span class="n">e</span><span class="p">.</span><span class="n">what</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">catch</span> <span class="p">(</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">exception</span><span class="o">&amp;</span> <span class="n">e</span><span class="p">)</span> <span class="p">{</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">cerr</span> <span class="o">&lt;&lt;</span> <span class="n">e</span><span class="p">.</span><span class="n">what</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+    <span class="p">}</span>
+
+    <span class="k">return</span> <span class="mi">1</span><span class="p">;</span>
+<span class="p">}</span>
+</pre></div>
+
+<p><a href="client.cpp">Download this file</a></p>

http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/input/releases/qpid-proton-0.13.0/proton/cpp/examples/connection_options.cpp
----------------------------------------------------------------------
diff --git a/input/releases/qpid-proton-0.13.0/proton/cpp/examples/connection_options.cpp b/input/releases/qpid-proton-0.13.0/proton/cpp/examples/connection_options.cpp
new file mode 100644
index 0000000..f9935a8
--- /dev/null
+++ b/input/releases/qpid-proton-0.13.0/proton/cpp/examples/connection_options.cpp
@@ -0,0 +1,76 @@
+/*
+ *
+ * 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.
+ *
+ */
+
+#include <proton/connection.hpp>
+#include <proton/connection_options.hpp>
+#include <proton/default_container.hpp>
+#include <proton/messaging_handler.hpp>
+#include <proton/transport.hpp>
+
+#include <iostream>
+
+using proton::connection_options;
+
+#include "fake_cpp11.hpp"
+
+class handler_2 : public proton::messaging_handler {
+    void on_connection_open(proton::connection &c) OVERRIDE {
+        std::cout << "connection events going to handler_2" << std::endl;
+        std::cout << "connection max_frame_size: " << c.max_frame_size() <<
+            ", idle timeout: " << c.idle_timeout() << std::endl;
+        c.close();
+    }
+};
+
+class main_handler : public proton::messaging_handler {
+  private:
+    std::string url;
+    handler_2 conn_handler;
+
+  public:
+    main_handler(const std::string& u) : url(u) {}
+
+    void on_container_start(proton::container &c) OVERRIDE {
+        // Connection options for this connection.  Merged with and overriding the container's
+        // client_connection_options() settings.
+        c.connect(url, connection_options().handler(conn_handler).max_frame_size(2468));
+    }
+
+    void on_connection_open(proton::connection &c) OVERRIDE {
+        std::cout << "unexpected connection event on main handler" << std::endl;
+        c.close();
+    }
+};
+
+int main(int argc, char **argv) {
+    try {
+        std::string url = argc > 1 ? argv[1] : "127.0.0.1:5672/examples";
+        main_handler handler(url);
+        proton::default_container container(handler);
+        // Global connection options for future connections on container.
+        container.client_connection_options(connection_options().max_frame_size(12345).idle_timeout(proton::duration(15000)));
+        container.run();
+        return 0;
+    } catch (const std::exception& e) {
+        std::cerr << e.what() << std::endl;
+    }
+    return 1;
+}

http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/input/releases/qpid-proton-0.13.0/proton/cpp/examples/connection_options.cpp.html.in
----------------------------------------------------------------------
diff --git a/input/releases/qpid-proton-0.13.0/proton/cpp/examples/connection_options.cpp.html.in b/input/releases/qpid-proton-0.13.0/proton/cpp/examples/connection_options.cpp.html.in
new file mode 100644
index 0000000..e363d82
--- /dev/null
+++ b/input/releases/qpid-proton-0.13.0/proton/cpp/examples/connection_options.cpp.html.in
@@ -0,0 +1,60 @@
+
+<h1>connection_options.cpp</h1>
+<div class="highlight"><pre><span></span><span class="cp">#include</span> <span class="cpf">&lt;proton/connection.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/connection_options.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/default_container.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/messaging_handler.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/transport.hpp&gt;</span><span class="cp"></span>
+
+<span class="cp">#include</span> <span class="cpf">&lt;iostream&gt;</span><span class="cp"></span>
+
+<span class="k">using</span> <span class="n">proton</span><span class="o">::</span><span class="n">connection_options</span><span class="p">;</span>
+
+<span class="cp">#include</span> <span class="cpf">&quot;fake_cpp11.hpp&quot;</span><span class="cp"></span>
+
+<span class="k">class</span> <span class="nc">handler_2</span> <span class="o">:</span> <span class="k">public</span> <span class="n">proton</span><span class="o">::</span><span class="n">messaging_handler</span> <span class="p">{</span>
+    <span class="kt">void</span> <span class="n">on_connection_open</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">connection</span> <span class="o">&amp;</span><span class="n">c</span><span class="p">)</span> <span class="n">OVERRIDE</span> <span class="p">{</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;connection events going to handler_2&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;connection max_frame_size: &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">c</span><span class="p">.</span><span class="n">max_frame_size</span><span class="p">()</span> <span class="o">&lt;&lt;</span>
+            <span class="s">&quot;, idle timeout: &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">c</span><span class="p">.</span><span class="n">idle_timeout</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+        <span class="n">c</span><span class="p">.</span><span class="n">close</span><span class="p">();</span>
+    <span class="p">}</span>
+<span class="p">};</span>
+
+<span class="k">class</span> <span class="nc">main_handler</span> <span class="o">:</span> <span class="k">public</span> <span class="n">proton</span><span class="o">::</span><span class="n">messaging_handler</span> <span class="p">{</span>
+  <span class="k">private</span><span class="o">:</span>
+    <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">url</span><span class="p">;</span>
+    <span class="n">handler_2</span> <span class="n">conn_handler</span><span class="p">;</span>
+
+  <span class="k">public</span><span class="o">:</span>
+    <span class="n">main_handler</span><span class="p">(</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="o">&amp;</span> <span class="n">u</span><span class="p">)</span> <span class="o">:</span> <span class="n">url</span><span class="p">(</span><span class="n">u</span><span class="p">)</span> <span class="p">{}</span>
+
+    <span class="kt">void</span> <span class="n">on_container_start</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">container</span> <span class="o">&amp;</span><span class="n">c</span><span class="p">)</span> <span class="n">OVERRIDE</span> <span class="p">{</span>
+        <span class="c1">// Connection options for this connection.  Merged with and overriding the container&#39;s</span>
+        <span class="c1">// client_connection_options() settings.</span>
+        <span class="n">c</span><span class="p">.</span><span class="n">connect</span><span class="p">(</span><span class="n">url</span><span class="p">,</span> <span class="n">connection_options</span><span class="p">().</span><span class="n">handler</span><span class="p">(</span><span class="n">conn_handler</span><span class="p">).</span><span class="n">max_frame_size</span><span class="p">(</span><span class="mi">2468</span><span class="p">));</span>
+    <span class="p">}</span>
+
+    <span class="kt">void</span> <span class="n">on_connection_open</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">connection</span> <span class="o">&amp;</span><span class="n">c</span><span class="p">)</span> <span class="n">OVERRIDE</span> <span class="p">{</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;unexpected connection event on main handler&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+        <span class="n">c</span><span class="p">.</span><span class="n">close</span><span class="p">();</span>
+    <span class="p">}</span>
+<span class="p">};</span>
+
+<span class="kt">int</span> <span class="nf">main</span><span class="p">(</span><span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">**</span><span class="n">argv</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">try</span> <span class="p">{</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">url</span> <span class="o">=</span> <span class="n">argc</span> <span class="o">&gt;</span> <span class="mi">1</span> <span class="o">?</span> <span class="n">argv</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">:</span> <span class="s">&quot;127.0.0.1:5672/examples&quot;</span><span class="p">;</span>
+        <span class="n">main_handler</span> <span class="n">handler</span><span class="p">(</span><span class="n">url</span><span class="p">);</span>
+        <span class="n">proton</span><span class="o">::</span><span class="n">default_container</span> <span class="n">container</span><span class="p">(</span><span class="n">handler</span><span class="p">);</span>
+        <span class="c1">// Global connection options for future connections on container.</span>
+        <span class="n">container</span><span class="p">.</span><span class="n">client_connection_options</span><span class="p">(</span><span class="n">connection_options</span><span class="p">().</span><span class="n">max_frame_size</span><span class="p">(</span><span class="mi">12345</span><span class="p">).</span><span class="n">idle_timeout</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">duration</span><span class="p">(</span><span class="mi">15000</span><span class="p">)));</span>
+        <span class="n">container</span><span class="p">.</span><span class="n">run</span><span class="p">();</span>
+        <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">catch</span> <span class="p">(</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">exception</span><span class="o">&amp;</span> <span class="n">e</span><span class="p">)</span> <span class="p">{</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">cerr</span> <span class="o">&lt;&lt;</span> <span class="n">e</span><span class="p">.</span><span class="n">what</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+    <span class="p">}</span>
+    <span class="k">return</span> <span class="mi">1</span><span class="p">;</span>
+<span class="p">}</span>
+</pre></div>
+
+<p><a href="connection_options.cpp">Download this file</a></p>

http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/input/releases/qpid-proton-0.13.0/proton/cpp/examples/direct_recv.cpp
----------------------------------------------------------------------
diff --git a/input/releases/qpid-proton-0.13.0/proton/cpp/examples/direct_recv.cpp b/input/releases/qpid-proton-0.13.0/proton/cpp/examples/direct_recv.cpp
new file mode 100644
index 0000000..edbc8b6
--- /dev/null
+++ b/input/releases/qpid-proton-0.13.0/proton/cpp/examples/direct_recv.cpp
@@ -0,0 +1,91 @@
+/*
+ *
+ * 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.
+ *
+ */
+
+#include "options.hpp"
+
+#include <proton/connection.hpp>
+#include <proton/default_container.hpp>
+#include <proton/delivery.hpp>
+#include <proton/messaging_handler.hpp>
+#include <proton/link.hpp>
+#include <proton/value.hpp>
+
+#include <iostream>
+#include <map>
+
+#include "fake_cpp11.hpp"
+
+class direct_recv : public proton::messaging_handler {
+  private:
+    std::string url;
+    proton::listener listener;
+    uint64_t expected;
+    uint64_t received;
+
+  public:
+    direct_recv(const std::string &s, int c) : url(s), expected(c), received(0) {}
+
+    void on_container_start(proton::container &c) OVERRIDE {
+        listener = c.listen(url);
+        std::cout << "direct_recv listening on " << url << std::endl;
+    }
+
+    void on_message(proton::delivery &d, proton::message &msg) OVERRIDE {
+        if (proton::coerce<uint64_t>(msg.id()) < received) {
+            return; // Ignore duplicate
+        }
+
+        if (expected == 0 || received < expected) {
+            std::cout << msg.body() << std::endl;
+            received++;
+        }
+
+        if (received == expected) {
+            d.receiver().close();
+            d.connection().close();
+            listener.stop();
+        }
+    }
+};
+
+int main(int argc, char **argv) {
+    std::string address("127.0.0.1:5672/examples");
+    int message_count = 100;
+    example::options opts(argc, argv);
+
+    opts.add_value(address, 'a', "address", "listen and receive on URL", "URL");
+    opts.add_value(message_count, 'm', "messages", "receive COUNT messages", "COUNT");
+
+    try {
+        opts.parse();
+
+        direct_recv recv(address, message_count);
+        proton::default_container(recv).run();
+
+        return 0;
+    } catch (const example::bad_option& e) {
+        std::cout << opts << std::endl << e.what() << std::endl;
+    } catch (const std::exception& e) {
+        std::cerr << e.what() << std::endl;
+    }
+
+    return 1;
+}

http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/input/releases/qpid-proton-0.13.0/proton/cpp/examples/direct_recv.cpp.html.in
----------------------------------------------------------------------
diff --git a/input/releases/qpid-proton-0.13.0/proton/cpp/examples/direct_recv.cpp.html.in b/input/releases/qpid-proton-0.13.0/proton/cpp/examples/direct_recv.cpp.html.in
new file mode 100644
index 0000000..b02926a
--- /dev/null
+++ b/input/releases/qpid-proton-0.13.0/proton/cpp/examples/direct_recv.cpp.html.in
@@ -0,0 +1,75 @@
+
+<h1>direct_recv.cpp</h1>
+<div class="highlight"><pre><span></span><span class="cp">#include</span> <span class="cpf">&quot;options.hpp&quot;</span><span class="cp"></span>
+
+<span class="cp">#include</span> <span class="cpf">&lt;proton/connection.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/default_container.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/delivery.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/messaging_handler.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/link.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/value.hpp&gt;</span><span class="cp"></span>
+
+<span class="cp">#include</span> <span class="cpf">&lt;iostream&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;map&gt;</span><span class="cp"></span>
+
+<span class="cp">#include</span> <span class="cpf">&quot;fake_cpp11.hpp&quot;</span><span class="cp"></span>
+
+<span class="k">class</span> <span class="nc">direct_recv</span> <span class="o">:</span> <span class="k">public</span> <span class="n">proton</span><span class="o">::</span><span class="n">messaging_handler</span> <span class="p">{</span>
+  <span class="k">private</span><span class="o">:</span>
+    <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">url</span><span class="p">;</span>
+    <span class="n">proton</span><span class="o">::</span><span class="n">listener</span> <span class="n">listener</span><span class="p">;</span>
+    <span class="kt">uint64_t</span> <span class="n">expected</span><span class="p">;</span>
+    <span class="kt">uint64_t</span> <span class="n">received</span><span class="p">;</span>
+
+  <span class="k">public</span><span class="o">:</span>
+    <span class="n">direct_recv</span><span class="p">(</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="o">&amp;</span><span class="n">s</span><span class="p">,</span> <span class="kt">int</span> <span class="n">c</span><span class="p">)</span> <span class="o">:</span> <span class="n">url</span><span class="p">(</span><span class="n">s</span><span class="p">),</span> <span class="n">expected</span><span class="p">(</span><span class="n">c</span><span class="p">),</span> <span class="n">received</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span> <span class="p">{}</span>
+
+    <span class="kt">void</span> <span class="n">on_container_start</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">container</span> <span class="o">&amp;</span><span class="n">c</span><span class="p">)</span> <span class="n">OVERRIDE</span> <span class="p">{</span>
+        <span class="n">listener</span> <span class="o">=</span> <span class="n">c</span><span class="p">.</span><span class="n">listen</span><span class="p">(</span><span class="n">url</span><span class="p">);</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;direct_recv listening on &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">url</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+    <span class="p">}</span>
+
+    <span class="kt">void</span> <span class="n">on_message</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">delivery</span> <span class="o">&amp;</span><span class="n">d</span><span class="p">,</span> <span class="n">proton</span><span class="o">::</span><span class="n">message</span> <span class="o">&amp;</span><span class="n">msg</span><span class="p">)</span> <span class="n">OVERRIDE</span> <span class="p">{</span>
+        <span class="k">if</span> <span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">coerce</span><span class="o">&lt;</span><span class="kt">uint64_t</span><span class="o">&gt;</span><span class="p">(</span><span class="n">msg</span><span class="p">.</span><span class="n">id</span><span class="p">())</span> <span class="o">&lt;</span> <span class="n">received</span><span class="p">)</span> <span class="p">{</span>
+            <span class="k">return</span><span class="p">;</span> <span class="c1">// Ignore duplicate</span>
+        <span class="p">}</span>
+
+        <span class="k">if</span> <span class="p">(</span><span class="n">expected</span> <span class="o">==</span> <span class="mi">0</span> <span class="o">||</span> <span class="n">received</span> <span class="o">&lt;</span> <span class="n">expected</span><span class="p">)</span> <span class="p">{</span>
+            <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="n">msg</span><span class="p">.</span><span class="n">body</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+            <span class="n">received</span><span class="o">++</span><span class="p">;</span>
+        <span class="p">}</span>
+
+        <span class="k">if</span> <span class="p">(</span><span class="n">received</span> <span class="o">==</span> <span class="n">expected</span><span class="p">)</span> <span class="p">{</span>
+            <span class="n">d</span><span class="p">.</span><span class="n">receiver</span><span class="p">().</span><span class="n">close</span><span class="p">();</span>
+            <span class="n">d</span><span class="p">.</span><span class="n">connection</span><span class="p">().</span><span class="n">close</span><span class="p">();</span>
+            <span class="n">listener</span><span class="p">.</span><span class="n">stop</span><span class="p">();</span>
+        <span class="p">}</span>
+    <span class="p">}</span>
+<span class="p">};</span>
+
+<span class="kt">int</span> <span class="nf">main</span><span class="p">(</span><span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">**</span><span class="n">argv</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">address</span><span class="p">(</span><span class="s">&quot;127.0.0.1:5672/examples&quot;</span><span class="p">);</span>
+    <span class="kt">int</span> <span class="n">message_count</span> <span class="o">=</span> <span class="mi">100</span><span class="p">;</span>
+    <span class="n">example</span><span class="o">::</span><span class="n">options</span> <span class="n">opts</span><span class="p">(</span><span class="n">argc</span><span class="p">,</span> <span class="n">argv</span><span class="p">);</span>
+
+    <span class="n">opts</span><span class="p">.</span><span class="n">add_value</span><span class="p">(</span><span class="n">address</span><span class="p">,</span> <span class="sc">&#39;a&#39;</span><span class="p">,</span> <span class="s">&quot;address&quot;</span><span class="p">,</span> <span class="s">&quot;listen and receive on URL&quot;</span><span class="p">,</span> <span class="s">&quot;URL&quot;</span><span class="p">);</span>
+    <span class="n">opts</span><span class="p">.</span><span class="n">add_value</span><span class="p">(</span><span class="n">message_count</span><span class="p">,</span> <span class="sc">&#39;m&#39;</span><span class="p">,</span> <span class="s">&quot;messages&quot;</span><span class="p">,</span> <span class="s">&quot;receive COUNT messages&quot;</span><span class="p">,</span> <span class="s">&quot;COUNT&quot;</span><span class="p">);</span>
+
+    <span class="k">try</span> <span class="p">{</span>
+        <span class="n">opts</span><span class="p">.</span><span class="n">parse</span><span class="p">();</span>
+
+        <span class="n">direct_recv</span> <span class="n">recv</span><span class="p">(</span><span class="n">address</span><span class="p">,</span> <span class="n">message_count</span><span class="p">);</span>
+        <span class="n">proton</span><span class="o">::</span><span class="n">default_container</span><span class="p">(</span><span class="n">recv</span><span class="p">).</span><span class="n">run</span><span class="p">();</span>
+
+        <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">catch</span> <span class="p">(</span><span class="k">const</span> <span class="n">example</span><span class="o">::</span><span class="n">bad_option</span><span class="o">&amp;</span> <span class="n">e</span><span class="p">)</span> <span class="p">{</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="n">opts</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span> <span class="o">&lt;&lt;</span> <span class="n">e</span><span class="p">.</span><span class="n">what</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">catch</span> <span class="p">(</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">exception</span><span class="o">&amp;</span> <span class="n">e</span><span class="p">)</span> <span class="p">{</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">cerr</span> <span class="o">&lt;&lt;</span> <span class="n">e</span><span class="p">.</span><span class="n">what</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+    <span class="p">}</span>
+
+    <span class="k">return</span> <span class="mi">1</span><span class="p">;</span>
+<span class="p">}</span>
+</pre></div>
+
+<p><a href="direct_recv.cpp">Download this file</a></p>

http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/input/releases/qpid-proton-0.13.0/proton/cpp/examples/direct_send.cpp
----------------------------------------------------------------------
diff --git a/input/releases/qpid-proton-0.13.0/proton/cpp/examples/direct_send.cpp b/input/releases/qpid-proton-0.13.0/proton/cpp/examples/direct_send.cpp
new file mode 100644
index 0000000..d8427b7
--- /dev/null
+++ b/input/releases/qpid-proton-0.13.0/proton/cpp/examples/direct_send.cpp
@@ -0,0 +1,101 @@
+/*
+ *
+ * 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.
+ *
+ */
+
+#include "options.hpp"
+
+#include <proton/connection.hpp>
+#include <proton/default_container.hpp>
+#include <proton/messaging_handler.hpp>
+#include <proton/value.hpp>
+#include <proton/tracker.hpp>
+
+#include <iostream>
+#include <map>
+
+#include "fake_cpp11.hpp"
+
+class simple_send : public proton::messaging_handler {
+  private:
+    std::string url;
+    proton::listener listener;
+    int sent;
+    int confirmed;
+    int total;
+
+  public:
+    simple_send(const std::string &s, int c) : url(s), sent(0), confirmed(0), total(c) {}
+
+    void on_container_start(proton::container &c) OVERRIDE {
+        listener = c.listen(url);
+        std::cout << "direct_send listening on " << url << std::endl;
+    }
+
+    void on_sendable(proton::sender &sender) OVERRIDE {
+        while (sender.credit() && sent < total) {
+            proton::message msg;
+            std::map<std::string, int> m;
+            m["sequence"] = sent + 1;
+
+            msg.id(sent + 1);
+            msg.body(m);
+
+            sender.send(msg);
+            sent++;
+        }
+    }
+
+    void on_tracker_accept(proton::tracker &t) OVERRIDE {
+        confirmed++;
+
+        if (confirmed == total) {
+            std::cout << "all messages confirmed" << std::endl;
+            t.connection().close();
+            listener.stop();
+        }
+    }
+
+    void on_transport_close(proton::transport &) OVERRIDE {
+        sent = confirmed;
+    }
+};
+
+int main(int argc, char **argv) {
+    std::string address("127.0.0.1:5672/examples");
+    int message_count = 100;
+    example::options opts(argc, argv);
+
+    opts.add_value(address, 'a', "address", "listen and send on URL", "URL");
+    opts.add_value(message_count, 'm', "messages", "send COUNT messages", "COUNT");
+
+    try {
+        opts.parse();
+
+        simple_send send(address, message_count);
+        proton::default_container(send).run();
+        return 0;
+    } catch (const example::bad_option& e) {
+        std::cout << opts << std::endl << e.what() << std::endl;
+    } catch (const std::exception& e) {
+        std::cerr << e.what() << std::endl;
+    }
+
+    return 1;
+}


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


[08/26] qpid-site git commit: QPID-7350: Examples that should have gone with the previous commit

Posted by jr...@apache.org.
http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/input/releases/qpid-proton-0.13.0/proton/cpp/examples/flow_control.cpp.html.in
----------------------------------------------------------------------
diff --git a/input/releases/qpid-proton-0.13.0/proton/cpp/examples/flow_control.cpp.html.in b/input/releases/qpid-proton-0.13.0/proton/cpp/examples/flow_control.cpp.html.in
new file mode 100644
index 0000000..1cb6e80
--- /dev/null
+++ b/input/releases/qpid-proton-0.13.0/proton/cpp/examples/flow_control.cpp.html.in
@@ -0,0 +1,217 @@
+
+<h1>flow_control.cpp</h1>
+<div class="highlight"><pre><span></span><span class="cp">#include</span> <span class="cpf">&lt;proton/listener.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/connection.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/connection_options.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/default_container.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/messaging_handler.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/sender.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/tracker.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/delivery.hpp&gt;</span><span class="cp"></span>
+
+<span class="cp">#include</span> <span class="cpf">&lt;iostream&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;sstream&gt;</span><span class="cp"></span>
+
+<span class="cp">#include</span> <span class="cpf">&quot;fake_cpp11.hpp&quot;</span><span class="cp"></span>
+
+<span class="k">namespace</span> <span class="p">{</span>
+
+<span class="kt">bool</span> <span class="n">verbose</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
+
+<span class="kt">void</span> <span class="nf">verify</span><span class="p">(</span><span class="kt">bool</span> <span class="n">success</span><span class="p">,</span> <span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="o">&amp;</span><span class="n">msg</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">success</span><span class="p">)</span>
+        <span class="k">throw</span> <span class="n">std</span><span class="o">::</span><span class="n">runtime_error</span><span class="p">(</span><span class="s">&quot;example failure:&quot;</span> <span class="o">+</span> <span class="n">msg</span><span class="p">);</span>
+    <span class="k">else</span> <span class="p">{</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;success: &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">msg</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+        <span class="k">if</span> <span class="p">(</span><span class="n">verbose</span><span class="p">)</span> <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+    <span class="p">}</span>
+<span class="p">}</span>
+
+<span class="p">}</span>
+
+<span class="c1">// flow_sender manages the incoming connection and acts as the message sender.</span>
+<span class="k">class</span> <span class="nc">flow_sender</span> <span class="o">:</span> <span class="k">public</span> <span class="n">proton</span><span class="o">::</span><span class="n">messaging_handler</span> <span class="p">{</span>
+  <span class="k">private</span><span class="o">:</span>
+    <span class="kt">int</span> <span class="n">available</span><span class="p">;</span>  <span class="c1">// Number of messages the sender may send assuming sufficient credit.</span>
+    <span class="kt">int</span> <span class="n">sequence</span><span class="p">;</span>
+
+  <span class="k">public</span><span class="o">:</span>
+    <span class="n">flow_sender</span><span class="p">()</span> <span class="o">:</span> <span class="n">available</span><span class="p">(</span><span class="mi">0</span><span class="p">),</span> <span class="n">sequence</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span> <span class="p">{}</span>
+
+    <span class="kt">void</span> <span class="n">on_sendable</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">sender</span> <span class="o">&amp;</span><span class="n">s</span><span class="p">)</span> <span class="n">OVERRIDE</span> <span class="p">{</span>
+        <span class="k">if</span> <span class="p">(</span><span class="n">verbose</span><span class="p">)</span>
+            <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;flow_sender in </span><span class="se">\&quot;</span><span class="s">on_sendable</span><span class="se">\&quot;</span><span class="s"> with credit &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">s</span><span class="p">.</span><span class="n">credit</span><span class="p">()</span>
+                      <span class="o">&lt;&lt;</span> <span class="s">&quot; and &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">available</span> <span class="o">&lt;&lt;</span> <span class="s">&quot; available messages&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+        <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="n">sequence</span><span class="p">;</span> <span class="n">available</span> <span class="o">&amp;&amp;</span> <span class="n">s</span><span class="p">.</span><span class="n">credit</span><span class="p">()</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
+            <span class="n">std</span><span class="o">::</span><span class="n">ostringstream</span> <span class="n">mbody</span><span class="p">;</span>
+            <span class="n">mbody</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;flow_sender message &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">sequence</span><span class="o">++</span><span class="p">;</span>
+            <span class="n">proton</span><span class="o">::</span><span class="n">message</span> <span class="n">m</span><span class="p">(</span><span class="n">mbody</span><span class="p">.</span><span class="n">str</span><span class="p">());</span>
+            <span class="n">s</span><span class="p">.</span><span class="n">send</span><span class="p">(</span><span class="n">m</span><span class="p">);</span>
+            <span class="n">available</span><span class="o">--</span><span class="p">;</span>
+        <span class="p">}</span>
+    <span class="p">}</span>
+
+    <span class="kt">void</span> <span class="n">on_sender_drain_start</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">sender</span> <span class="o">&amp;</span><span class="n">s</span><span class="p">)</span> <span class="n">OVERRIDE</span> <span class="p">{</span>
+        <span class="k">if</span> <span class="p">(</span><span class="n">verbose</span><span class="p">)</span>
+            <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;flow_sender in </span><span class="se">\&quot;</span><span class="s">on_drain_start</span><span class="se">\&quot;</span><span class="s"> with credit &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">s</span><span class="p">.</span><span class="n">credit</span><span class="p">()</span>
+                      <span class="o">&lt;&lt;</span> <span class="s">&quot; making an internal call to </span><span class="se">\&quot;</span><span class="s">on_sendble</span><span class="se">\&quot;</span><span class="s">&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+        <span class="n">on_sendable</span><span class="p">(</span><span class="n">s</span><span class="p">);</span> <span class="c1">// send as many as we can</span>
+        <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="p">.</span><span class="n">credit</span><span class="p">())</span> <span class="p">{</span>
+            <span class="n">s</span><span class="p">.</span><span class="n">return_credit</span><span class="p">();</span> <span class="c1">// return the rest</span>
+        <span class="p">}</span>
+    <span class="p">}</span>
+
+    <span class="kt">void</span> <span class="n">set_available</span><span class="p">(</span><span class="kt">int</span> <span class="n">n</span><span class="p">)</span> <span class="p">{</span> <span class="n">available</span> <span class="o">=</span> <span class="n">n</span><span class="p">;</span> <span class="p">}</span>
+<span class="p">};</span>
+
+<span class="k">class</span> <span class="nc">flow_receiver</span> <span class="o">:</span> <span class="k">public</span> <span class="n">proton</span><span class="o">::</span><span class="n">messaging_handler</span> <span class="p">{</span>
+  <span class="k">public</span><span class="o">:</span>
+    <span class="kt">int</span> <span class="n">stage</span><span class="p">;</span>
+    <span class="kt">int</span> <span class="n">received</span><span class="p">;</span>
+    <span class="n">flow_sender</span> <span class="o">&amp;</span><span class="n">sender</span><span class="p">;</span>
+
+    <span class="n">flow_receiver</span><span class="p">(</span><span class="n">flow_sender</span> <span class="o">&amp;</span><span class="n">s</span><span class="p">)</span> <span class="o">:</span> <span class="n">stage</span><span class="p">(</span><span class="mi">0</span><span class="p">),</span> <span class="n">sender</span><span class="p">(</span><span class="n">s</span><span class="p">)</span> <span class="p">{}</span>
+
+    <span class="kt">void</span> <span class="n">example_setup</span><span class="p">(</span><span class="kt">int</span> <span class="n">n</span><span class="p">)</span> <span class="p">{</span>
+        <span class="n">received</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+        <span class="n">sender</span><span class="p">.</span><span class="n">set_available</span><span class="p">(</span><span class="n">n</span><span class="p">);</span>
+    <span class="p">}</span>
+
+    <span class="kt">void</span> <span class="n">run_stage</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">receiver</span> <span class="o">&amp;</span><span class="n">r</span><span class="p">,</span> <span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="o">&amp;</span><span class="n">caller</span><span class="p">)</span> <span class="p">{</span>
+        <span class="c1">// Serialize the progression of the flow control examples.</span>
+        <span class="k">switch</span> <span class="p">(</span><span class="n">stage</span><span class="p">)</span> <span class="p">{</span>
+        <span class="k">case</span> <span class="mi">0</span><span class="o">:</span>
+            <span class="k">if</span> <span class="p">(</span><span class="n">verbose</span><span class="p">)</span> <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Example 1.  Simple use of credit.&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+            <span class="c1">// TODO: add timeout callbacks, show no messages until credit.</span>
+            <span class="n">example_setup</span><span class="p">(</span><span class="mi">2</span><span class="p">);</span>
+            <span class="n">r</span><span class="p">.</span><span class="n">add_credit</span><span class="p">(</span><span class="mi">2</span><span class="p">);</span>
+            <span class="k">break</span><span class="p">;</span>
+        <span class="k">case</span> <span class="mi">1</span><span class="o">:</span>
+            <span class="k">if</span> <span class="p">(</span><span class="n">r</span><span class="p">.</span><span class="n">credit</span><span class="p">()</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">)</span> <span class="k">return</span><span class="p">;</span>
+            <span class="n">verify</span><span class="p">(</span><span class="n">received</span> <span class="o">==</span> <span class="mi">2</span><span class="p">,</span> <span class="s">&quot;Example 1: simple credit&quot;</span><span class="p">);</span>
+
+            <span class="k">if</span> <span class="p">(</span><span class="n">verbose</span><span class="p">)</span> <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Example 2.   Use basic drain, sender has 3 </span><span class="se">\&quot;</span><span class="s">immediate</span><span class="se">\&quot;</span><span class="s"> messages.&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+            <span class="n">example_setup</span><span class="p">(</span><span class="mi">3</span><span class="p">);</span>
+            <span class="n">r</span><span class="p">.</span><span class="n">add_credit</span><span class="p">(</span><span class="mi">5</span><span class="p">);</span> <span class="c1">// ask for up to 5</span>
+            <span class="n">r</span><span class="p">.</span><span class="n">drain</span><span class="p">();</span>       <span class="c1">// but only use what&#39;s available</span>
+            <span class="k">break</span><span class="p">;</span>
+        <span class="k">case</span> <span class="mi">2</span><span class="o">:</span>
+            <span class="k">if</span> <span class="p">(</span><span class="n">caller</span> <span class="o">==</span> <span class="s">&quot;on_message&quot;</span><span class="p">)</span> <span class="k">return</span><span class="p">;</span>
+            <span class="k">if</span> <span class="p">(</span><span class="n">caller</span> <span class="o">==</span> <span class="s">&quot;on_receiver_drain_finish&quot;</span><span class="p">)</span> <span class="p">{</span>
+                <span class="c1">// Note that unused credit of 2 at sender is returned and is now 0.</span>
+                <span class="n">verify</span><span class="p">(</span><span class="n">received</span> <span class="o">==</span> <span class="mi">3</span> <span class="o">&amp;&amp;</span> <span class="n">r</span><span class="p">.</span><span class="n">credit</span><span class="p">()</span> <span class="o">==</span> <span class="mi">0</span><span class="p">,</span> <span class="s">&quot;Example 2: basic drain&quot;</span><span class="p">);</span>
+
+                <span class="k">if</span> <span class="p">(</span><span class="n">verbose</span><span class="p">)</span> <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Example 3. Drain use with no credit.&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+                <span class="n">example_setup</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
+                <span class="n">r</span><span class="p">.</span><span class="n">drain</span><span class="p">();</span>
+                <span class="k">break</span><span class="p">;</span>
+            <span class="p">}</span>
+            <span class="n">verify</span><span class="p">(</span><span class="nb">false</span><span class="p">,</span> <span class="s">&quot;example 2 run_stage&quot;</span><span class="p">);</span>
+            <span class="k">return</span><span class="p">;</span>
+
+        <span class="k">case</span> <span class="mi">3</span><span class="o">:</span>
+            <span class="n">verify</span><span class="p">(</span><span class="n">caller</span> <span class="o">==</span> <span class="s">&quot;on_receiver_drain_finish&quot;</span> <span class="o">&amp;&amp;</span> <span class="n">received</span> <span class="o">==</span> <span class="mi">0</span><span class="p">,</span> <span class="s">&quot;Example 3: drain without credit&quot;</span><span class="p">);</span>
+
+            <span class="k">if</span> <span class="p">(</span><span class="n">verbose</span><span class="p">)</span> <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Example 4. Show using high(10)/low(3) watermark for 25 messages.&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+            <span class="n">example_setup</span><span class="p">(</span><span class="mi">25</span><span class="p">);</span>
+            <span class="n">r</span><span class="p">.</span><span class="n">add_credit</span><span class="p">(</span><span class="mi">10</span><span class="p">);</span>
+            <span class="k">break</span><span class="p">;</span>
+
+        <span class="k">case</span> <span class="mi">4</span><span class="o">:</span>
+            <span class="k">if</span> <span class="p">(</span><span class="n">received</span> <span class="o">&lt;</span> <span class="mi">25</span><span class="p">)</span> <span class="p">{</span>
+                <span class="c1">// Top up credit as needed.</span>
+                <span class="kt">uint32_t</span> <span class="n">credit</span> <span class="o">=</span> <span class="n">r</span><span class="p">.</span><span class="n">credit</span><span class="p">();</span>
+                <span class="k">if</span> <span class="p">(</span><span class="n">credit</span> <span class="o">&lt;=</span> <span class="mi">3</span><span class="p">)</span> <span class="p">{</span>
+                    <span class="kt">uint32_t</span> <span class="n">new_credit</span> <span class="o">=</span> <span class="mi">10</span><span class="p">;</span>
+                    <span class="kt">uint32_t</span> <span class="n">remaining</span> <span class="o">=</span> <span class="mi">25</span> <span class="o">-</span> <span class="n">received</span><span class="p">;</span>
+                    <span class="k">if</span> <span class="p">(</span><span class="n">new_credit</span> <span class="o">&gt;</span> <span class="n">remaining</span><span class="p">)</span>
+                        <span class="n">new_credit</span> <span class="o">=</span> <span class="n">remaining</span><span class="p">;</span>
+                    <span class="k">if</span> <span class="p">(</span><span class="n">new_credit</span> <span class="o">&gt;</span> <span class="n">credit</span><span class="p">)</span> <span class="p">{</span>
+                        <span class="n">r</span><span class="p">.</span><span class="n">add_credit</span><span class="p">(</span><span class="n">new_credit</span> <span class="o">-</span> <span class="n">credit</span><span class="p">);</span>
+                        <span class="k">if</span> <span class="p">(</span><span class="n">verbose</span><span class="p">)</span>
+                            <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;flow_receiver adding credit for &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">new_credit</span> <span class="o">-</span> <span class="n">credit</span>
+                                      <span class="o">&lt;&lt;</span> <span class="s">&quot; messages&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+                    <span class="p">}</span>
+                <span class="p">}</span>
+                <span class="k">return</span><span class="p">;</span>
+            <span class="p">}</span>
+
+            <span class="n">verify</span><span class="p">(</span><span class="n">received</span> <span class="o">==</span> <span class="mi">25</span> <span class="o">&amp;&amp;</span> <span class="n">r</span><span class="p">.</span><span class="n">credit</span><span class="p">()</span> <span class="o">==</span> <span class="mi">0</span><span class="p">,</span> <span class="s">&quot;Exmaple 4: high/low watermark&quot;</span><span class="p">);</span>
+            <span class="n">r</span><span class="p">.</span><span class="n">connection</span><span class="p">().</span><span class="n">close</span><span class="p">();</span>
+            <span class="k">break</span><span class="p">;</span>
+
+        <span class="k">default</span><span class="o">:</span>
+            <span class="k">throw</span> <span class="n">std</span><span class="o">::</span><span class="n">runtime_error</span><span class="p">(</span><span class="s">&quot;run_stage sequencing error&quot;</span><span class="p">);</span>
+        <span class="p">}</span>
+        <span class="n">stage</span><span class="o">++</span><span class="p">;</span>
+    <span class="p">}</span>
+
+    <span class="kt">void</span> <span class="n">on_receiver_open</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">receiver</span> <span class="o">&amp;</span><span class="n">r</span><span class="p">)</span> <span class="n">OVERRIDE</span> <span class="p">{</span>
+        <span class="n">run_stage</span><span class="p">(</span><span class="n">r</span><span class="p">,</span> <span class="s">&quot;on_receiver_open&quot;</span><span class="p">);</span>
+    <span class="p">}</span>
+
+    <span class="kt">void</span> <span class="n">on_message</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">delivery</span> <span class="o">&amp;</span><span class="n">d</span><span class="p">,</span> <span class="n">proton</span><span class="o">::</span><span class="n">message</span> <span class="o">&amp;</span><span class="n">m</span><span class="p">)</span> <span class="n">OVERRIDE</span> <span class="p">{</span>
+        <span class="k">if</span> <span class="p">(</span><span class="n">verbose</span><span class="p">)</span>
+            <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;flow_receiver in </span><span class="se">\&quot;</span><span class="s">on_message</span><span class="se">\&quot;</span><span class="s"> with &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">m</span><span class="p">.</span><span class="n">body</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+        <span class="n">proton</span><span class="o">::</span><span class="n">receiver</span> <span class="n">r</span><span class="p">(</span><span class="n">d</span><span class="p">.</span><span class="n">receiver</span><span class="p">());</span>
+        <span class="n">received</span><span class="o">++</span><span class="p">;</span>
+        <span class="n">run_stage</span><span class="p">(</span><span class="n">r</span><span class="p">,</span> <span class="s">&quot;on_message&quot;</span><span class="p">);</span>
+    <span class="p">}</span>
+
+    <span class="kt">void</span> <span class="n">on_receiver_drain_finish</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">receiver</span> <span class="o">&amp;</span><span class="n">r</span><span class="p">)</span> <span class="n">OVERRIDE</span> <span class="p">{</span>
+        <span class="k">if</span> <span class="p">(</span><span class="n">verbose</span><span class="p">)</span>
+            <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;flow_receiver in </span><span class="se">\&quot;</span><span class="s">on_receiver_drain_finish</span><span class="se">\&quot;</span><span class="s">&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+        <span class="n">run_stage</span><span class="p">(</span><span class="n">r</span><span class="p">,</span> <span class="s">&quot;on_receiver_drain_finish&quot;</span><span class="p">);</span>
+    <span class="p">}</span>
+<span class="p">};</span>
+
+
+<span class="k">class</span> <span class="nc">flow_control</span> <span class="o">:</span> <span class="k">public</span> <span class="n">proton</span><span class="o">::</span><span class="n">messaging_handler</span> <span class="p">{</span>
+  <span class="k">private</span><span class="o">:</span>
+    <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">url</span><span class="p">;</span>
+    <span class="n">proton</span><span class="o">::</span><span class="n">listener</span> <span class="n">listener</span><span class="p">;</span>
+    <span class="n">flow_sender</span> <span class="n">send_handler</span><span class="p">;</span>
+    <span class="n">flow_receiver</span> <span class="n">receive_handler</span><span class="p">;</span>
+
+  <span class="k">public</span><span class="o">:</span>
+    <span class="n">flow_control</span><span class="p">(</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="o">&amp;</span> <span class="n">u</span><span class="p">)</span> <span class="o">:</span> <span class="n">url</span><span class="p">(</span><span class="n">u</span><span class="p">),</span> <span class="n">receive_handler</span><span class="p">(</span><span class="n">send_handler</span><span class="p">)</span> <span class="p">{}</span>
+
+    <span class="kt">void</span> <span class="n">on_container_start</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">container</span> <span class="o">&amp;</span><span class="n">c</span><span class="p">)</span> <span class="n">OVERRIDE</span> <span class="p">{</span>
+        <span class="n">listener</span> <span class="o">=</span> <span class="n">c</span><span class="p">.</span><span class="n">listen</span><span class="p">(</span><span class="n">url</span><span class="p">,</span> <span class="n">proton</span><span class="o">::</span><span class="n">connection_options</span><span class="p">().</span><span class="n">handler</span><span class="p">(</span><span class="n">send_handler</span><span class="p">));</span>
+        <span class="n">c</span><span class="p">.</span><span class="n">connect</span><span class="p">(</span><span class="n">url</span><span class="p">);</span>
+    <span class="p">}</span>
+
+    <span class="kt">void</span> <span class="n">on_connection_open</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">connection</span> <span class="o">&amp;</span><span class="n">c</span><span class="p">)</span> <span class="n">OVERRIDE</span> <span class="p">{</span>
+        <span class="k">if</span> <span class="p">(</span><span class="n">c</span><span class="p">.</span><span class="n">active</span><span class="p">())</span> <span class="p">{</span>
+            <span class="c1">// outbound connection</span>
+            <span class="n">c</span><span class="p">.</span><span class="n">open_receiver</span><span class="p">(</span><span class="s">&quot;flow_example&quot;</span><span class="p">,</span> <span class="n">proton</span><span class="o">::</span><span class="n">receiver_options</span><span class="p">().</span><span class="n">handler</span><span class="p">(</span><span class="n">receive_handler</span><span class="p">).</span><span class="n">credit_window</span><span class="p">(</span><span class="mi">0</span><span class="p">));</span>
+        <span class="p">}</span>
+    <span class="p">}</span>
+
+    <span class="kt">void</span> <span class="n">on_connection_close</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">connection</span> <span class="o">&amp;</span><span class="p">)</span> <span class="n">OVERRIDE</span> <span class="p">{</span>
+        <span class="n">listener</span><span class="p">.</span><span class="n">stop</span><span class="p">();</span>
+    <span class="p">}</span>
+<span class="p">};</span>
+
+<span class="kt">int</span> <span class="nf">main</span><span class="p">(</span><span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">**</span><span class="n">argv</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">quiet_arg</span><span class="p">(</span><span class="s">&quot;-quiet&quot;</span><span class="p">);</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">argc</span> <span class="o">&gt;</span> <span class="mi">2</span> <span class="o">&amp;&amp;</span> <span class="n">quiet_arg</span> <span class="o">==</span> <span class="n">argv</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span>
+        <span class="n">verbose</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
+    <span class="k">try</span> <span class="p">{</span>
+        <span class="c1">// Pick an &quot;unusual&quot; port since we are going to be talking to</span>
+        <span class="c1">// ourselves, not a broker.</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">url</span> <span class="o">=</span> <span class="n">argc</span> <span class="o">&gt;</span> <span class="mi">1</span> <span class="o">?</span> <span class="n">argv</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">:</span> <span class="s">&quot;127.0.0.1:8888/examples&quot;</span><span class="p">;</span>
+
+        <span class="n">flow_control</span> <span class="n">fc</span><span class="p">(</span><span class="n">url</span><span class="p">);</span>
+        <span class="n">proton</span><span class="o">::</span><span class="n">default_container</span><span class="p">(</span><span class="n">fc</span><span class="p">).</span><span class="n">run</span><span class="p">();</span>
+
+        <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">catch</span> <span class="p">(</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">exception</span><span class="o">&amp;</span> <span class="n">e</span><span class="p">)</span> <span class="p">{</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">cerr</span> <span class="o">&lt;&lt;</span> <span class="n">e</span><span class="p">.</span><span class="n">what</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+    <span class="p">}</span>
+
+    <span class="k">return</span> <span class="mi">1</span><span class="p">;</span>
+<span class="p">}</span>
+</pre></div>
+
+<p><a href="flow_control.cpp">Download this file</a></p>

http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/input/releases/qpid-proton-0.13.0/proton/cpp/examples/helloworld.cpp
----------------------------------------------------------------------
diff --git a/input/releases/qpid-proton-0.13.0/proton/cpp/examples/helloworld.cpp b/input/releases/qpid-proton-0.13.0/proton/cpp/examples/helloworld.cpp
new file mode 100644
index 0000000..fa95af0
--- /dev/null
+++ b/input/releases/qpid-proton-0.13.0/proton/cpp/examples/helloworld.cpp
@@ -0,0 +1,73 @@
+/*
+ *
+ * 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.
+ *
+ */
+
+#include <proton/connection.hpp>
+#include <proton/default_container.hpp>
+#include <proton/delivery.hpp>
+#include <proton/messaging_handler.hpp>
+#include <proton/url.hpp>
+
+#include <iostream>
+
+#include "fake_cpp11.hpp"
+
+class hello_world : public proton::messaging_handler {
+  private:
+    proton::url url;
+
+  public:
+    hello_world(const std::string& u) : url(u) {}
+
+    void on_container_start(proton::container& c) OVERRIDE {
+        c.connect(url);
+    }
+
+    void on_connection_open(proton::connection& c) OVERRIDE {
+        c.open_receiver(url.path());
+        c.open_sender(url.path());
+    }
+
+    void on_sendable(proton::sender &s) OVERRIDE {
+        proton::message m("Hello World!");
+        s.send(m);
+        s.close();
+    }
+
+    void on_message(proton::delivery &d, proton::message &m) OVERRIDE {
+        std::cout << m.body() << std::endl;
+        d.connection().close();
+    }
+};
+
+int main(int argc, char **argv) {
+    try {
+        std::string url = argc > 1 ? argv[1] : "127.0.0.1:5672/examples";
+
+        hello_world hw(url);
+        proton::default_container(hw).run();
+
+        return 0;
+    } catch (const std::exception& e) {
+        std::cerr << e.what() << std::endl;
+    }
+
+    return 1;
+}

http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/input/releases/qpid-proton-0.13.0/proton/cpp/examples/helloworld.cpp.html.in
----------------------------------------------------------------------
diff --git a/input/releases/qpid-proton-0.13.0/proton/cpp/examples/helloworld.cpp.html.in b/input/releases/qpid-proton-0.13.0/proton/cpp/examples/helloworld.cpp.html.in
new file mode 100644
index 0000000..8b47462
--- /dev/null
+++ b/input/releases/qpid-proton-0.13.0/proton/cpp/examples/helloworld.cpp.html.in
@@ -0,0 +1,57 @@
+
+<h1>helloworld.cpp</h1>
+<div class="highlight"><pre><span></span><span class="cp">#include</span> <span class="cpf">&lt;proton/connection.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/default_container.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/delivery.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/messaging_handler.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/url.hpp&gt;</span><span class="cp"></span>
+
+<span class="cp">#include</span> <span class="cpf">&lt;iostream&gt;</span><span class="cp"></span>
+
+<span class="cp">#include</span> <span class="cpf">&quot;fake_cpp11.hpp&quot;</span><span class="cp"></span>
+
+<span class="k">class</span> <span class="nc">hello_world</span> <span class="o">:</span> <span class="k">public</span> <span class="n">proton</span><span class="o">::</span><span class="n">messaging_handler</span> <span class="p">{</span>
+  <span class="k">private</span><span class="o">:</span>
+    <span class="n">proton</span><span class="o">::</span><span class="n">url</span> <span class="n">url</span><span class="p">;</span>
+
+  <span class="k">public</span><span class="o">:</span>
+    <span class="n">hello_world</span><span class="p">(</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="o">&amp;</span> <span class="n">u</span><span class="p">)</span> <span class="o">:</span> <span class="n">url</span><span class="p">(</span><span class="n">u</span><span class="p">)</span> <span class="p">{}</span>
+
+    <span class="kt">void</span> <span class="n">on_container_start</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">container</span><span class="o">&amp;</span> <span class="n">c</span><span class="p">)</span> <span class="n">OVERRIDE</span> <span class="p">{</span>
+        <span class="n">c</span><span class="p">.</span><span class="n">connect</span><span class="p">(</span><span class="n">url</span><span class="p">);</span>
+    <span class="p">}</span>
+
+    <span class="kt">void</span> <span class="n">on_connection_open</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">connection</span><span class="o">&amp;</span> <span class="n">c</span><span class="p">)</span> <span class="n">OVERRIDE</span> <span class="p">{</span>
+        <span class="n">c</span><span class="p">.</span><span class="n">open_receiver</span><span class="p">(</span><span class="n">url</span><span class="p">.</span><span class="n">path</span><span class="p">());</span>
+        <span class="n">c</span><span class="p">.</span><span class="n">open_sender</span><span class="p">(</span><span class="n">url</span><span class="p">.</span><span class="n">path</span><span class="p">());</span>
+    <span class="p">}</span>
+
+    <span class="kt">void</span> <span class="n">on_sendable</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">sender</span> <span class="o">&amp;</span><span class="n">s</span><span class="p">)</span> <span class="n">OVERRIDE</span> <span class="p">{</span>
+        <span class="n">proton</span><span class="o">::</span><span class="n">message</span> <span class="n">m</span><span class="p">(</span><span class="s">&quot;Hello World!&quot;</span><span class="p">);</span>
+        <span class="n">s</span><span class="p">.</span><span class="n">send</span><span class="p">(</span><span class="n">m</span><span class="p">);</span>
+        <span class="n">s</span><span class="p">.</span><span class="n">close</span><span class="p">();</span>
+    <span class="p">}</span>
+
+    <span class="kt">void</span> <span class="n">on_message</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">delivery</span> <span class="o">&amp;</span><span class="n">d</span><span class="p">,</span> <span class="n">proton</span><span class="o">::</span><span class="n">message</span> <span class="o">&amp;</span><span class="n">m</span><span class="p">)</span> <span class="n">OVERRIDE</span> <span class="p">{</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="n">m</span><span class="p">.</span><span class="n">body</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+        <span class="n">d</span><span class="p">.</span><span class="n">connection</span><span class="p">().</span><span class="n">close</span><span class="p">();</span>
+    <span class="p">}</span>
+<span class="p">};</span>
+
+<span class="kt">int</span> <span class="nf">main</span><span class="p">(</span><span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">**</span><span class="n">argv</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">try</span> <span class="p">{</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">url</span> <span class="o">=</span> <span class="n">argc</span> <span class="o">&gt;</span> <span class="mi">1</span> <span class="o">?</span> <span class="n">argv</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">:</span> <span class="s">&quot;127.0.0.1:5672/examples&quot;</span><span class="p">;</span>
+
+        <span class="n">hello_world</span> <span class="n">hw</span><span class="p">(</span><span class="n">url</span><span class="p">);</span>
+        <span class="n">proton</span><span class="o">::</span><span class="n">default_container</span><span class="p">(</span><span class="n">hw</span><span class="p">).</span><span class="n">run</span><span class="p">();</span>
+
+        <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">catch</span> <span class="p">(</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">exception</span><span class="o">&amp;</span> <span class="n">e</span><span class="p">)</span> <span class="p">{</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">cerr</span> <span class="o">&lt;&lt;</span> <span class="n">e</span><span class="p">.</span><span class="n">what</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+    <span class="p">}</span>
+
+    <span class="k">return</span> <span class="mi">1</span><span class="p">;</span>
+<span class="p">}</span>
+</pre></div>
+
+<p><a href="helloworld.cpp">Download this file</a></p>

http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/input/releases/qpid-proton-0.13.0/proton/cpp/examples/helloworld_direct.cpp
----------------------------------------------------------------------
diff --git a/input/releases/qpid-proton-0.13.0/proton/cpp/examples/helloworld_direct.cpp b/input/releases/qpid-proton-0.13.0/proton/cpp/examples/helloworld_direct.cpp
new file mode 100644
index 0000000..5421e62
--- /dev/null
+++ b/input/releases/qpid-proton-0.13.0/proton/cpp/examples/helloworld_direct.cpp
@@ -0,0 +1,79 @@
+/*
+ *
+ * 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.
+ *
+ */
+
+#include <proton/connection.hpp>
+#include <proton/default_container.hpp>
+#include <proton/messaging_handler.hpp>
+#include <proton/sender.hpp>
+#include <proton/tracker.hpp>
+
+#include <iostream>
+
+#include "fake_cpp11.hpp"
+
+class hello_world_direct : public proton::messaging_handler {
+  private:
+    std::string url;
+    proton::listener listener;
+
+  public:
+    hello_world_direct(const std::string& u) : url(u) {}
+
+    void on_container_start(proton::container &c) OVERRIDE {
+        listener = c.listen(url);
+        c.open_sender(url);
+    }
+
+    void on_sendable(proton::sender &s) OVERRIDE {
+        proton::message m("Hello World!");
+        s.send(m);
+        s.close();
+    }
+
+    void on_message(proton::delivery &, proton::message &m) OVERRIDE {
+        std::cout << m.body() << std::endl;
+    }
+
+    void on_tracker_accept(proton::tracker &t) OVERRIDE {
+        t.connection().close();
+    }
+
+    void on_connection_close(proton::connection&) OVERRIDE {
+        listener.stop();
+    }
+};
+
+int main(int argc, char **argv) {
+    try {
+        // Pick an "unusual" port since we are going to be talking to
+        // ourselves, not a broker.
+        std::string url = argc > 1 ? argv[1] : "127.0.0.1:8888/examples";
+
+        hello_world_direct hwd(url);
+        proton::default_container(hwd).run();
+
+        return 0;
+    } catch (const std::exception& e) {
+        std::cerr << e.what() << std::endl;
+    }
+
+    return 1;
+}

http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/input/releases/qpid-proton-0.13.0/proton/cpp/examples/helloworld_direct.cpp.html.in
----------------------------------------------------------------------
diff --git a/input/releases/qpid-proton-0.13.0/proton/cpp/examples/helloworld_direct.cpp.html.in b/input/releases/qpid-proton-0.13.0/proton/cpp/examples/helloworld_direct.cpp.html.in
new file mode 100644
index 0000000..c9a02cb
--- /dev/null
+++ b/input/releases/qpid-proton-0.13.0/proton/cpp/examples/helloworld_direct.cpp.html.in
@@ -0,0 +1,63 @@
+
+<h1>helloworld_direct.cpp</h1>
+<div class="highlight"><pre><span></span><span class="cp">#include</span> <span class="cpf">&lt;proton/connection.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/default_container.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/messaging_handler.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/sender.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/tracker.hpp&gt;</span><span class="cp"></span>
+
+<span class="cp">#include</span> <span class="cpf">&lt;iostream&gt;</span><span class="cp"></span>
+
+<span class="cp">#include</span> <span class="cpf">&quot;fake_cpp11.hpp&quot;</span><span class="cp"></span>
+
+<span class="k">class</span> <span class="nc">hello_world_direct</span> <span class="o">:</span> <span class="k">public</span> <span class="n">proton</span><span class="o">::</span><span class="n">messaging_handler</span> <span class="p">{</span>
+  <span class="k">private</span><span class="o">:</span>
+    <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">url</span><span class="p">;</span>
+    <span class="n">proton</span><span class="o">::</span><span class="n">listener</span> <span class="n">listener</span><span class="p">;</span>
+
+  <span class="k">public</span><span class="o">:</span>
+    <span class="n">hello_world_direct</span><span class="p">(</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="o">&amp;</span> <span class="n">u</span><span class="p">)</span> <span class="o">:</span> <span class="n">url</span><span class="p">(</span><span class="n">u</span><span class="p">)</span> <span class="p">{}</span>
+
+    <span class="kt">void</span> <span class="n">on_container_start</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">container</span> <span class="o">&amp;</span><span class="n">c</span><span class="p">)</span> <span class="n">OVERRIDE</span> <span class="p">{</span>
+        <span class="n">listener</span> <span class="o">=</span> <span class="n">c</span><span class="p">.</span><span class="n">listen</span><span class="p">(</span><span class="n">url</span><span class="p">);</span>
+        <span class="n">c</span><span class="p">.</span><span class="n">open_sender</span><span class="p">(</span><span class="n">url</span><span class="p">);</span>
+    <span class="p">}</span>
+
+    <span class="kt">void</span> <span class="n">on_sendable</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">sender</span> <span class="o">&amp;</span><span class="n">s</span><span class="p">)</span> <span class="n">OVERRIDE</span> <span class="p">{</span>
+        <span class="n">proton</span><span class="o">::</span><span class="n">message</span> <span class="n">m</span><span class="p">(</span><span class="s">&quot;Hello World!&quot;</span><span class="p">);</span>
+        <span class="n">s</span><span class="p">.</span><span class="n">send</span><span class="p">(</span><span class="n">m</span><span class="p">);</span>
+        <span class="n">s</span><span class="p">.</span><span class="n">close</span><span class="p">();</span>
+    <span class="p">}</span>
+
+    <span class="kt">void</span> <span class="n">on_message</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">delivery</span> <span class="o">&amp;</span><span class="p">,</span> <span class="n">proton</span><span class="o">::</span><span class="n">message</span> <span class="o">&amp;</span><span class="n">m</span><span class="p">)</span> <span class="n">OVERRIDE</span> <span class="p">{</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="n">m</span><span class="p">.</span><span class="n">body</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+    <span class="p">}</span>
+
+    <span class="kt">void</span> <span class="n">on_tracker_accept</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">tracker</span> <span class="o">&amp;</span><span class="n">t</span><span class="p">)</span> <span class="n">OVERRIDE</span> <span class="p">{</span>
+        <span class="n">t</span><span class="p">.</span><span class="n">connection</span><span class="p">().</span><span class="n">close</span><span class="p">();</span>
+    <span class="p">}</span>
+
+    <span class="kt">void</span> <span class="n">on_connection_close</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">connection</span><span class="o">&amp;</span><span class="p">)</span> <span class="n">OVERRIDE</span> <span class="p">{</span>
+        <span class="n">listener</span><span class="p">.</span><span class="n">stop</span><span class="p">();</span>
+    <span class="p">}</span>
+<span class="p">};</span>
+
+<span class="kt">int</span> <span class="nf">main</span><span class="p">(</span><span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">**</span><span class="n">argv</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">try</span> <span class="p">{</span>
+        <span class="c1">// Pick an &quot;unusual&quot; port since we are going to be talking to</span>
+        <span class="c1">// ourselves, not a broker.</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">url</span> <span class="o">=</span> <span class="n">argc</span> <span class="o">&gt;</span> <span class="mi">1</span> <span class="o">?</span> <span class="n">argv</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">:</span> <span class="s">&quot;127.0.0.1:8888/examples&quot;</span><span class="p">;</span>
+
+        <span class="n">hello_world_direct</span> <span class="n">hwd</span><span class="p">(</span><span class="n">url</span><span class="p">);</span>
+        <span class="n">proton</span><span class="o">::</span><span class="n">default_container</span><span class="p">(</span><span class="n">hwd</span><span class="p">).</span><span class="n">run</span><span class="p">();</span>
+
+        <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">catch</span> <span class="p">(</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">exception</span><span class="o">&amp;</span> <span class="n">e</span><span class="p">)</span> <span class="p">{</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">cerr</span> <span class="o">&lt;&lt;</span> <span class="n">e</span><span class="p">.</span><span class="n">what</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+    <span class="p">}</span>
+
+    <span class="k">return</span> <span class="mi">1</span><span class="p">;</span>
+<span class="p">}</span>
+</pre></div>
+
+<p><a href="helloworld_direct.cpp">Download this file</a></p>

http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/input/releases/qpid-proton-0.13.0/proton/cpp/examples/index.md
----------------------------------------------------------------------
diff --git a/input/releases/qpid-proton-0.13.0/proton/cpp/examples/index.md b/input/releases/qpid-proton-0.13.0/proton/cpp/examples/index.md
new file mode 100644
index 0000000..1245466
--- /dev/null
+++ b/input/releases/qpid-proton-0.13.0/proton/cpp/examples/index.md
@@ -0,0 +1,30 @@
+
+# Proton C++ Examples
+
+## Example files
+
+ - [broker.cpp](broker.cpp.html)
+ - [broker.hpp](broker.hpp.html)
+ - [client.cpp](client.cpp.html)
+ - [connection_options.cpp](connection_options.cpp.html)
+ - [direct_recv.cpp](direct_recv.cpp.html)
+ - [direct_send.cpp](direct_send.cpp.html)
+ - [encode_decode.cpp](encode_decode.cpp.html)
+ - [fake_cpp11.hpp](fake_cpp11.hpp.html)
+ - [flow_control.cpp](flow_control.cpp.html)
+ - [helloworld.cpp](helloworld.cpp.html)
+ - [helloworld_direct.cpp](helloworld_direct.cpp.html)
+ - [options.hpp](options.hpp.html)
+ - [queue_browser.cpp](queue_browser.cpp.html)
+ - [selected_recv.cpp](selected_recv.cpp.html)
+ - [server.cpp](server.cpp.html)
+ - [server_direct.cpp](server_direct.cpp.html)
+ - [simple_recv.cpp](simple_recv.cpp.html)
+ - [simple_send.cpp](simple_send.cpp.html)
+ - [ssl.cpp](ssl.cpp.html)
+ - [ssl_client_cert.cpp](ssl_client_cert.cpp.html)
+
+## More information
+
+ - [README](https://github.com/apache/qpid-proton/tree/0.13.0/examples/cpp/README.hpp)
+ - [Source location](https://github.com/apache/qpid-proton/tree/0.13.0/examples/cpp)

http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/input/releases/qpid-proton-0.13.0/proton/cpp/examples/options.hpp
----------------------------------------------------------------------
diff --git a/input/releases/qpid-proton-0.13.0/proton/cpp/examples/options.hpp b/input/releases/qpid-proton-0.13.0/proton/cpp/examples/options.hpp
new file mode 100644
index 0000000..dab1bc2
--- /dev/null
+++ b/input/releases/qpid-proton-0.13.0/proton/cpp/examples/options.hpp
@@ -0,0 +1,175 @@
+#ifndef OPTIONS_HPP
+#define OPTIONS_HPP
+/*
+ * 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.
+ */
+
+#include <string>
+#include <sstream>
+#include <ostream>
+#include <vector>
+#include <stdexcept>
+
+namespace example {
+/** bad_option is thrown for option parsing errors */
+struct bad_option : public std::runtime_error {
+    bad_option(const std::string& s) : std::runtime_error(s) {}
+};
+
+/** Simple command-line option parser for example programs */
+class options {
+  public:
+
+    options(int argc, char const * const * argv) : argc_(argc), argv_(argv), prog_(argv[0]), help_() {
+        size_t slash = prog_.find_last_of("/\\");
+        if (slash != std::string::npos)
+            prog_ = prog_.substr(slash+1); // Extract prog name from path
+        add_flag(help_, 'h', "help", "Print the help message");
+    }
+
+    ~options() {
+        for (opts::iterator i = opts_.begin(); i != opts_.end(); ++i)
+            delete *i;
+    }
+
+    /** Updates value when parse() is called if option is present with a value. */
+    template<class T>
+    void add_value(T& value, char short_name, const std::string& long_name, const std::string& description, const std::string var) {
+        opts_.push_back(new option_value<T>(value, short_name, long_name, description, var));
+    }
+
+    /** Sets flag when parse() is called if option is present. */
+    void add_flag(bool& flag, char short_name, const std::string& long_name, const std::string& description) {
+        opts_.push_back(new option_flag(flag, short_name, long_name, description));
+    }
+
+    /** Parse the command line, return the index of the first non-option argument.
+     *@throws bad_option if there is a parsing error or unknown option.
+     */
+    int parse() {
+        int arg = 1;
+        for (; arg < argc_ && argv_[arg][0] == '-'; ++arg) {
+            opts::iterator i = opts_.begin();
+            while (i != opts_.end() && !(*i)->parse(argc_, argv_, arg))
+                ++i;
+            if (i == opts_.end())
+                throw bad_option(std::string("unknown option ") + argv_[arg]);
+        }
+        if (help_) throw bad_option("");
+        return arg;
+    }
+
+    /** Print a usage message */
+  friend std::ostream& operator<<(std::ostream& os, const options& op) {
+      os << std::endl << "usage: " << op.prog_ << " [options]" << std::endl;
+      os << std::endl << "options:" << std::endl;
+      for (opts::const_iterator i = op.opts_.begin(); i < op.opts_.end(); ++i)
+          os << **i << std::endl;
+      return os;
+  }
+
+ private:
+    class option {
+      public:
+        option(char s, const std::string& l, const std::string& d, const std::string v) :
+            short_(std::string("-") + s), long_("--" + l), desc_(d), var_(v) {}
+        virtual ~option() {}
+
+        virtual bool parse(int argc, char const * const * argv, int &i) = 0;
+        virtual void print_default(std::ostream&) const {}
+
+      friend std::ostream& operator<<(std::ostream& os, const option& op) {
+          os << "  " << op.short_;
+          if (!op.var_.empty()) os << " " << op.var_;
+          os << ", " << op.long_;
+          if (!op.var_.empty()) os << "=" << op.var_;
+          os << std::endl << "        " << op.desc_;
+          op.print_default(os);
+          return os;
+      }
+
+      protected:
+        std::string short_, long_, desc_, var_;
+    };
+
+    template <class T>
+    class option_value : public option {
+      public:
+        option_value(T& value, char s, const std::string& l, const std::string& d, const std::string& v) :
+            option(s, l, d, v), value_(value) {}
+
+        bool parse(int argc, char const * const * argv, int &i) {
+            std::string arg(argv[i]);
+            if (arg == short_ || arg == long_) {
+                if (i < argc-1) {
+                    set_value(arg, argv[++i]);
+                    return true;
+                } else {
+                    throw bad_option("missing value for " + arg);
+                }
+            }
+            if (arg.compare(0, long_.size(), long_) == 0 && arg[long_.size()] == '=' ) {
+                set_value(long_, arg.substr(long_.size()+1));
+                return true;
+            }
+            return false;
+        }
+
+        virtual void print_default(std::ostream& os) const { os << " (default " << value_ << ")"; }
+
+        void set_value(const std::string& opt, const std::string& s) {
+            std::istringstream is(s);
+            is >> value_;
+            if (is.fail() || is.bad())
+                throw bad_option("bad value for " + opt + ": " + s);
+        }
+
+      private:
+        T& value_;
+    };
+
+    class option_flag: public option {
+      public:
+        option_flag(bool& flag, const char s, const std::string& l, const std::string& d) :
+            option(s, l, d, ""), flag_(flag)
+        { flag_ = false; }
+
+        bool parse(int /*argc*/, char const * const * argv, int &i) {
+            if (argv[i] == short_ || argv[i] == long_) {
+                flag_ = true;
+                return true;
+            } else {
+                return false;
+            }
+        }
+
+      private:
+        bool &flag_;
+    };
+
+    typedef std::vector<option*> opts;
+
+    int argc_;
+    char const * const * argv_;
+    std::string prog_;
+    opts opts_;
+    bool help_;
+};
+}
+
+#endif // OPTIONS_HPP


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


[17/26] qpid-site git commit: QPID-7350: Examples that should have gone with the previous commit

Posted by jr...@apache.org.
http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/content/releases/qpid-proton-0.13.0/proton/python/examples/db_common.py.html
----------------------------------------------------------------------
diff --git a/content/releases/qpid-proton-0.13.0/proton/python/examples/db_common.py.html b/content/releases/qpid-proton-0.13.0/proton/python/examples/db_common.py.html
new file mode 100644
index 0000000..00b739a
--- /dev/null
+++ b/content/releases/qpid-proton-0.13.0/proton/python/examples/db_common.py.html
@@ -0,0 +1,247 @@
+<!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>db_common.py - 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/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;">
+        <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-proton-0.13.0/index.html">Qpid Proton 0.13.0</a></li><li><a href="/releases/qpid-proton-0.13.0/proton/python/examples/index.html">Proton Python Examples</a></li><li>db_common.py</li></ul>
+
+        <div id="-middle-content">
+          
+<h1>db_common.py</h1>
+<div class="highlight"><pre><span></span><span class="k">try</span><span class="p">:</span>
+    <span class="kn">import</span> <span class="nn">Queue</span>
+<span class="k">except</span><span class="p">:</span>
+    <span class="kn">import</span> <span class="nn">queue</span> <span class="kn">as</span> <span class="nn">Queue</span>
+
+<span class="kn">import</span> <span class="nn">sqlite3</span>
+<span class="kn">import</span> <span class="nn">threading</span>
+
+<span class="k">class</span> <span class="nc">Db</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
+    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">db</span><span class="p">,</span> <span class="n">injector</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">db</span> <span class="o">=</span> <span class="n">db</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">injector</span> <span class="o">=</span> <span class="n">injector</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">tasks</span> <span class="o">=</span> <span class="n">Queue</span><span class="o">.</span><span class="n">Queue</span><span class="p">()</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">position</span> <span class="o">=</span> <span class="bp">None</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">pending_events</span> <span class="o">=</span> <span class="p">[]</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">running</span> <span class="o">=</span> <span class="bp">True</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">thread</span> <span class="o">=</span> <span class="n">threading</span><span class="o">.</span><span class="n">Thread</span><span class="p">(</span><span class="n">target</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_process</span><span class="p">)</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">thread</span><span class="o">.</span><span class="n">daemon</span><span class="o">=</span><span class="bp">True</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">thread</span><span class="o">.</span><span class="n">start</span><span class="p">()</span>
+
+    <span class="k">def</span> <span class="nf">close</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">tasks</span><span class="o">.</span><span class="n">put</span><span class="p">(</span><span class="k">lambda</span> <span class="n">conn</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_close</span><span class="p">())</span>
+
+    <span class="k">def</span> <span class="nf">reset</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">tasks</span><span class="o">.</span><span class="n">put</span><span class="p">(</span><span class="k">lambda</span> <span class="n">conn</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_reset</span><span class="p">())</span>
+
+    <span class="k">def</span> <span class="nf">load</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">records</span><span class="p">,</span> <span class="n">event</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">tasks</span><span class="o">.</span><span class="n">put</span><span class="p">(</span><span class="k">lambda</span> <span class="n">conn</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_load</span><span class="p">(</span><span class="n">conn</span><span class="p">,</span> <span class="n">records</span><span class="p">,</span> <span class="n">event</span><span class="p">))</span>
+
+    <span class="k">def</span> <span class="nf">get_id</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">tasks</span><span class="o">.</span><span class="n">put</span><span class="p">(</span><span class="k">lambda</span> <span class="n">conn</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_get_id</span><span class="p">(</span><span class="n">conn</span><span class="p">,</span> <span class="n">event</span><span class="p">))</span>
+
+    <span class="k">def</span> <span class="nf">insert</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="nb">id</span><span class="p">,</span> <span class="n">data</span><span class="p">,</span> <span class="n">event</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">tasks</span><span class="o">.</span><span class="n">put</span><span class="p">(</span><span class="k">lambda</span> <span class="n">conn</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_insert</span><span class="p">(</span><span class="n">conn</span><span class="p">,</span> <span class="nb">id</span><span class="p">,</span> <span class="n">data</span><span class="p">,</span> <span class="n">event</span><span class="p">))</span>
+
+    <span class="k">def</span> <span class="nf">delete</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="nb">id</span><span class="p">,</span> <span class="n">event</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">tasks</span><span class="o">.</span><span class="n">put</span><span class="p">(</span><span class="k">lambda</span> <span class="n">conn</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_delete</span><span class="p">(</span><span class="n">conn</span><span class="p">,</span> <span class="nb">id</span><span class="p">,</span> <span class="n">event</span><span class="p">))</span>
+
+    <span class="k">def</span> <span class="nf">_reset</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">ignored</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">position</span> <span class="o">=</span> <span class="bp">None</span>
+
+    <span class="k">def</span> <span class="nf">_close</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">ignored</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">running</span> <span class="o">=</span> <span class="bp">False</span>
+
+    <span class="k">def</span> <span class="nf">_get_id</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">conn</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="n">cursor</span> <span class="o">=</span> <span class="n">conn</span><span class="o">.</span><span class="n">execute</span><span class="p">(</span><span class="s2">&quot;SELECT * FROM records ORDER BY id DESC&quot;</span><span class="p">)</span>
+        <span class="n">row</span> <span class="o">=</span> <span class="n">cursor</span><span class="o">.</span><span class="n">fetchone</span><span class="p">()</span>
+        <span class="k">if</span> <span class="n">event</span><span class="p">:</span>
+            <span class="k">if</span> <span class="n">row</span><span class="p">:</span>
+                <span class="n">event</span><span class="o">.</span><span class="n">id</span> <span class="o">=</span> <span class="n">row</span><span class="p">[</span><span class="s1">&#39;id&#39;</span><span class="p">]</span>
+            <span class="k">else</span><span class="p">:</span>
+                <span class="n">event</span><span class="o">.</span><span class="n">id</span> <span class="o">=</span> <span class="mi">0</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">injector</span><span class="o">.</span><span class="n">trigger</span><span class="p">(</span><span class="n">event</span><span class="p">)</span>
+
+    <span class="k">def</span> <span class="nf">_load</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">conn</span><span class="p">,</span> <span class="n">records</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">position</span><span class="p">:</span>
+            <span class="n">cursor</span> <span class="o">=</span> <span class="n">conn</span><span class="o">.</span><span class="n">execute</span><span class="p">(</span><span class="s2">&quot;SELECT * FROM records WHERE id &gt; ? ORDER BY id&quot;</span><span class="p">,</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">position</span><span class="p">,))</span>
+        <span class="k">else</span><span class="p">:</span>
+            <span class="n">cursor</span> <span class="o">=</span> <span class="n">conn</span><span class="o">.</span><span class="n">execute</span><span class="p">(</span><span class="s2">&quot;SELECT * FROM records ORDER BY id&quot;</span><span class="p">)</span>
+        <span class="k">while</span> <span class="ow">not</span> <span class="n">records</span><span class="o">.</span><span class="n">full</span><span class="p">():</span>
+            <span class="n">row</span> <span class="o">=</span> <span class="n">cursor</span><span class="o">.</span><span class="n">fetchone</span><span class="p">()</span>
+            <span class="k">if</span> <span class="n">row</span><span class="p">:</span>
+                <span class="bp">self</span><span class="o">.</span><span class="n">position</span> <span class="o">=</span> <span class="n">row</span><span class="p">[</span><span class="s1">&#39;id&#39;</span><span class="p">]</span>
+                <span class="n">records</span><span class="o">.</span><span class="n">put</span><span class="p">(</span><span class="nb">dict</span><span class="p">(</span><span class="n">row</span><span class="p">))</span>
+            <span class="k">else</span><span class="p">:</span>
+                <span class="k">break</span>
+        <span class="k">if</span> <span class="n">event</span><span class="p">:</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">injector</span><span class="o">.</span><span class="n">trigger</span><span class="p">(</span><span class="n">event</span><span class="p">)</span>
+
+    <span class="k">def</span> <span class="nf">_insert</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">conn</span><span class="p">,</span> <span class="nb">id</span><span class="p">,</span> <span class="n">data</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="k">if</span> <span class="nb">id</span><span class="p">:</span>
+            <span class="n">conn</span><span class="o">.</span><span class="n">execute</span><span class="p">(</span><span class="s2">&quot;INSERT INTO records(id, description) VALUES (?, ?)&quot;</span><span class="p">,</span> <span class="p">(</span><span class="nb">id</span><span class="p">,</span> <span class="n">data</span><span class="p">))</span>
+        <span class="k">else</span><span class="p">:</span>
+            <span class="n">conn</span><span class="o">.</span><span class="n">execute</span><span class="p">(</span><span class="s2">&quot;INSERT INTO records(description) VALUES (?)&quot;</span><span class="p">,</span> <span class="p">(</span><span class="n">data</span><span class="p">,))</span>
+        <span class="k">if</span> <span class="n">event</span><span class="p">:</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">pending_events</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">event</span><span class="p">)</span>
+
+    <span class="k">def</span> <span class="nf">_delete</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">conn</span><span class="p">,</span> <span class="nb">id</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="n">conn</span><span class="o">.</span><span class="n">execute</span><span class="p">(</span><span class="s2">&quot;DELETE FROM records WHERE id=?&quot;</span><span class="p">,</span> <span class="p">(</span><span class="nb">id</span><span class="p">,))</span>
+        <span class="k">if</span> <span class="n">event</span><span class="p">:</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">pending_events</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">event</span><span class="p">)</span>
+
+    <span class="k">def</span> <span class="nf">_process</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="n">conn</span> <span class="o">=</span> <span class="n">sqlite3</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">db</span><span class="p">)</span>
+        <span class="n">conn</span><span class="o">.</span><span class="n">row_factory</span> <span class="o">=</span> <span class="n">sqlite3</span><span class="o">.</span><span class="n">Row</span>
+        <span class="k">with</span> <span class="n">conn</span><span class="p">:</span>
+            <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">running</span><span class="p">:</span>
+                <span class="n">f</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">tasks</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="bp">True</span><span class="p">)</span>
+                <span class="k">try</span><span class="p">:</span>
+                    <span class="k">while</span> <span class="bp">True</span><span class="p">:</span>
+                        <span class="n">f</span><span class="p">(</span><span class="n">conn</span><span class="p">)</span>
+                        <span class="n">f</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">tasks</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="bp">False</span><span class="p">)</span>
+                <span class="k">except</span> <span class="n">Queue</span><span class="o">.</span><span class="n">Empty</span><span class="p">:</span> <span class="k">pass</span>
+                <span class="n">conn</span><span class="o">.</span><span class="n">commit</span><span class="p">()</span>
+                <span class="k">for</span> <span class="n">event</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">pending_events</span><span class="p">:</span>
+                    <span class="bp">self</span><span class="o">.</span><span class="n">injector</span><span class="o">.</span><span class="n">trigger</span><span class="p">(</span><span class="n">event</span><span class="p">)</span>
+                <span class="bp">self</span><span class="o">.</span><span class="n">pending_events</span> <span class="o">=</span> <span class="p">[]</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">injector</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
+</pre></div>
+
+<p><a href="db_common.py">Download this file</a></p>
+
+
+          <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/75ca8b14/content/releases/qpid-proton-0.13.0/proton/python/examples/db_ctrl.py
----------------------------------------------------------------------
diff --git a/content/releases/qpid-proton-0.13.0/proton/python/examples/db_ctrl.py b/content/releases/qpid-proton-0.13.0/proton/python/examples/db_ctrl.py
new file mode 100755
index 0000000..04770ce
--- /dev/null
+++ b/content/releases/qpid-proton-0.13.0/proton/python/examples/db_ctrl.py
@@ -0,0 +1,47 @@
+#!/usr/bin/env python
+#
+# 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.
+#
+
+from __future__ import print_function
+import sqlite3
+import sys
+
+if len(sys.argv) < 3:
+    print("Usage: %s [init|insert|list] db" % sys.argv[0])
+else:
+    conn = sqlite3.connect(sys.argv[2])
+    with conn:
+        if sys.argv[1] == "init":
+            conn.execute("DROP TABLE IF EXISTS records")
+            conn.execute("CREATE TABLE records(id INTEGER PRIMARY KEY AUTOINCREMENT, description TEXT)")
+            conn.commit()
+        elif sys.argv[1] == "list":
+            cursor = conn.cursor()
+            cursor.execute("SELECT * FROM records")
+            rows = cursor.fetchall()
+            for r in rows:
+                print(r)
+        elif sys.argv[1] == "insert":
+            while True:
+                l = sys.stdin.readline()
+                if not l: break
+                conn.execute("INSERT INTO records(description) VALUES (?)", (l.rstrip(),))
+            conn.commit()
+        else:
+            print("Unrecognised command: %s" %  sys.argv[1])

http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/content/releases/qpid-proton-0.13.0/proton/python/examples/db_ctrl.py.html
----------------------------------------------------------------------
diff --git a/content/releases/qpid-proton-0.13.0/proton/python/examples/db_ctrl.py.html b/content/releases/qpid-proton-0.13.0/proton/python/examples/db_ctrl.py.html
new file mode 100644
index 0000000..5213b16
--- /dev/null
+++ b/content/releases/qpid-proton-0.13.0/proton/python/examples/db_ctrl.py.html
@@ -0,0 +1,176 @@
+<!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>db_ctrl.py - 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/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;">
+        <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-proton-0.13.0/index.html">Qpid Proton 0.13.0</a></li><li><a href="/releases/qpid-proton-0.13.0/proton/python/examples/index.html">Proton Python Examples</a></li><li>db_ctrl.py</li></ul>
+
+        <div id="-middle-content">
+          
+<h1>db_ctrl.py</h1>
+<div class="highlight"><pre><span></span><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">sqlite3</span>
+<span class="kn">import</span> <span class="nn">sys</span>
+
+<span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">sys</span><span class="o">.</span><span class="n">argv</span><span class="p">)</span> <span class="o">&lt;</span> <span class="mi">3</span><span class="p">:</span>
+    <span class="k">print</span><span class="p">(</span><span class="s2">&quot;Usage: </span><span class="si">%s</span><span class="s2"> [init|insert|list] db&quot;</span> <span class="o">%</span> <span class="n">sys</span><span class="o">.</span><span class="n">argv</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
+<span class="k">else</span><span class="p">:</span>
+    <span class="n">conn</span> <span class="o">=</span> <span class="n">sqlite3</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="n">sys</span><span class="o">.</span><span class="n">argv</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span>
+    <span class="k">with</span> <span class="n">conn</span><span class="p">:</span>
+        <span class="k">if</span> <span class="n">sys</span><span class="o">.</span><span class="n">argv</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">==</span> <span class="s2">&quot;init&quot;</span><span class="p">:</span>
+            <span class="n">conn</span><span class="o">.</span><span class="n">execute</span><span class="p">(</span><span class="s2">&quot;DROP TABLE IF EXISTS records&quot;</span><span class="p">)</span>
+            <span class="n">conn</span><span class="o">.</span><span class="n">execute</span><span class="p">(</span><span class="s2">&quot;CREATE TABLE records(id INTEGER PRIMARY KEY AUTOINCREMENT, description TEXT)&quot;</span><span class="p">)</span>
+            <span class="n">conn</span><span class="o">.</span><span class="n">commit</span><span class="p">()</span>
+        <span class="k">elif</span> <span class="n">sys</span><span class="o">.</span><span class="n">argv</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">==</span> <span class="s2">&quot;list&quot;</span><span class="p">:</span>
+            <span class="n">cursor</span> <span class="o">=</span> <span class="n">conn</span><span class="o">.</span><span class="n">cursor</span><span class="p">()</span>
+            <span class="n">cursor</span><span class="o">.</span><span class="n">execute</span><span class="p">(</span><span class="s2">&quot;SELECT * FROM records&quot;</span><span class="p">)</span>
+            <span class="n">rows</span> <span class="o">=</span> <span class="n">cursor</span><span class="o">.</span><span class="n">fetchall</span><span class="p">()</span>
+            <span class="k">for</span> <span class="n">r</span> <span class="ow">in</span> <span class="n">rows</span><span class="p">:</span>
+                <span class="k">print</span><span class="p">(</span><span class="n">r</span><span class="p">)</span>
+        <span class="k">elif</span> <span class="n">sys</span><span class="o">.</span><span class="n">argv</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">==</span> <span class="s2">&quot;insert&quot;</span><span class="p">:</span>
+            <span class="k">while</span> <span class="bp">True</span><span class="p">:</span>
+                <span class="n">l</span> <span class="o">=</span> <span class="n">sys</span><span class="o">.</span><span class="n">stdin</span><span class="o">.</span><span class="n">readline</span><span class="p">()</span>
+                <span class="k">if</span> <span class="ow">not</span> <span class="n">l</span><span class="p">:</span> <span class="k">break</span>
+                <span class="n">conn</span><span class="o">.</span><span class="n">execute</span><span class="p">(</span><span class="s2">&quot;INSERT INTO records(description) VALUES (?)&quot;</span><span class="p">,</span> <span class="p">(</span><span class="n">l</span><span class="o">.</span><span class="n">rstrip</span><span class="p">(),))</span>
+            <span class="n">conn</span><span class="o">.</span><span class="n">commit</span><span class="p">()</span>
+        <span class="k">else</span><span class="p">:</span>
+            <span class="k">print</span><span class="p">(</span><span class="s2">&quot;Unrecognised command: </span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span>  <span class="n">sys</span><span class="o">.</span><span class="n">argv</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span>
+</pre></div>
+
+<p><a href="db_ctrl.py">Download this file</a></p>
+
+
+          <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/75ca8b14/content/releases/qpid-proton-0.13.0/proton/python/examples/db_recv.py
----------------------------------------------------------------------
diff --git a/content/releases/qpid-proton-0.13.0/proton/python/examples/db_recv.py b/content/releases/qpid-proton-0.13.0/proton/python/examples/db_recv.py
new file mode 100755
index 0000000..8c79049
--- /dev/null
+++ b/content/releases/qpid-proton-0.13.0/proton/python/examples/db_recv.py
@@ -0,0 +1,80 @@
+#!/usr/bin/env python
+#
+# 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.
+#
+
+from __future__ import print_function
+import optparse
+from proton.handlers import MessagingHandler
+from proton.reactor import ApplicationEvent, Container, EventInjector
+from db_common import Db
+
+class Recv(MessagingHandler):
+    def __init__(self, url, count):
+        super(Recv, self).__init__(auto_accept=False)
+        self.url = url
+        self.delay = 0
+        self.last_id = None
+        self.expected = count
+        self.received = 0
+        self.accepted = 0
+        self.db = Db("dst_db", EventInjector())
+
+    def on_start(self, event):
+        event.container.selectable(self.db.injector)
+        e = ApplicationEvent("id_loaded")
+        e.container = event.container
+        self.db.get_id(e)
+
+    def on_id_loaded(self, event):
+        self.last_id = event.id
+        event.container.create_receiver(self.url)
+
+    def on_record_inserted(self, event):
+        self.accept(event.delivery)
+        self.accepted += 1
+        if self.accepted == self.expected:
+            event.connection.close()
+            self.db.close()
+
+    def on_message(self, event):
+        id = int(event.message.id)
+        if (not self.last_id) or id > self.last_id:
+            if self.received < self.expected:
+                self.received += 1
+                self.last_id = id
+                self.db.insert(id, event.message.body, ApplicationEvent("record_inserted", delivery=event.delivery))
+                print("inserted message %s" % id)
+            else:
+                self.release(event.delivery)
+        else:
+            self.accept(event.delivery)
+
+parser = optparse.OptionParser(usage="usage: %prog [options]")
+parser.add_option("-a", "--address", default="localhost:5672/examples",
+                  help="address from which messages are received (default %default)")
+parser.add_option("-m", "--messages", type="int", default=0,
+                  help="number of messages to receive; 0 receives indefinitely (default %default)")
+opts, args = parser.parse_args()
+
+try:
+    Container(Recv(opts.address, opts.messages)).run()
+except KeyboardInterrupt: pass
+
+
+

http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/content/releases/qpid-proton-0.13.0/proton/python/examples/db_recv.py.html
----------------------------------------------------------------------
diff --git a/content/releases/qpid-proton-0.13.0/proton/python/examples/db_recv.py.html b/content/releases/qpid-proton-0.13.0/proton/python/examples/db_recv.py.html
new file mode 100644
index 0000000..546e756
--- /dev/null
+++ b/content/releases/qpid-proton-0.13.0/proton/python/examples/db_recv.py.html
@@ -0,0 +1,206 @@
+<!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>db_recv.py - 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/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;">
+        <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-proton-0.13.0/index.html">Qpid Proton 0.13.0</a></li><li><a href="/releases/qpid-proton-0.13.0/proton/python/examples/index.html">Proton Python Examples</a></li><li>db_recv.py</li></ul>
+
+        <div id="-middle-content">
+          
+<h1>db_recv.py</h1>
+<div class="highlight"><pre><span></span><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">optparse</span>
+<span class="kn">from</span> <span class="nn">proton.handlers</span> <span class="kn">import</span> <span class="n">MessagingHandler</span>
+<span class="kn">from</span> <span class="nn">proton.reactor</span> <span class="kn">import</span> <span class="n">ApplicationEvent</span><span class="p">,</span> <span class="n">Container</span><span class="p">,</span> <span class="n">EventInjector</span>
+<span class="kn">from</span> <span class="nn">db_common</span> <span class="kn">import</span> <span class="n">Db</span>
+
+<span class="k">class</span> <span class="nc">Recv</span><span class="p">(</span><span class="n">MessagingHandler</span><span class="p">):</span>
+    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">url</span><span class="p">,</span> <span class="n">count</span><span class="p">):</span>
+        <span class="nb">super</span><span class="p">(</span><span class="n">Recv</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">__init__</span><span class="p">(</span><span class="n">auto_accept</span><span class="o">=</span><span class="bp">False</span><span class="p">)</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">url</span> <span class="o">=</span> <span class="n">url</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">delay</span> <span class="o">=</span> <span class="mi">0</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">last_id</span> <span class="o">=</span> <span class="bp">None</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">expected</span> <span class="o">=</span> <span class="n">count</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">received</span> <span class="o">=</span> <span class="mi">0</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">accepted</span> <span class="o">=</span> <span class="mi">0</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">db</span> <span class="o">=</span> <span class="n">Db</span><span class="p">(</span><span class="s2">&quot;dst_db&quot;</span><span class="p">,</span> <span class="n">EventInjector</span><span class="p">())</span>
+
+    <span class="k">def</span> <span class="nf">on_start</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="n">event</span><span class="o">.</span><span class="n">container</span><span class="o">.</span><span class="n">selectable</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">injector</span><span class="p">)</span>
+        <span class="n">e</span> <span class="o">=</span> <span class="n">ApplicationEvent</span><span class="p">(</span><span class="s2">&quot;id_loaded&quot;</span><span class="p">)</span>
+        <span class="n">e</span><span class="o">.</span><span class="n">container</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">container</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">get_id</span><span class="p">(</span><span class="n">e</span><span class="p">)</span>
+
+    <span class="k">def</span> <span class="nf">on_id_loaded</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">last_id</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">id</span>
+        <span class="n">event</span><span class="o">.</span><span class="n">container</span><span class="o">.</span><span class="n">create_receiver</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">url</span><span class="p">)</span>
+
+    <span class="k">def</span> <span class="nf">on_record_inserted</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">accept</span><span class="p">(</span><span class="n">event</span><span class="o">.</span><span class="n">delivery</span><span class="p">)</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">accepted</span> <span class="o">+=</span> <span class="mi">1</span>
+        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">accepted</span> <span class="o">==</span> <span class="bp">self</span><span class="o">.</span><span class="n">expected</span><span class="p">:</span>
+            <span class="n">event</span><span class="o">.</span><span class="n">connection</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
+
+    <span class="k">def</span> <span class="nf">on_message</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="nb">id</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">event</span><span class="o">.</span><span class="n">message</span><span class="o">.</span><span class="n">id</span><span class="p">)</span>
+        <span class="k">if</span> <span class="p">(</span><span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">last_id</span><span class="p">)</span> <span class="ow">or</span> <span class="nb">id</span> <span class="o">&gt;</span> <span class="bp">self</span><span class="o">.</span><span class="n">last_id</span><span class="p">:</span>
+            <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">received</span> <span class="o">&lt;</span> <span class="bp">self</span><span class="o">.</span><span class="n">expected</span><span class="p">:</span>
+                <span class="bp">self</span><span class="o">.</span><span class="n">received</span> <span class="o">+=</span> <span class="mi">1</span>
+                <span class="bp">self</span><span class="o">.</span><span class="n">last_id</span> <span class="o">=</span> <span class="nb">id</span>
+                <span class="bp">self</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">insert</span><span class="p">(</span><span class="nb">id</span><span class="p">,</span> <span class="n">event</span><span class="o">.</span><span class="n">message</span><span class="o">.</span><span class="n">body</span><span class="p">,</span> <span class="n">ApplicationEvent</span><span class="p">(</span><span class="s2">&quot;record_inserted&quot;</span><span class="p">,</span> <span class="n">delivery</span><span class="o">=</span><span class="n">event</span><span class="o">.</span><span class="n">delivery</span><span class="p">))</span>
+                <span class="k">print</span><span class="p">(</span><span class="s2">&quot;inserted message </span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="nb">id</span><span class="p">)</span>
+            <span class="k">else</span><span class="p">:</span>
+                <span class="bp">self</span><span class="o">.</span><span class="n">release</span><span class="p">(</span><span class="n">event</span><span class="o">.</span><span class="n">delivery</span><span class="p">)</span>
+        <span class="k">else</span><span class="p">:</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">accept</span><span class="p">(</span><span class="n">event</span><span class="o">.</span><span class="n">delivery</span><span class="p">)</span>
+
+<span class="n">parser</span> <span class="o">=</span> <span class="n">optparse</span><span class="o">.</span><span class="n">OptionParser</span><span class="p">(</span><span class="n">usage</span><span class="o">=</span><span class="s2">&quot;usage: %prog [options]&quot;</span><span class="p">)</span>
+<span class="n">parser</span><span class="o">.</span><span class="n">add_option</span><span class="p">(</span><span class="s2">&quot;-a&quot;</span><span class="p">,</span> <span class="s2">&quot;--address&quot;</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="s2">&quot;localhost:5672/examples&quot;</span><span class="p">,</span>
+                  <span class="n">help</span><span class="o">=</span><span class="s2">&quot;address from which messages are received (default </span><span class="si">%d</span><span class="s2">efault)&quot;</span><span class="p">)</span>
+<span class="n">parser</span><span class="o">.</span><span class="n">add_option</span><span class="p">(</span><span class="s2">&quot;-m&quot;</span><span class="p">,</span> <span class="s2">&quot;--messages&quot;</span><span class="p">,</span> <span class="nb">type</span><span class="o">=</span><span class="s2">&quot;int&quot;</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span>
+                  <span class="n">help</span><span class="o">=</span><span class="s2">&quot;number of messages to receive; 0 receives indefinitely (default </span><span class="si">%d</span><span class="s2">efault)&quot;</span><span class="p">)</span>
+<span class="n">opts</span><span class="p">,</span> <span class="n">args</span> <span class="o">=</span> <span class="n">parser</span><span class="o">.</span><span class="n">parse_args</span><span class="p">()</span>
+
+<span class="k">try</span><span class="p">:</span>
+    <span class="n">Container</span><span class="p">(</span><span class="n">Recv</span><span class="p">(</span><span class="n">opts</span><span class="o">.</span><span class="n">address</span><span class="p">,</span> <span class="n">opts</span><span class="o">.</span><span class="n">messages</span><span class="p">))</span><span class="o">.</span><span class="n">run</span><span class="p">()</span>
+<span class="k">except</span> <span class="ne">KeyboardInterrupt</span><span class="p">:</span> <span class="k">pass</span>
+</pre></div>
+
+<p><a href="db_recv.py">Download this file</a></p>
+
+
+          <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/75ca8b14/content/releases/qpid-proton-0.13.0/proton/python/examples/db_send.py
----------------------------------------------------------------------
diff --git a/content/releases/qpid-proton-0.13.0/proton/python/examples/db_send.py b/content/releases/qpid-proton-0.13.0/proton/python/examples/db_send.py
new file mode 100755
index 0000000..c07dcc0
--- /dev/null
+++ b/content/releases/qpid-proton-0.13.0/proton/python/examples/db_send.py
@@ -0,0 +1,111 @@
+#!/usr/bin/env python
+#
+# 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.
+#
+
+from __future__ import print_function, unicode_literals
+import optparse
+import time
+try:
+    import Queue
+except:
+    import queue as Queue
+
+
+from proton import Message
+from proton.handlers import MessagingHandler
+from proton.reactor import ApplicationEvent, Container, EventInjector
+from db_common import Db
+
+class Send(MessagingHandler):
+    def __init__(self, url, count):
+        super(Send, self).__init__()
+        self.url = url
+        self.delay = 0
+        self.sent = 0
+        self.confirmed = 0
+        self.load_count = 0
+        self.records = Queue.Queue(maxsize=50)
+        self.target = count
+        self.db = Db("src_db", EventInjector())
+
+    def keep_sending(self):
+        return self.target == 0 or self.sent < self.target
+
+    def on_start(self, event):
+        self.container = event.container
+        self.container.selectable(self.db.injector)
+        self.sender = self.container.create_sender(self.url)
+
+    def on_records_loaded(self, event):
+        if self.records.empty():
+            if event.subject == self.load_count:
+                print("Exhausted available data, waiting to recheck...")
+                # check for new data after 5 seconds
+                self.container.schedule(5, self)
+        else:
+            self.send()
+
+    def request_records(self):
+        if not self.records.full():
+            print("loading records...")
+            self.load_count += 1
+            self.db.load(self.records, event=ApplicationEvent("records_loaded", link=self.sender, subject=self.load_count))
+
+    def on_sendable(self, event):
+        self.send()
+
+    def send(self):
+        while self.sender.credit and not self.records.empty():
+            if not self.keep_sending(): return
+            record = self.records.get(False)
+            id = record['id']
+            self.sender.send(Message(id=id, durable=True, body=record['description']), tag=str(id))
+            self.sent += 1
+            print("sent message %s" % id)
+        self.request_records()
+
+    def on_settled(self, event):
+        id = int(event.delivery.tag)
+        self.db.delete(id)
+        print("settled message %s" % id)
+        self.confirmed += 1
+        if self.confirmed == self.target:
+            event.connection.close()
+            self.db.close()
+
+    def on_disconnected(self, event):
+        self.db.reset()
+        self.sent = self.confirmed
+
+    def on_timer_task(self, event):
+        print("Rechecking for data...")
+        self.request_records()
+
+parser = optparse.OptionParser(usage="usage: %prog [options]",
+                               description="Send messages to the supplied address.")
+parser.add_option("-a", "--address", default="localhost:5672/examples",
+                  help="address to which messages are sent (default %default)")
+parser.add_option("-m", "--messages", type="int", default=0,
+                  help="number of messages to send; 0 sends indefinitely (default %default)")
+opts, args = parser.parse_args()
+
+try:
+    Container(Send(opts.address, opts.messages)).run()
+except KeyboardInterrupt: pass
+

http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/content/releases/qpid-proton-0.13.0/proton/python/examples/db_send.py.html
----------------------------------------------------------------------
diff --git a/content/releases/qpid-proton-0.13.0/proton/python/examples/db_send.py.html b/content/releases/qpid-proton-0.13.0/proton/python/examples/db_send.py.html
new file mode 100644
index 0000000..9145112
--- /dev/null
+++ b/content/releases/qpid-proton-0.13.0/proton/python/examples/db_send.py.html
@@ -0,0 +1,239 @@
+<!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>db_send.py - 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/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;">
+        <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-proton-0.13.0/index.html">Qpid Proton 0.13.0</a></li><li><a href="/releases/qpid-proton-0.13.0/proton/python/examples/index.html">Proton Python Examples</a></li><li>db_send.py</li></ul>
+
+        <div id="-middle-content">
+          
+<h1>db_send.py</h1>
+<div class="highlight"><pre><span></span><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>
+<span class="kn">import</span> <span class="nn">time</span>
+<span class="k">try</span><span class="p">:</span>
+    <span class="kn">import</span> <span class="nn">Queue</span>
+<span class="k">except</span><span class="p">:</span>
+    <span class="kn">import</span> <span class="nn">queue</span> <span class="kn">as</span> <span class="nn">Queue</span>
+
+
+<span class="kn">from</span> <span class="nn">proton</span> <span class="kn">import</span> <span class="n">Message</span>
+<span class="kn">from</span> <span class="nn">proton.handlers</span> <span class="kn">import</span> <span class="n">MessagingHandler</span>
+<span class="kn">from</span> <span class="nn">proton.reactor</span> <span class="kn">import</span> <span class="n">ApplicationEvent</span><span class="p">,</span> <span class="n">Container</span><span class="p">,</span> <span class="n">EventInjector</span>
+<span class="kn">from</span> <span class="nn">db_common</span> <span class="kn">import</span> <span class="n">Db</span>
+
+<span class="k">class</span> <span class="nc">Send</span><span class="p">(</span><span class="n">MessagingHandler</span><span class="p">):</span>
+    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">url</span><span class="p">,</span> <span class="n">count</span><span class="p">):</span>
+        <span class="nb">super</span><span class="p">(</span><span class="n">Send</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">__init__</span><span class="p">()</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">url</span> <span class="o">=</span> <span class="n">url</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">delay</span> <span class="o">=</span> <span class="mi">0</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">sent</span> <span class="o">=</span> <span class="mi">0</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">confirmed</span> <span class="o">=</span> <span class="mi">0</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">load_count</span> <span class="o">=</span> <span class="mi">0</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">records</span> <span class="o">=</span> <span class="n">Queue</span><span class="o">.</span><span class="n">Queue</span><span class="p">(</span><span class="n">maxsize</span><span class="o">=</span><span class="mi">50</span><span class="p">)</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">target</span> <span class="o">=</span> <span class="n">count</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">db</span> <span class="o">=</span> <span class="n">Db</span><span class="p">(</span><span class="s2">&quot;src_db&quot;</span><span class="p">,</span> <span class="n">EventInjector</span><span class="p">())</span>
+
+    <span class="k">def</span> <span class="nf">keep_sending</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">target</span> <span class="o">==</span> <span class="mi">0</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">sent</span> <span class="o">&lt;</span> <span class="bp">self</span><span class="o">.</span><span class="n">target</span>
+
+    <span class="k">def</span> <span class="nf">on_start</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">container</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">container</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">container</span><span class="o">.</span><span class="n">selectable</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">injector</span><span class="p">)</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">sender</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">container</span><span class="o">.</span><span class="n">create_sender</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">url</span><span class="p">)</span>
+
+    <span class="k">def</span> <span class="nf">on_records_loaded</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">records</span><span class="o">.</span><span class="n">empty</span><span class="p">():</span>
+            <span class="k">if</span> <span class="n">event</span><span class="o">.</span><span class="n">subject</span> <span class="o">==</span> <span class="bp">self</span><span class="o">.</span><span class="n">load_count</span><span class="p">:</span>
+                <span class="k">print</span><span class="p">(</span><span class="s2">&quot;Exhausted available data, waiting to recheck...&quot;</span><span class="p">)</span>
+                <span class="c1"># check for new data after 5 seconds</span>
+                <span class="bp">self</span><span class="o">.</span><span class="n">container</span><span class="o">.</span><span class="n">schedule</span><span class="p">(</span><span class="mi">5</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span>
+        <span class="k">else</span><span class="p">:</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">send</span><span class="p">()</span>
+
+    <span class="k">def</span> <span class="nf">request_records</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">records</span><span class="o">.</span><span class="n">full</span><span class="p">():</span>
+            <span class="k">print</span><span class="p">(</span><span class="s2">&quot;loading records...&quot;</span><span class="p">)</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">load_count</span> <span class="o">+=</span> <span class="mi">1</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">load</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">records</span><span class="p">,</span> <span class="n">event</span><span class="o">=</span><span class="n">ApplicationEvent</span><span class="p">(</span><span class="s2">&quot;records_loaded&quot;</span><span class="p">,</span> <span class="n">link</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">sender</span><span class="p">,</span> <span class="n">subject</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">load_count</span><span class="p">))</span>
+
+    <span class="k">def</span> <span class="nf">on_sendable</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">send</span><span class="p">()</span>
+
+    <span class="k">def</span> <span class="nf">send</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">sender</span><span class="o">.</span><span class="n">credit</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">records</span><span class="o">.</span><span class="n">empty</span><span class="p">():</span>
+            <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">keep_sending</span><span class="p">():</span> <span class="k">return</span>
+            <span class="n">record</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">records</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="bp">False</span><span class="p">)</span>
+            <span class="nb">id</span> <span class="o">=</span> <span class="n">record</span><span class="p">[</span><span class="s1">&#39;id&#39;</span><span class="p">]</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">sender</span><span class="o">.</span><span class="n">send</span><span class="p">(</span><span class="n">Message</span><span class="p">(</span><span class="nb">id</span><span class="o">=</span><span class="nb">id</span><span class="p">,</span> <span class="n">durable</span><span class="o">=</span><span class="bp">True</span><span class="p">,</span> <span class="n">body</span><span class="o">=</span><span class="n">record</span><span class="p">[</span><span class="s1">&#39;description&#39;</span><span class="p">]),</span> <span class="n">tag</span><span class="o">=</span><span class="nb">str</span><span class="p">(</span><span class="nb">id</span><span class="p">))</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">sent</span> <span class="o">+=</span> <span class="mi">1</span>
+            <span class="k">print</span><span class="p">(</span><span class="s2">&quot;sent message </span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="nb">id</span><span class="p">)</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">request_records</span><span class="p">()</span>
+
+    <span class="k">def</span> <span class="nf">on_settled</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="nb">id</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">event</span><span class="o">.</span><span class="n">delivery</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">delete</span><span class="p">(</span><span class="nb">id</span><span class="p">)</span>
+        <span class="k">print</span><span class="p">(</span><span class="s2">&quot;settled message </span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="nb">id</span><span class="p">)</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">confirmed</span> <span class="o">+=</span> <span class="mi">1</span>
+        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">confirmed</span> <span class="o">==</span> <span class="bp">self</span><span class="o">.</span><span class="n">target</span><span class="p">:</span>
+            <span class="n">event</span><span class="o">.</span><span class="n">connection</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
+
+    <span class="k">def</span> <span class="nf">on_disconnected</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">reset</span><span class="p">()</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">sent</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">confirmed</span>
+
+    <span class="k">def</span> <span class="nf">on_timer_task</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="k">print</span><span class="p">(</span><span class="s2">&quot;Rechecking for data...&quot;</span><span class="p">)</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">request_records</span><span class="p">()</span>
+
+<span class="n">parser</span> <span class="o">=</span> <span class="n">optparse</span><span class="o">.</span><span class="n">OptionParser</span><span class="p">(</span><span class="n">usage</span><span class="o">=</span><span class="s2">&quot;usage: %prog [options]&quot;</span><span class="p">,</span>
+                               <span class="n">description</span><span class="o">=</span><span class="s2">&quot;Send messages to the supplied address.&quot;</span><span class="p">)</span>
+<span class="n">parser</span><span class="o">.</span><span class="n">add_option</span><span class="p">(</span><span class="s2">&quot;-a&quot;</span><span class="p">,</span> <span class="s2">&quot;--address&quot;</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="s2">&quot;localhost:5672/examples&quot;</span><span class="p">,</span>
+                  <span class="n">help</span><span class="o">=</span><span class="s2">&quot;address to which messages are sent (default </span><span class="si">%d</span><span class="s2">efault)&quot;</span><span class="p">)</span>
+<span class="n">parser</span><span class="o">.</span><span class="n">add_option</span><span class="p">(</span><span class="s2">&quot;-m&quot;</span><span class="p">,</span> <span class="s2">&quot;--messages&quot;</span><span class="p">,</span> <span class="nb">type</span><span class="o">=</span><span class="s2">&quot;int&quot;</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span>
+                  <span class="n">help</span><span class="o">=</span><span class="s2">&quot;number of messages to send; 0 sends indefinitely (default </span><span class="si">%d</span><span class="s2">efault)&quot;</span><span class="p">)</span>
+<span class="n">opts</span><span class="p">,</span> <span class="n">args</span> <span class="o">=</span> <span class="n">parser</span><span class="o">.</span><span class="n">parse_args</span><span class="p">()</span>
+
+<span class="k">try</span><span class="p">:</span>
+    <span class="n">Container</span><span class="p">(</span><span class="n">Send</span><span class="p">(</span><span class="n">opts</span><span class="o">.</span><span class="n">address</span><span class="p">,</span> <span class="n">opts</span><span class="o">.</span><span class="n">messages</span><span class="p">))</span><span class="o">.</span><span class="n">run</span><span class="p">()</span>
+<span class="k">except</span> <span class="ne">KeyboardInterrupt</span><span class="p">:</span> <span class="k">pass</span>
+</pre></div>
+
+<p><a href="db_send.py">Download this file</a></p>
+
+
+          <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/75ca8b14/content/releases/qpid-proton-0.13.0/proton/python/examples/direct_recv.py
----------------------------------------------------------------------
diff --git a/content/releases/qpid-proton-0.13.0/proton/python/examples/direct_recv.py b/content/releases/qpid-proton-0.13.0/proton/python/examples/direct_recv.py
new file mode 100755
index 0000000..1c6bf36
--- /dev/null
+++ b/content/releases/qpid-proton-0.13.0/proton/python/examples/direct_recv.py
@@ -0,0 +1,60 @@
+#!/usr/bin/env python
+#
+# 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.
+#
+
+from __future__ import print_function
+import optparse
+from proton.handlers import MessagingHandler
+from proton.reactor import Container
+
+class Recv(MessagingHandler):
+    def __init__(self, url, count):
+        super(Recv, self).__init__()
+        self.url = url
+        self.expected = count
+        self.received = 0
+
+    def on_start(self, event):
+        self.acceptor = event.container.listen(self.url)
+
+    def on_message(self, event):
+        if event.message.id and event.message.id < self.received:
+            # ignore duplicate message
+            return
+        if self.expected == 0 or self.received < self.expected:
+            print(event.message.body)
+            self.received += 1
+            if self.received == self.expected:
+                event.receiver.close()
+                event.connection.close()
+                self.acceptor.close()
+
+parser = optparse.OptionParser(usage="usage: %prog [options]")
+parser.add_option("-a", "--address", default="localhost:5672/examples",
+                  help="address from which messages are received (default %default)")
+parser.add_option("-m", "--messages", type="int", default=100,
+                  help="number of messages to receive; 0 receives indefinitely (default %default)")
+opts, args = parser.parse_args()
+
+try:
+    Container(Recv(opts.address, opts.messages)).run()
+except KeyboardInterrupt: pass
+
+
+


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


[15/26] qpid-site git commit: QPID-7350: Examples that should have gone with the previous commit

Posted by jr...@apache.org.
http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/content/releases/qpid-proton-0.13.0/proton/python/examples/helloworld_tornado.py.html
----------------------------------------------------------------------
diff --git a/content/releases/qpid-proton-0.13.0/proton/python/examples/helloworld_tornado.py.html b/content/releases/qpid-proton-0.13.0/proton/python/examples/helloworld_tornado.py.html
new file mode 100644
index 0000000..3fc25eb
--- /dev/null
+++ b/content/releases/qpid-proton-0.13.0/proton/python/examples/helloworld_tornado.py.html
@@ -0,0 +1,174 @@
+<!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>helloworld_tornado.py - 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/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;">
+        <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-proton-0.13.0/index.html">Qpid Proton 0.13.0</a></li><li><a href="/releases/qpid-proton-0.13.0/proton/python/examples/index.html">Proton Python Examples</a></li><li>helloworld_tornado.py</li></ul>
+
+        <div id="-middle-content">
+          
+<h1>helloworld_tornado.py</h1>
+<div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">__future__</span> <span class="kn">import</span> <span class="n">print_function</span>
+<span class="kn">from</span> <span class="nn">proton</span> <span class="kn">import</span> <span class="n">Message</span>
+<span class="kn">from</span> <span class="nn">proton.handlers</span> <span class="kn">import</span> <span class="n">MessagingHandler</span>
+<span class="kn">from</span> <span class="nn">proton_tornado</span> <span class="kn">import</span> <span class="n">Container</span>
+
+<span class="k">class</span> <span class="nc">HelloWorld</span><span class="p">(</span><span class="n">MessagingHandler</span><span class="p">):</span>
+    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">server</span><span class="p">,</span> <span class="n">address</span><span class="p">):</span>
+        <span class="nb">super</span><span class="p">(</span><span class="n">HelloWorld</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">__init__</span><span class="p">()</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">server</span> <span class="o">=</span> <span class="n">server</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">address</span> <span class="o">=</span> <span class="n">address</span>
+
+    <span class="k">def</span> <span class="nf">on_start</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="n">conn</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">container</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">server</span><span class="p">)</span>
+        <span class="n">event</span><span class="o">.</span><span class="n">container</span><span class="o">.</span><span class="n">create_receiver</span><span class="p">(</span><span class="n">conn</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">address</span><span class="p">)</span>
+        <span class="n">event</span><span class="o">.</span><span class="n">container</span><span class="o">.</span><span class="n">create_sender</span><span class="p">(</span><span class="n">conn</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">address</span><span class="p">)</span>
+
+    <span class="k">def</span> <span class="nf">on_sendable</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="n">event</span><span class="o">.</span><span class="n">sender</span><span class="o">.</span><span class="n">send</span><span class="p">(</span><span class="n">Message</span><span class="p">(</span><span class="n">body</span><span class="o">=</span><span class="s2">&quot;Hello World!&quot;</span><span class="p">))</span>
+        <span class="n">event</span><span class="o">.</span><span class="n">sender</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
+
+    <span class="k">def</span> <span class="nf">on_message</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="k">print</span><span class="p">(</span><span class="n">event</span><span class="o">.</span><span class="n">message</span><span class="o">.</span><span class="n">body</span><span class="p">)</span>
+        <span class="n">event</span><span class="o">.</span><span class="n">connection</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
+
+<span class="n">Container</span><span class="p">(</span><span class="n">HelloWorld</span><span class="p">(</span><span class="s2">&quot;localhost:5672&quot;</span><span class="p">,</span> <span class="s2">&quot;examples&quot;</span><span class="p">))</span><span class="o">.</span><span class="n">run</span><span class="p">()</span>
+</pre></div>
+
+<p><a href="helloworld_tornado.py">Download this file</a></p>
+
+
+          <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/75ca8b14/content/releases/qpid-proton-0.13.0/proton/python/examples/index.html
----------------------------------------------------------------------
diff --git a/content/releases/qpid-proton-0.13.0/proton/python/examples/index.html b/content/releases/qpid-proton-0.13.0/proton/python/examples/index.html
new file mode 100644
index 0000000..6caef7d
--- /dev/null
+++ b/content/releases/qpid-proton-0.13.0/proton/python/examples/index.html
@@ -0,0 +1,188 @@
+<!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>Proton Python Examples - 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/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;">
+        <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-proton-0.13.0/index.html">Qpid Proton 0.13.0</a></li><li>Proton Python Examples</li></ul>
+
+        <div id="-middle-content">
+          <h1 id="proton-python-examples">Proton Python Examples</h1>
+
+<h2 id="example-files">Example files</h2>
+
+<ul>
+<li><a href="abstract_server.py.html">abstract_server.py</a></li>
+<li><a href="broker.py.html">broker.py</a></li>
+<li><a href="client.py.html">client.py</a></li>
+<li><a href="client_http.py.html">client_http.py</a></li>
+<li><a href="db_common.py.html">db_common.py</a></li>
+<li><a href="db_ctrl.py.html">db_ctrl.py</a></li>
+<li><a href="db_recv.py.html">db_recv.py</a></li>
+<li><a href="db_send.py.html">db_send.py</a></li>
+<li><a href="direct_recv.py.html">direct_recv.py</a></li>
+<li><a href="direct_send.py.html">direct_send.py</a></li>
+<li><a href="helloworld.py.html">helloworld.py</a></li>
+<li><a href="helloworld_blocking.py.html">helloworld_blocking.py</a></li>
+<li><a href="helloworld_direct.py.html">helloworld_direct.py</a></li>
+<li><a href="helloworld_direct_tornado.py.html">helloworld_direct_tornado.py</a></li>
+<li><a href="helloworld_tornado.py.html">helloworld_tornado.py</a></li>
+<li><a href="proton_server.py.html">proton_server.py</a></li>
+<li><a href="proton_tornado.py.html">proton_tornado.py</a></li>
+<li><a href="queue_browser.py.html">queue_browser.py</a></li>
+<li><a href="recurring_timer.py.html">recurring_timer.py</a></li>
+<li><a href="recurring_timer_tornado.py.html">recurring_timer_tornado.py</a></li>
+<li><a href="selected_recv.py.html">selected_recv.py</a></li>
+<li><a href="server.py.html">server.py</a></li>
+<li><a href="server_direct.py.html">server_direct.py</a></li>
+<li><a href="server_tx.py.html">server_tx.py</a></li>
+<li><a href="simple_recv.py.html">simple_recv.py</a></li>
+<li><a href="simple_send.py.html">simple_send.py</a></li>
+<li><a href="sync_client.py.html">sync_client.py</a></li>
+<li><a href="test_examples.py.html">test_examples.py</a></li>
+<li><a href="tx_recv.py.html">tx_recv.py</a></li>
+<li><a href="tx_recv_interactive.py.html">tx_recv_interactive.py</a></li>
+<li><a href="tx_send.py.html">tx_send.py</a></li>
+</ul>
+
+<h2 id="more-information">More information</h2>
+
+<ul>
+<li><a href="https://github.com/apache/qpid-proton/tree/0.13.0/examples/python/README">README</a></li>
+<li><a href="https://github.com/apache/qpid-proton/tree/0.13.0/examples/python">Source location</a></li>
+</ul>
+
+
+          <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/75ca8b14/content/releases/qpid-proton-0.13.0/proton/python/examples/proton_server.py
----------------------------------------------------------------------
diff --git a/content/releases/qpid-proton-0.13.0/proton/python/examples/proton_server.py b/content/releases/qpid-proton-0.13.0/proton/python/examples/proton_server.py
new file mode 100755
index 0000000..9351f55
--- /dev/null
+++ b/content/releases/qpid-proton-0.13.0/proton/python/examples/proton_server.py
@@ -0,0 +1,51 @@
+from __future__ import print_function
+#
+# 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.
+#
+
+from proton import Message
+from proton.reactor import Container
+from proton.handlers import MessagingHandler
+
+class Server(MessagingHandler):
+    def __init__(self, host, address):
+        super(Server, self).__init__()
+        self.container = Container(self)
+        self.conn = self.container.connect(host)
+        self.receiver = self.container.create_receiver(self.conn, address)
+        self.sender = self.container.create_sender(self.conn, None)
+
+    def on_message(self, event):
+        self.on_request(event.message.body, event.message.reply_to)
+
+    def on_connection_close(self, endpoint, error):
+        if error: print("Closed due to %s" % error)
+        self.conn.close()
+
+    def run(self):
+        self.container.run()
+
+    def send(self, response, reply_to):
+        msg = Message(body=response)
+        if self.sender:
+            msg.address = reply_to
+        self.sender.send(msg)
+
+    def on_request(self, request, reply_to):
+        pass
+

http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/content/releases/qpid-proton-0.13.0/proton/python/examples/proton_server.py.html
----------------------------------------------------------------------
diff --git a/content/releases/qpid-proton-0.13.0/proton/python/examples/proton_server.py.html b/content/releases/qpid-proton-0.13.0/proton/python/examples/proton_server.py.html
new file mode 100644
index 0000000..15cbffe
--- /dev/null
+++ b/content/releases/qpid-proton-0.13.0/proton/python/examples/proton_server.py.html
@@ -0,0 +1,199 @@
+<!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>proton_server.py - 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/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;">
+        <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-proton-0.13.0/index.html">Qpid Proton 0.13.0</a></li><li><a href="/releases/qpid-proton-0.13.0/proton/python/examples/index.html">Proton Python Examples</a></li><li>proton_server.py</li></ul>
+
+        <div id="-middle-content">
+          
+<h1>proton_server.py</h1>
+<div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">__future__</span> <span class="kn">import</span> <span class="n">print_function</span>
+<span class="c1">#</span>
+<span class="c1"># Licensed to the Apache Software Foundation (ASF) under one</span>
+<span class="c1"># or more contributor license agreements.  See the NOTICE file</span>
+<span class="c1"># distributed with this work for additional information</span>
+<span class="c1"># regarding copyright ownership.  The ASF licenses this file</span>
+<span class="c1"># to you under the Apache License, Version 2.0 (the</span>
+<span class="c1"># &quot;License&quot;); you may not use this file except in compliance</span>
+<span class="c1"># with the License.  You may obtain a copy of the License at</span>
+<span class="c1">#</span>
+<span class="c1">#   http://www.apache.org/licenses/LICENSE-2.0</span>
+<span class="c1">#</span>
+<span class="c1"># Unless required by applicable law or agreed to in writing,</span>
+<span class="c1"># software distributed under the License is distributed on an</span>
+<span class="c1"># &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</span>
+<span class="c1"># KIND, either express or implied.  See the License for the</span>
+<span class="c1"># specific language governing permissions and limitations</span>
+<span class="c1"># under the License.</span>
+<span class="c1">#</span>
+
+<span class="kn">from</span> <span class="nn">proton</span> <span class="kn">import</span> <span class="n">Message</span>
+<span class="kn">from</span> <span class="nn">proton.reactor</span> <span class="kn">import</span> <span class="n">Container</span>
+<span class="kn">from</span> <span class="nn">proton.handlers</span> <span class="kn">import</span> <span class="n">MessagingHandler</span>
+
+<span class="k">class</span> <span class="nc">Server</span><span class="p">(</span><span class="n">MessagingHandler</span><span class="p">):</span>
+    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">host</span><span class="p">,</span> <span class="n">address</span><span class="p">):</span>
+        <span class="nb">super</span><span class="p">(</span><span class="n">Server</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">__init__</span><span class="p">()</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">container</span> <span class="o">=</span> <span class="n">Container</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">conn</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">container</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="n">host</span><span class="p">)</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">receiver</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">container</span><span class="o">.</span><span class="n">create_receiver</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">conn</span><span class="p">,</span> <span class="n">address</span><span class="p">)</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">sender</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">container</span><span class="o">.</span><span class="n">create_sender</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">conn</span><span class="p">,</span> <span class="bp">None</span><span class="p">)</span>
+
+    <span class="k">def</span> <span class="nf">on_message</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">on_request</span><span class="p">(</span><span class="n">event</span><span class="o">.</span><span class="n">message</span><span class="o">.</span><span class="n">body</span><span class="p">,</span> <span class="n">event</span><span class="o">.</span><span class="n">message</span><span class="o">.</span><span class="n">reply_to</span><span class="p">)</span>
+
+    <span class="k">def</span> <span class="nf">on_connection_close</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">endpoint</span><span class="p">,</span> <span class="n">error</span><span class="p">):</span>
+        <span class="k">if</span> <span class="n">error</span><span class="p">:</span> <span class="k">print</span><span class="p">(</span><span class="s2">&quot;Closed due to </span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="n">error</span><span class="p">)</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">conn</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
+
+    <span class="k">def</span> <span class="nf">run</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">container</span><span class="o">.</span><span class="n">run</span><span class="p">()</span>
+
+    <span class="k">def</span> <span class="nf">send</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">response</span><span class="p">,</span> <span class="n">reply_to</span><span class="p">):</span>
+        <span class="n">msg</span> <span class="o">=</span> <span class="n">Message</span><span class="p">(</span><span class="n">body</span><span class="o">=</span><span class="n">response</span><span class="p">)</span>
+        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">sender</span><span class="p">:</span>
+            <span class="n">msg</span><span class="o">.</span><span class="n">address</span> <span class="o">=</span> <span class="n">reply_to</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">sender</span><span class="o">.</span><span class="n">send</span><span class="p">(</span><span class="n">msg</span><span class="p">)</span>
+
+    <span class="k">def</span> <span class="nf">on_request</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">request</span><span class="p">,</span> <span class="n">reply_to</span><span class="p">):</span>
+        <span class="k">pass</span>
+</pre></div>
+
+<p><a href="proton_server.py">Download this file</a></p>
+
+
+          <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/75ca8b14/content/releases/qpid-proton-0.13.0/proton/python/examples/proton_tornado.py
----------------------------------------------------------------------
diff --git a/content/releases/qpid-proton-0.13.0/proton/python/examples/proton_tornado.py b/content/releases/qpid-proton-0.13.0/proton/python/examples/proton_tornado.py
new file mode 100755
index 0000000..f946b43
--- /dev/null
+++ b/content/releases/qpid-proton-0.13.0/proton/python/examples/proton_tornado.py
@@ -0,0 +1,114 @@
+#!/usr/bin/env python
+#
+# 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.
+#
+
+import tornado.ioloop
+from proton.reactor import Container as BaseContainer
+from proton.handlers import IOHandler
+
+class TornadoLoopHandler:
+
+    def __init__(self, loop=None, handler_base=None):
+        self.loop = loop or tornado.ioloop.IOLoop.instance()
+        self.io = handler_base or IOHandler()
+        self.count = 0
+
+    def on_reactor_init(self, event):
+        self.reactor = event.reactor
+
+    def on_reactor_quiesced(self, event):
+        event.reactor.yield_()
+
+    def on_unhandled(self, name, event):
+        event.dispatch(self.io)
+
+    def _events(self, sel):
+        events = self.loop.ERROR
+        if sel.reading:
+            events |= self.loop.READ
+        if sel.writing:
+            events |= self.loop.WRITE
+        return events
+
+    def _schedule(self, sel):
+        if sel.deadline:
+            self.loop.add_timeout(sel.deadline, lambda: self.expired(sel))
+
+    def _expired(self, sel):
+        sel.expired()
+
+    def _process(self):
+        self.reactor.process()
+        if not self.reactor.quiesced:
+            self.loop.add_callback(self._process)
+
+    def _callback(self, sel, events):
+        if self.loop.READ & events:
+            sel.readable()
+        if self.loop.WRITE & events:
+            sel.writable()
+        self._process()
+
+    def on_selectable_init(self, event):
+        sel = event.context
+        if sel.fileno() >= 0:
+            self.loop.add_handler(sel.fileno(), lambda fd, events: self._callback(sel, events), self._events(sel))
+        self._schedule(sel)
+        self.count += 1
+
+    def on_selectable_updated(self, event):
+        sel = event.context
+        if sel.fileno() > 0:
+            self.loop.update_handler(sel.fileno(), self._events(sel))
+        self._schedule(sel)
+
+    def on_selectable_final(self, event):
+        sel = event.context
+        if sel.fileno() > 0:
+            self.loop.remove_handler(sel.fileno())
+        sel.release()
+        self.count -= 1
+        if self.count == 0:
+            self.loop.add_callback(self._stop)
+
+    def _stop(self):
+        self.reactor.stop()
+        self.loop.stop()
+
+class Container(object):
+    def __init__(self, *handlers, **kwargs):
+        self.tornado_loop = kwargs.get('loop', tornado.ioloop.IOLoop.instance())
+        kwargs['global_handler'] = TornadoLoopHandler(self.tornado_loop, kwargs.get('handler_base', None))
+        self.container = BaseContainer(*handlers, **kwargs)
+
+    def initialise(self):
+        self.container.start()
+        self.container.process()
+
+    def run(self):
+        self.initialise()
+        self.tornado_loop.start()
+
+    def touch(self):
+        self._process()
+
+    def _process(self):
+        self.container.process()
+        if not self.container.quiesced:
+            self.tornado_loop.add_callback(self._process)

http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/content/releases/qpid-proton-0.13.0/proton/python/examples/proton_tornado.py.html
----------------------------------------------------------------------
diff --git a/content/releases/qpid-proton-0.13.0/proton/python/examples/proton_tornado.py.html b/content/releases/qpid-proton-0.13.0/proton/python/examples/proton_tornado.py.html
new file mode 100644
index 0000000..ba3c52a
--- /dev/null
+++ b/content/releases/qpid-proton-0.13.0/proton/python/examples/proton_tornado.py.html
@@ -0,0 +1,243 @@
+<!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>proton_tornado.py - 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/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;">
+        <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-proton-0.13.0/index.html">Qpid Proton 0.13.0</a></li><li><a href="/releases/qpid-proton-0.13.0/proton/python/examples/index.html">Proton Python Examples</a></li><li>proton_tornado.py</li></ul>
+
+        <div id="-middle-content">
+          
+<h1>proton_tornado.py</h1>
+<div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">tornado.ioloop</span>
+<span class="kn">from</span> <span class="nn">proton.reactor</span> <span class="kn">import</span> <span class="n">Container</span> <span class="k">as</span> <span class="n">BaseContainer</span>
+<span class="kn">from</span> <span class="nn">proton.handlers</span> <span class="kn">import</span> <span class="n">IOHandler</span>
+
+<span class="k">class</span> <span class="nc">TornadoLoopHandler</span><span class="p">:</span>
+
+    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">loop</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">handler_base</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">loop</span> <span class="o">=</span> <span class="n">loop</span> <span class="ow">or</span> <span class="n">tornado</span><span class="o">.</span><span class="n">ioloop</span><span class="o">.</span><span class="n">IOLoop</span><span class="o">.</span><span class="n">instance</span><span class="p">()</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">io</span> <span class="o">=</span> <span class="n">handler_base</span> <span class="ow">or</span> <span class="n">IOHandler</span><span class="p">()</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">count</span> <span class="o">=</span> <span class="mi">0</span>
+
+    <span class="k">def</span> <span class="nf">on_reactor_init</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">reactor</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">reactor</span>
+
+    <span class="k">def</span> <span class="nf">on_reactor_quiesced</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="n">event</span><span class="o">.</span><span class="n">reactor</span><span class="o">.</span><span class="n">yield_</span><span class="p">()</span>
+
+    <span class="k">def</span> <span class="nf">on_unhandled</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="n">event</span><span class="o">.</span><span class="n">dispatch</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">io</span><span class="p">)</span>
+
+    <span class="k">def</span> <span class="nf">_events</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">sel</span><span class="p">):</span>
+        <span class="n">events</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">loop</span><span class="o">.</span><span class="n">ERROR</span>
+        <span class="k">if</span> <span class="n">sel</span><span class="o">.</span><span class="n">reading</span><span class="p">:</span>
+            <span class="n">events</span> <span class="o">|=</span> <span class="bp">self</span><span class="o">.</span><span class="n">loop</span><span class="o">.</span><span class="n">READ</span>
+        <span class="k">if</span> <span class="n">sel</span><span class="o">.</span><span class="n">writing</span><span class="p">:</span>
+            <span class="n">events</span> <span class="o">|=</span> <span class="bp">self</span><span class="o">.</span><span class="n">loop</span><span class="o">.</span><span class="n">WRITE</span>
+        <span class="k">return</span> <span class="n">events</span>
+
+    <span class="k">def</span> <span class="nf">_schedule</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">sel</span><span class="p">):</span>
+        <span class="k">if</span> <span class="n">sel</span><span class="o">.</span><span class="n">deadline</span><span class="p">:</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">loop</span><span class="o">.</span><span class="n">add_timeout</span><span class="p">(</span><span class="n">sel</span><span class="o">.</span><span class="n">deadline</span><span class="p">,</span> <span class="k">lambda</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expired</span><span class="p">(</span><span class="n">sel</span><span class="p">))</span>
+
+    <span class="k">def</span> <span class="nf">_expired</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">sel</span><span class="p">):</span>
+        <span class="n">sel</span><span class="o">.</span><span class="n">expired</span><span class="p">()</span>
+
+    <span class="k">def</span> <span class="nf">_process</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">reactor</span><span class="o">.</span><span class="n">process</span><span class="p">()</span>
+        <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">reactor</span><span class="o">.</span><span class="n">quiesced</span><span class="p">:</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">loop</span><span class="o">.</span><span class="n">add_callback</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_process</span><span class="p">)</span>
+
+    <span class="k">def</span> <span class="nf">_callback</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">sel</span><span class="p">,</span> <span class="n">events</span><span class="p">):</span>
+        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">loop</span><span class="o">.</span><span class="n">READ</span> <span class="o">&amp;</span> <span class="n">events</span><span class="p">:</span>
+            <span class="n">sel</span><span class="o">.</span><span class="n">readable</span><span class="p">()</span>
+        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">loop</span><span class="o">.</span><span class="n">WRITE</span> <span class="o">&amp;</span> <span class="n">events</span><span class="p">:</span>
+            <span class="n">sel</span><span class="o">.</span><span class="n">writable</span><span class="p">()</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">_process</span><span class="p">()</span>
+
+    <span class="k">def</span> <span class="nf">on_selectable_init</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="n">sel</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">context</span>
+        <span class="k">if</span> <span class="n">sel</span><span class="o">.</span><span class="n">fileno</span><span class="p">()</span> <span class="o">&gt;=</span> <span class="mi">0</span><span class="p">:</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">loop</span><span class="o">.</span><span class="n">add_handler</span><span class="p">(</span><span class="n">sel</span><span class="o">.</span><span class="n">fileno</span><span class="p">(),</span> <span class="k">lambda</span> <span class="n">fd</span><span class="p">,</span> <span class="n">events</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_callback</span><span class="p">(</span><span class="n">sel</span><span class="p">,</span> <span class="n">events</span><span class="p">),</span> <span class="bp">self</span><span class="o">.</span><span class="n">_events</span><span class="p">(</span><span class="n">sel</span><span class="p">))</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">_schedule</span><span class="p">(</span><span class="n">sel</span><span class="p">)</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">count</span> <span class="o">+=</span> <span class="mi">1</span>
+
+    <span class="k">def</span> <span class="nf">on_selectable_updated</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="n">sel</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">context</span>
+        <span class="k">if</span> <span class="n">sel</span><span class="o">.</span><span class="n">fileno</span><span class="p">()</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">loop</span><span class="o">.</span><span class="n">update_handler</span><span class="p">(</span><span class="n">sel</span><span class="o">.</span><span class="n">fileno</span><span class="p">(),</span> <span class="bp">self</span><span class="o">.</span><span class="n">_events</span><span class="p">(</span><span class="n">sel</span><span class="p">))</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">_schedule</span><span class="p">(</span><span class="n">sel</span><span class="p">)</span>
+
+    <span class="k">def</span> <span class="nf">on_selectable_final</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="n">sel</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">context</span>
+        <span class="k">if</span> <span class="n">sel</span><span class="o">.</span><span class="n">fileno</span><span class="p">()</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">loop</span><span class="o">.</span><span class="n">remove_handler</span><span class="p">(</span><span class="n">sel</span><span class="o">.</span><span class="n">fileno</span><span class="p">())</span>
+        <span class="n">sel</span><span class="o">.</span><span class="n">release</span><span class="p">()</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">count</span> <span class="o">-=</span> <span class="mi">1</span>
+        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">count</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">loop</span><span class="o">.</span><span class="n">add_callback</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_stop</span><span class="p">)</span>
+
+    <span class="k">def</span> <span class="nf">_stop</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">reactor</span><span class="o">.</span><span class="n">stop</span><span class="p">()</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">loop</span><span class="o">.</span><span class="n">stop</span><span class="p">()</span>
+
+<span class="k">class</span> <span class="nc">Container</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
+    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">handlers</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">tornado_loop</span> <span class="o">=</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">&#39;loop&#39;</span><span class="p">,</span> <span class="n">tornado</span><span class="o">.</span><span class="n">ioloop</span><span class="o">.</span><span class="n">IOLoop</span><span class="o">.</span><span class="n">instance</span><span class="p">())</span>
+        <span class="n">kwargs</span><span class="p">[</span><span class="s1">&#39;global_handler&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">TornadoLoopHandler</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">tornado_loop</span><span class="p">,</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">&#39;handler_base&#39;</span><span class="p">,</span> <span class="bp">None</span><span class="p">))</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">container</span> <span class="o">=</span> <span class="n">BaseContainer</span><span class="p">(</span><span class="o">*</span><span class="n">handlers</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
+
+    <span class="k">def</span> <span class="nf">initialise</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">container</span><span class="o">.</span><span class="n">start</span><span class="p">()</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">container</span><span class="o">.</span><span class="n">process</span><span class="p">()</span>
+
+    <span class="k">def</span> <span class="nf">run</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">initialise</span><span class="p">()</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">tornado_loop</span><span class="o">.</span><span class="n">start</span><span class="p">()</span>
+
+    <span class="k">def</span> <span class="nf">touch</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">_process</span><span class="p">()</span>
+
+    <span class="k">def</span> <span class="nf">_process</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">container</span><span class="o">.</span><span class="n">process</span><span class="p">()</span>
+        <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">container</span><span class="o">.</span><span class="n">quiesced</span><span class="p">:</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">tornado_loop</span><span class="o">.</span><span class="n">add_callback</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_process</span><span class="p">)</span>
+</pre></div>
+
+<p><a href="proton_tornado.py">Download this file</a></p>
+
+
+          <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/75ca8b14/content/releases/qpid-proton-0.13.0/proton/python/examples/queue_browser.py
----------------------------------------------------------------------
diff --git a/content/releases/qpid-proton-0.13.0/proton/python/examples/queue_browser.py b/content/releases/qpid-proton-0.13.0/proton/python/examples/queue_browser.py
new file mode 100755
index 0000000..34d2377
--- /dev/null
+++ b/content/releases/qpid-proton-0.13.0/proton/python/examples/queue_browser.py
@@ -0,0 +1,43 @@
+#!/usr/bin/env python
+#
+# 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.
+#
+
+from __future__ import print_function
+from proton.reactor import Container, Copy
+from proton.handlers import MessagingHandler
+
+class Recv(MessagingHandler):
+    def __init__(self):
+        super(Recv, self).__init__()
+
+    def on_start(self, event):
+        conn = event.container.connect("localhost:5672")
+        event.container.create_receiver(conn, "examples", options=Copy())
+
+    def on_message(self, event):
+        print(event.message)
+        if event.receiver.queued == 0 and event.receiver.drained:
+            event.connection.close()
+
+try:
+    Container(Recv()).run()
+except KeyboardInterrupt: pass
+
+
+

http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/content/releases/qpid-proton-0.13.0/proton/python/examples/queue_browser.py.html
----------------------------------------------------------------------
diff --git a/content/releases/qpid-proton-0.13.0/proton/python/examples/queue_browser.py.html b/content/releases/qpid-proton-0.13.0/proton/python/examples/queue_browser.py.html
new file mode 100644
index 0000000..9b125e1
--- /dev/null
+++ b/content/releases/qpid-proton-0.13.0/proton/python/examples/queue_browser.py.html
@@ -0,0 +1,169 @@
+<!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>queue_browser.py - 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/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;">
+        <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-proton-0.13.0/index.html">Qpid Proton 0.13.0</a></li><li><a href="/releases/qpid-proton-0.13.0/proton/python/examples/index.html">Proton Python Examples</a></li><li>queue_browser.py</li></ul>
+
+        <div id="-middle-content">
+          
+<h1>queue_browser.py</h1>
+<div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">__future__</span> <span class="kn">import</span> <span class="n">print_function</span>
+<span class="kn">from</span> <span class="nn">proton.reactor</span> <span class="kn">import</span> <span class="n">Container</span><span class="p">,</span> <span class="n">Copy</span>
+<span class="kn">from</span> <span class="nn">proton.handlers</span> <span class="kn">import</span> <span class="n">MessagingHandler</span>
+
+<span class="k">class</span> <span class="nc">Recv</span><span class="p">(</span><span class="n">MessagingHandler</span><span class="p">):</span>
+    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="nb">super</span><span class="p">(</span><span class="n">Recv</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">__init__</span><span class="p">()</span>
+
+    <span class="k">def</span> <span class="nf">on_start</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="n">conn</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">container</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="s2">&quot;localhost:5672&quot;</span><span class="p">)</span>
+        <span class="n">event</span><span class="o">.</span><span class="n">container</span><span class="o">.</span><span class="n">create_receiver</span><span class="p">(</span><span class="n">conn</span><span class="p">,</span> <span class="s2">&quot;examples&quot;</span><span class="p">,</span> <span class="n">options</span><span class="o">=</span><span class="n">Copy</span><span class="p">())</span>
+
+    <span class="k">def</span> <span class="nf">on_message</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="k">print</span><span class="p">(</span><span class="n">event</span><span class="o">.</span><span class="n">message</span><span class="p">)</span>
+        <span class="k">if</span> <span class="n">event</span><span class="o">.</span><span class="n">receiver</span><span class="o">.</span><span class="n">queued</span> <span class="o">==</span> <span class="mi">0</span> <span class="ow">and</span> <span class="n">event</span><span class="o">.</span><span class="n">receiver</span><span class="o">.</span><span class="n">drained</span><span class="p">:</span>
+            <span class="n">event</span><span class="o">.</span><span class="n">connection</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
+
+<span class="k">try</span><span class="p">:</span>
+    <span class="n">Container</span><span class="p">(</span><span class="n">Recv</span><span class="p">())</span><span class="o">.</span><span class="n">run</span><span class="p">()</span>
+<span class="k">except</span> <span class="ne">KeyboardInterrupt</span><span class="p">:</span> <span class="k">pass</span>
+</pre></div>
+
+<p><a href="queue_browser.py">Download this file</a></p>
+
+
+          <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/75ca8b14/content/releases/qpid-proton-0.13.0/proton/python/examples/recurring_timer.py
----------------------------------------------------------------------
diff --git a/content/releases/qpid-proton-0.13.0/proton/python/examples/recurring_timer.py b/content/releases/qpid-proton-0.13.0/proton/python/examples/recurring_timer.py
new file mode 100755
index 0000000..b59dbe1
--- /dev/null
+++ b/content/releases/qpid-proton-0.13.0/proton/python/examples/recurring_timer.py
@@ -0,0 +1,43 @@
+#!/usr/bin/env python
+#
+# 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.
+#
+
+from __future__ import print_function
+from proton.reactor import Container, Handler
+
+class Recurring(Handler):
+    def __init__(self, period):
+        self.period = period
+
+    def on_reactor_init(self, event):
+        self.container = event.reactor
+        self.container.schedule(self.period, self)
+
+    def on_timer_task(self, event):
+        print("Tick...")
+        self.container.schedule(self.period, self)
+
+try:
+    container = Container(Recurring(1.0))
+    container.run()
+except KeyboardInterrupt:
+    container.stop()
+    print()
+
+

http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/content/releases/qpid-proton-0.13.0/proton/python/examples/recurring_timer.py.html
----------------------------------------------------------------------
diff --git a/content/releases/qpid-proton-0.13.0/proton/python/examples/recurring_timer.py.html b/content/releases/qpid-proton-0.13.0/proton/python/examples/recurring_timer.py.html
new file mode 100644
index 0000000..70738a7
--- /dev/null
+++ b/content/releases/qpid-proton-0.13.0/proton/python/examples/recurring_timer.py.html
@@ -0,0 +1,170 @@
+<!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>recurring_timer.py - 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/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;">
+        <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-proton-0.13.0/index.html">Qpid Proton 0.13.0</a></li><li><a href="/releases/qpid-proton-0.13.0/proton/python/examples/index.html">Proton Python Examples</a></li><li>recurring_timer.py</li></ul>
+
+        <div id="-middle-content">
+          
+<h1>recurring_timer.py</h1>
+<div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">__future__</span> <span class="kn">import</span> <span class="n">print_function</span>
+<span class="kn">from</span> <span class="nn">proton.reactor</span> <span class="kn">import</span> <span class="n">Container</span><span class="p">,</span> <span class="n">Handler</span>
+
+<span class="k">class</span> <span class="nc">Recurring</span><span class="p">(</span><span class="n">Handler</span><span class="p">):</span>
+    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">period</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">period</span> <span class="o">=</span> <span class="n">period</span>
+
+    <span class="k">def</span> <span class="nf">on_reactor_init</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">container</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">reactor</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">container</span><span class="o">.</span><span class="n">schedule</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">period</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span>
+
+    <span class="k">def</span> <span class="nf">on_timer_task</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="k">print</span><span class="p">(</span><span class="s2">&quot;Tick...&quot;</span><span class="p">)</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">container</span><span class="o">.</span><span class="n">schedule</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">period</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span>
+
+<span class="k">try</span><span class="p">:</span>
+    <span class="n">container</span> <span class="o">=</span> <span class="n">Container</span><span class="p">(</span><span class="n">Recurring</span><span class="p">(</span><span class="mf">1.0</span><span class="p">))</span>
+    <span class="n">container</span><span class="o">.</span><span class="n">run</span><span class="p">()</span>
+<span class="k">except</span> <span class="ne">KeyboardInterrupt</span><span class="p">:</span>
+    <span class="n">container</span><span class="o">.</span><span class="n">stop</span><span class="p">()</span>
+    <span class="k">print</span><span class="p">()</span>
+</pre></div>
+
+<p><a href="recurring_timer.py">Download this file</a></p>
+
+
+          <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/75ca8b14/content/releases/qpid-proton-0.13.0/proton/python/examples/recurring_timer_tornado.py
----------------------------------------------------------------------
diff --git a/content/releases/qpid-proton-0.13.0/proton/python/examples/recurring_timer_tornado.py b/content/releases/qpid-proton-0.13.0/proton/python/examples/recurring_timer_tornado.py
new file mode 100755
index 0000000..07ebd26
--- /dev/null
+++ b/content/releases/qpid-proton-0.13.0/proton/python/examples/recurring_timer_tornado.py
@@ -0,0 +1,45 @@
+#!/usr/bin/env python
+#
+# 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.
+#
+
+from __future__ import print_function
+import time
+from proton.reactor import Handler
+from proton_tornado import TornadoLoop
+
+class Recurring(Handler):
+    def __init__(self, period):
+        self.period = period
+
+    def on_start(self, event):
+        self.container = event.container
+        self.container.schedule(time.time() + self.period, subject=self)
+
+    def on_timer(self, event):
+        print("Tick...")
+        self.container.schedule(time.time() + self.period, subject=self)
+
+try:
+    container = TornadoLoop(Recurring(1.0))
+    container.run()
+except KeyboardInterrupt:
+    container.stop()
+    print()
+
+


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


[20/26] qpid-site git commit: QPID-7350: Examples that should have gone with the previous commit

Posted by jr...@apache.org.
http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/content/releases/qpid-proton-0.13.0/proton/cpp/examples/server.cpp.html
----------------------------------------------------------------------
diff --git a/content/releases/qpid-proton-0.13.0/proton/cpp/examples/server.cpp.html b/content/releases/qpid-proton-0.13.0/proton/cpp/examples/server.cpp.html
new file mode 100644
index 0000000..f326305
--- /dev/null
+++ b/content/releases/qpid-proton-0.13.0/proton/cpp/examples/server.cpp.html
@@ -0,0 +1,228 @@
+<!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>server.cpp - 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/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;">
+        <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-proton-0.13.0/index.html">Qpid Proton 0.13.0</a></li><li><a href="/releases/qpid-proton-0.13.0/proton/cpp/examples/index.html">Proton C++ Examples</a></li><li>server.cpp</li></ul>
+
+        <div id="-middle-content">
+          
+<h1>server.cpp</h1>
+<div class="highlight"><pre><span></span><span class="cp">#include</span> <span class="cpf">&quot;options.hpp&quot;</span><span class="cp"></span>
+
+<span class="cp">#include</span> <span class="cpf">&lt;proton/connection.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/default_container.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/messaging_handler.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/tracker.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/url.hpp&gt;</span><span class="cp"></span>
+
+<span class="cp">#include</span> <span class="cpf">&lt;iostream&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;map&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;string&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;cctype&gt;</span><span class="cp"></span>
+
+<span class="cp">#include</span> <span class="cpf">&quot;fake_cpp11.hpp&quot;</span><span class="cp"></span>
+
+<span class="k">class</span> <span class="nc">server</span> <span class="o">:</span> <span class="k">public</span> <span class="n">proton</span><span class="o">::</span><span class="n">messaging_handler</span> <span class="p">{</span>
+  <span class="k">private</span><span class="o">:</span>
+    <span class="k">typedef</span> <span class="n">std</span><span class="o">::</span><span class="n">map</span><span class="o">&lt;</span><span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="p">,</span> <span class="n">proton</span><span class="o">::</span><span class="n">sender</span><span class="o">&gt;</span> <span class="n">sender_map</span><span class="p">;</span>
+    <span class="n">proton</span><span class="o">::</span><span class="n">url</span> <span class="n">url</span><span class="p">;</span>
+    <span class="n">proton</span><span class="o">::</span><span class="n">connection</span> <span class="n">connection</span><span class="p">;</span>
+    <span class="n">sender_map</span> <span class="n">senders</span><span class="p">;</span>
+
+  <span class="k">public</span><span class="o">:</span>
+    <span class="n">server</span><span class="p">(</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="o">&amp;</span><span class="n">u</span><span class="p">)</span> <span class="o">:</span> <span class="n">url</span><span class="p">(</span><span class="n">u</span><span class="p">)</span> <span class="p">{}</span>
+
+    <span class="kt">void</span> <span class="n">on_container_start</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">container</span> <span class="o">&amp;</span><span class="n">c</span><span class="p">)</span> <span class="n">OVERRIDE</span> <span class="p">{</span>
+        <span class="n">connection</span> <span class="o">=</span> <span class="n">c</span><span class="p">.</span><span class="n">connect</span><span class="p">(</span><span class="n">url</span><span class="p">);</span>
+        <span class="n">connection</span><span class="p">.</span><span class="n">open_receiver</span><span class="p">(</span><span class="n">url</span><span class="p">.</span><span class="n">path</span><span class="p">());</span>
+
+        <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;server connected to &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">url</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+    <span class="p">}</span>
+
+    <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">to_upper</span><span class="p">(</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="o">&amp;</span><span class="n">s</span><span class="p">)</span> <span class="p">{</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">uc</span><span class="p">(</span><span class="n">s</span><span class="p">);</span>
+        <span class="kt">size_t</span> <span class="n">l</span> <span class="o">=</span> <span class="n">uc</span><span class="p">.</span><span class="n">size</span><span class="p">();</span>
+        <span class="k">for</span> <span class="p">(</span><span class="kt">size_t</span> <span class="n">i</span><span class="o">=</span><span class="mi">0</span><span class="p">;</span> <span class="n">i</span><span class="o">&lt;</span><span class="n">l</span><span class="p">;</span> <span class="n">i</span><span class="o">++</span><span class="p">)</span>
+            <span class="n">uc</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="k">static_cast</span><span class="o">&lt;</span><span class="kt">char</span><span class="o">&gt;</span><span class="p">(</span><span class="n">std</span><span class="o">::</span><span class="n">toupper</span><span class="p">(</span><span class="n">uc</span><span class="p">[</span><span class="n">i</span><span class="p">]));</span>
+        <span class="k">return</span> <span class="n">uc</span><span class="p">;</span>
+    <span class="p">}</span>
+
+    <span class="kt">void</span> <span class="n">on_message</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">delivery</span> <span class="o">&amp;</span><span class="p">,</span> <span class="n">proton</span><span class="o">::</span><span class="n">message</span> <span class="o">&amp;</span><span class="n">m</span><span class="p">)</span> <span class="n">OVERRIDE</span> <span class="p">{</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Received &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">m</span><span class="p">.</span><span class="n">body</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+
+        <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">reply_to</span> <span class="o">=</span> <span class="n">m</span><span class="p">.</span><span class="n">reply_to</span><span class="p">();</span>
+        <span class="n">proton</span><span class="o">::</span><span class="n">message</span> <span class="n">reply</span><span class="p">;</span>
+
+        <span class="n">reply</span><span class="p">.</span><span class="n">to</span><span class="p">(</span><span class="n">reply_to</span><span class="p">);</span>
+        <span class="n">reply</span><span class="p">.</span><span class="n">body</span><span class="p">(</span><span class="n">to_upper</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">get</span><span class="o">&lt;</span><span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="o">&gt;</span><span class="p">(</span><span class="n">m</span><span class="p">.</span><span class="n">body</span><span class="p">())));</span>
+        <span class="n">reply</span><span class="p">.</span><span class="n">correlation_id</span><span class="p">(</span><span class="n">m</span><span class="p">.</span><span class="n">correlation_id</span><span class="p">());</span>
+
+        <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">senders</span><span class="p">[</span><span class="n">reply_to</span><span class="p">])</span> <span class="p">{</span>
+            <span class="n">senders</span><span class="p">[</span><span class="n">reply_to</span><span class="p">]</span> <span class="o">=</span> <span class="n">connection</span><span class="p">.</span><span class="n">open_sender</span><span class="p">(</span><span class="n">reply_to</span><span class="p">);</span>
+        <span class="p">}</span>
+
+        <span class="n">senders</span><span class="p">[</span><span class="n">reply_to</span><span class="p">].</span><span class="n">send</span><span class="p">(</span><span class="n">reply</span><span class="p">);</span>
+    <span class="p">}</span>
+<span class="p">};</span>
+
+<span class="kt">int</span> <span class="nf">main</span><span class="p">(</span><span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">**</span><span class="n">argv</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">address</span><span class="p">(</span><span class="s">&quot;amqp://0.0.0.0:5672/examples&quot;</span><span class="p">);</span>
+    <span class="n">example</span><span class="o">::</span><span class="n">options</span> <span class="n">opts</span><span class="p">(</span><span class="n">argc</span><span class="p">,</span> <span class="n">argv</span><span class="p">);</span>
+
+    <span class="n">opts</span><span class="p">.</span><span class="n">add_value</span><span class="p">(</span><span class="n">address</span><span class="p">,</span> <span class="sc">&#39;a&#39;</span><span class="p">,</span> <span class="s">&quot;address&quot;</span><span class="p">,</span> <span class="s">&quot;listen on URL&quot;</span><span class="p">,</span> <span class="s">&quot;URL&quot;</span><span class="p">);</span>
+
+    <span class="k">try</span> <span class="p">{</span>
+        <span class="n">opts</span><span class="p">.</span><span class="n">parse</span><span class="p">();</span>
+
+        <span class="n">server</span> <span class="n">srv</span><span class="p">(</span><span class="n">address</span><span class="p">);</span>
+        <span class="n">proton</span><span class="o">::</span><span class="n">default_container</span><span class="p">(</span><span class="n">srv</span><span class="p">).</span><span class="n">run</span><span class="p">();</span>
+
+        <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">catch</span> <span class="p">(</span><span class="k">const</span> <span class="n">example</span><span class="o">::</span><span class="n">bad_option</span><span class="o">&amp;</span> <span class="n">e</span><span class="p">)</span> <span class="p">{</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="n">opts</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span> <span class="o">&lt;&lt;</span> <span class="n">e</span><span class="p">.</span><span class="n">what</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">catch</span> <span class="p">(</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">exception</span><span class="o">&amp;</span> <span class="n">e</span><span class="p">)</span> <span class="p">{</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">cerr</span> <span class="o">&lt;&lt;</span> <span class="n">e</span><span class="p">.</span><span class="n">what</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+    <span class="p">}</span>
+
+    <span class="k">return</span> <span class="mi">1</span><span class="p">;</span>
+<span class="p">}</span>
+</pre></div>
+
+<p><a href="server.cpp">Download this file</a></p>
+
+
+          <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/75ca8b14/content/releases/qpid-proton-0.13.0/proton/cpp/examples/server_direct.cpp
----------------------------------------------------------------------
diff --git a/content/releases/qpid-proton-0.13.0/proton/cpp/examples/server_direct.cpp b/content/releases/qpid-proton-0.13.0/proton/cpp/examples/server_direct.cpp
new file mode 100755
index 0000000..220934f
--- /dev/null
+++ b/content/releases/qpid-proton-0.13.0/proton/cpp/examples/server_direct.cpp
@@ -0,0 +1,119 @@
+/*
+ *
+ * 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.
+ *
+ */
+
+#include "options.hpp"
+
+#include <proton/default_container.hpp>
+#include <proton/messaging_handler.hpp>
+#include <proton/sender.hpp>
+#include <proton/source_options.hpp>
+#include <proton/tracker.hpp>
+
+#include <iostream>
+#include <map>
+#include <string>
+#include <sstream>
+#include <cctype>
+
+#include "fake_cpp11.hpp"
+
+class server : public proton::messaging_handler {
+  private:
+    typedef std::map<std::string, proton::sender> sender_map;
+    std::string url;
+    sender_map senders;
+    int address_counter;
+
+  public:
+    server(const std::string &u) : url(u), address_counter(0) {}
+
+    void on_container_start(proton::container &c) OVERRIDE {
+        c.listen(url);
+        std::cout << "server listening on " << url << std::endl;
+    }
+
+    std::string to_upper(const std::string &s) {
+        std::string uc(s);
+        size_t l = uc.size();
+
+        for (size_t i=0; i<l; i++)
+            uc[i] = static_cast<char>(std::toupper(uc[i]));
+
+        return uc;
+    }
+
+    std::string generate_address() {
+        std::ostringstream addr;
+        addr << "server" << address_counter++;
+
+        return addr.str();
+    }
+
+    void on_sender_open(proton::sender &sender) OVERRIDE {
+        if (sender.source().dynamic()) {
+            std::string addr = generate_address();
+            sender.open(proton::sender_options().source(proton::source_options().address(addr)));
+            senders[addr] = sender;
+        }
+    }
+
+    void on_message(proton::delivery &, proton::message &m) OVERRIDE {
+        std::cout << "Received " << m.body() << std::endl;
+
+        std::string reply_to = m.reply_to();
+        sender_map::iterator it = senders.find(reply_to);
+
+        if (it == senders.end()) {
+            std::cout << "No link for reply_to: " << reply_to << std::endl;
+        } else {
+            proton::sender sender = it->second;
+            proton::message reply;
+
+            reply.to(reply_to);
+            reply.body(to_upper(proton::get<std::string>(m.body())));
+            reply.correlation_id(m.correlation_id());
+
+            sender.send(reply);
+        }
+    }
+};
+
+int main(int argc, char **argv) {
+    std::string address("amqp://127.0.0.1:5672/examples");
+    example::options opts(argc, argv);
+
+    opts.add_value(address, 'a', "address", "listen on URL", "URL");
+
+    try {
+        opts.parse();
+
+        server srv(address);
+        proton::default_container(srv).run();
+
+        return 0;
+    } catch (const example::bad_option& e) {
+        std::cout << opts << std::endl << e.what() << std::endl;
+    } catch (const std::exception& e) {
+        std::cerr << e.what() << std::endl;
+    }
+
+    return 1;
+}

http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/content/releases/qpid-proton-0.13.0/proton/cpp/examples/server_direct.cpp.html
----------------------------------------------------------------------
diff --git a/content/releases/qpid-proton-0.13.0/proton/cpp/examples/server_direct.cpp.html b/content/releases/qpid-proton-0.13.0/proton/cpp/examples/server_direct.cpp.html
new file mode 100644
index 0000000..c41a49d
--- /dev/null
+++ b/content/releases/qpid-proton-0.13.0/proton/cpp/examples/server_direct.cpp.html
@@ -0,0 +1,247 @@
+<!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>server_direct.cpp - 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/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;">
+        <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-proton-0.13.0/index.html">Qpid Proton 0.13.0</a></li><li><a href="/releases/qpid-proton-0.13.0/proton/cpp/examples/index.html">Proton C++ Examples</a></li><li>server_direct.cpp</li></ul>
+
+        <div id="-middle-content">
+          
+<h1>server_direct.cpp</h1>
+<div class="highlight"><pre><span></span><span class="cp">#include</span> <span class="cpf">&quot;options.hpp&quot;</span><span class="cp"></span>
+
+<span class="cp">#include</span> <span class="cpf">&lt;proton/default_container.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/messaging_handler.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/sender.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/source_options.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/tracker.hpp&gt;</span><span class="cp"></span>
+
+<span class="cp">#include</span> <span class="cpf">&lt;iostream&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;map&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;string&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;sstream&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;cctype&gt;</span><span class="cp"></span>
+
+<span class="cp">#include</span> <span class="cpf">&quot;fake_cpp11.hpp&quot;</span><span class="cp"></span>
+
+<span class="k">class</span> <span class="nc">server</span> <span class="o">:</span> <span class="k">public</span> <span class="n">proton</span><span class="o">::</span><span class="n">messaging_handler</span> <span class="p">{</span>
+  <span class="k">private</span><span class="o">:</span>
+    <span class="k">typedef</span> <span class="n">std</span><span class="o">::</span><span class="n">map</span><span class="o">&lt;</span><span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="p">,</span> <span class="n">proton</span><span class="o">::</span><span class="n">sender</span><span class="o">&gt;</span> <span class="n">sender_map</span><span class="p">;</span>
+    <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">url</span><span class="p">;</span>
+    <span class="n">sender_map</span> <span class="n">senders</span><span class="p">;</span>
+    <span class="kt">int</span> <span class="n">address_counter</span><span class="p">;</span>
+
+  <span class="k">public</span><span class="o">:</span>
+    <span class="n">server</span><span class="p">(</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="o">&amp;</span><span class="n">u</span><span class="p">)</span> <span class="o">:</span> <span class="n">url</span><span class="p">(</span><span class="n">u</span><span class="p">),</span> <span class="n">address_counter</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span> <span class="p">{}</span>
+
+    <span class="kt">void</span> <span class="n">on_container_start</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">container</span> <span class="o">&amp;</span><span class="n">c</span><span class="p">)</span> <span class="n">OVERRIDE</span> <span class="p">{</span>
+        <span class="n">c</span><span class="p">.</span><span class="n">listen</span><span class="p">(</span><span class="n">url</span><span class="p">);</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;server listening on &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">url</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+    <span class="p">}</span>
+
+    <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">to_upper</span><span class="p">(</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="o">&amp;</span><span class="n">s</span><span class="p">)</span> <span class="p">{</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">uc</span><span class="p">(</span><span class="n">s</span><span class="p">);</span>
+        <span class="kt">size_t</span> <span class="n">l</span> <span class="o">=</span> <span class="n">uc</span><span class="p">.</span><span class="n">size</span><span class="p">();</span>
+
+        <span class="k">for</span> <span class="p">(</span><span class="kt">size_t</span> <span class="n">i</span><span class="o">=</span><span class="mi">0</span><span class="p">;</span> <span class="n">i</span><span class="o">&lt;</span><span class="n">l</span><span class="p">;</span> <span class="n">i</span><span class="o">++</span><span class="p">)</span>
+            <span class="n">uc</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="k">static_cast</span><span class="o">&lt;</span><span class="kt">char</span><span class="o">&gt;</span><span class="p">(</span><span class="n">std</span><span class="o">::</span><span class="n">toupper</span><span class="p">(</span><span class="n">uc</span><span class="p">[</span><span class="n">i</span><span class="p">]));</span>
+
+        <span class="k">return</span> <span class="n">uc</span><span class="p">;</span>
+    <span class="p">}</span>
+
+    <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">generate_address</span><span class="p">()</span> <span class="p">{</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">ostringstream</span> <span class="n">addr</span><span class="p">;</span>
+        <span class="n">addr</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;server&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">address_counter</span><span class="o">++</span><span class="p">;</span>
+
+        <span class="k">return</span> <span class="n">addr</span><span class="p">.</span><span class="n">str</span><span class="p">();</span>
+    <span class="p">}</span>
+
+    <span class="kt">void</span> <span class="n">on_sender_open</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">sender</span> <span class="o">&amp;</span><span class="n">sender</span><span class="p">)</span> <span class="n">OVERRIDE</span> <span class="p">{</span>
+        <span class="k">if</span> <span class="p">(</span><span class="n">sender</span><span class="p">.</span><span class="n">source</span><span class="p">().</span><span class="n">dynamic</span><span class="p">())</span> <span class="p">{</span>
+            <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">addr</span> <span class="o">=</span> <span class="n">generate_address</span><span class="p">();</span>
+            <span class="n">sender</span><span class="p">.</span><span class="n">open</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">sender_options</span><span class="p">().</span><span class="n">source</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">source_options</span><span class="p">().</span><span class="n">address</span><span class="p">(</span><span class="n">addr</span><span class="p">)));</span>
+            <span class="n">senders</span><span class="p">[</span><span class="n">addr</span><span class="p">]</span> <span class="o">=</span> <span class="n">sender</span><span class="p">;</span>
+        <span class="p">}</span>
+    <span class="p">}</span>
+
+    <span class="kt">void</span> <span class="n">on_message</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">delivery</span> <span class="o">&amp;</span><span class="p">,</span> <span class="n">proton</span><span class="o">::</span><span class="n">message</span> <span class="o">&amp;</span><span class="n">m</span><span class="p">)</span> <span class="n">OVERRIDE</span> <span class="p">{</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Received &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">m</span><span class="p">.</span><span class="n">body</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+
+        <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">reply_to</span> <span class="o">=</span> <span class="n">m</span><span class="p">.</span><span class="n">reply_to</span><span class="p">();</span>
+        <span class="n">sender_map</span><span class="o">::</span><span class="n">iterator</span> <span class="n">it</span> <span class="o">=</span> <span class="n">senders</span><span class="p">.</span><span class="n">find</span><span class="p">(</span><span class="n">reply_to</span><span class="p">);</span>
+
+        <span class="k">if</span> <span class="p">(</span><span class="n">it</span> <span class="o">==</span> <span class="n">senders</span><span class="p">.</span><span class="n">end</span><span class="p">())</span> <span class="p">{</span>
+            <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;No link for reply_to: &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">reply_to</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+        <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
+            <span class="n">proton</span><span class="o">::</span><span class="n">sender</span> <span class="n">sender</span> <span class="o">=</span> <span class="n">it</span><span class="o">-&gt;</span><span class="n">second</span><span class="p">;</span>
+            <span class="n">proton</span><span class="o">::</span><span class="n">message</span> <span class="n">reply</span><span class="p">;</span>
+
+            <span class="n">reply</span><span class="p">.</span><span class="n">to</span><span class="p">(</span><span class="n">reply_to</span><span class="p">);</span>
+            <span class="n">reply</span><span class="p">.</span><span class="n">body</span><span class="p">(</span><span class="n">to_upper</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">get</span><span class="o">&lt;</span><span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="o">&gt;</span><span class="p">(</span><span class="n">m</span><span class="p">.</span><span class="n">body</span><span class="p">())));</span>
+            <span class="n">reply</span><span class="p">.</span><span class="n">correlation_id</span><span class="p">(</span><span class="n">m</span><span class="p">.</span><span class="n">correlation_id</span><span class="p">());</span>
+
+            <span class="n">sender</span><span class="p">.</span><span class="n">send</span><span class="p">(</span><span class="n">reply</span><span class="p">);</span>
+        <span class="p">}</span>
+    <span class="p">}</span>
+<span class="p">};</span>
+
+<span class="kt">int</span> <span class="nf">main</span><span class="p">(</span><span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">**</span><span class="n">argv</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">address</span><span class="p">(</span><span class="s">&quot;amqp://127.0.0.1:5672/examples&quot;</span><span class="p">);</span>
+    <span class="n">example</span><span class="o">::</span><span class="n">options</span> <span class="n">opts</span><span class="p">(</span><span class="n">argc</span><span class="p">,</span> <span class="n">argv</span><span class="p">);</span>
+
+    <span class="n">opts</span><span class="p">.</span><span class="n">add_value</span><span class="p">(</span><span class="n">address</span><span class="p">,</span> <span class="sc">&#39;a&#39;</span><span class="p">,</span> <span class="s">&quot;address&quot;</span><span class="p">,</span> <span class="s">&quot;listen on URL&quot;</span><span class="p">,</span> <span class="s">&quot;URL&quot;</span><span class="p">);</span>
+
+    <span class="k">try</span> <span class="p">{</span>
+        <span class="n">opts</span><span class="p">.</span><span class="n">parse</span><span class="p">();</span>
+
+        <span class="n">server</span> <span class="n">srv</span><span class="p">(</span><span class="n">address</span><span class="p">);</span>
+        <span class="n">proton</span><span class="o">::</span><span class="n">default_container</span><span class="p">(</span><span class="n">srv</span><span class="p">).</span><span class="n">run</span><span class="p">();</span>
+
+        <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">catch</span> <span class="p">(</span><span class="k">const</span> <span class="n">example</span><span class="o">::</span><span class="n">bad_option</span><span class="o">&amp;</span> <span class="n">e</span><span class="p">)</span> <span class="p">{</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="n">opts</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span> <span class="o">&lt;&lt;</span> <span class="n">e</span><span class="p">.</span><span class="n">what</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">catch</span> <span class="p">(</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">exception</span><span class="o">&amp;</span> <span class="n">e</span><span class="p">)</span> <span class="p">{</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">cerr</span> <span class="o">&lt;&lt;</span> <span class="n">e</span><span class="p">.</span><span class="n">what</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+    <span class="p">}</span>
+
+    <span class="k">return</span> <span class="mi">1</span><span class="p">;</span>
+<span class="p">}</span>
+</pre></div>
+
+<p><a href="server_direct.cpp">Download this file</a></p>
+
+
+          <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/75ca8b14/content/releases/qpid-proton-0.13.0/proton/cpp/examples/simple_recv.cpp
----------------------------------------------------------------------
diff --git a/content/releases/qpid-proton-0.13.0/proton/cpp/examples/simple_recv.cpp b/content/releases/qpid-proton-0.13.0/proton/cpp/examples/simple_recv.cpp
new file mode 100755
index 0000000..7621941
--- /dev/null
+++ b/content/releases/qpid-proton-0.13.0/proton/cpp/examples/simple_recv.cpp
@@ -0,0 +1,92 @@
+/*
+ *
+ * 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.
+ *
+ */
+
+#include "options.hpp"
+
+#include <proton/connection.hpp>
+#include <proton/default_container.hpp>
+#include <proton/delivery.hpp>
+#include <proton/messaging_handler.hpp>
+#include <proton/link.hpp>
+#include <proton/message_id.hpp>
+#include <proton/value.hpp>
+
+#include <iostream>
+#include <map>
+
+#include "fake_cpp11.hpp"
+
+class simple_recv : public proton::messaging_handler {
+  private:
+    std::string url;
+    proton::receiver receiver;
+    uint64_t expected;
+    uint64_t received;
+
+  public:
+    simple_recv(const std::string &s, int c) : url(s), expected(c), received(0) {}
+
+    void on_container_start(proton::container &c) OVERRIDE {
+        receiver = c.open_receiver(url);
+        std::cout << "simple_recv listening on " << url << std::endl;
+    }
+
+    void on_message(proton::delivery &d, proton::message &msg) OVERRIDE {
+        if (proton::get<uint64_t>(msg.id()) < received) {
+            return; // Ignore duplicate
+        }
+
+        if (expected == 0 || received < expected) {
+            std::cout << msg.body() << std::endl;
+            received++;
+
+            if (received == expected) {
+                d.receiver().close();
+                d.connection().close();
+            }
+        }
+    }
+};
+
+int main(int argc, char **argv) {
+    std::string address("127.0.0.1:5672/examples");
+
+    int message_count = 100;
+    example::options opts(argc, argv);
+
+    opts.add_value(address, 'a', "address", "connect to and receive from URL", "URL");
+    opts.add_value(message_count, 'm', "messages", "receive COUNT messages", "COUNT");
+
+    try {
+        opts.parse();
+
+        simple_recv recv(address, message_count);
+        proton::default_container(recv).run();
+
+        return 0;
+    } catch (const example::bad_option& e) {
+        std::cout << opts << std::endl << e.what() << std::endl;
+    } catch (const std::exception& e) {
+        std::cerr << e.what() << std::endl;
+    }
+
+    return 1;
+}

http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/content/releases/qpid-proton-0.13.0/proton/cpp/examples/simple_recv.cpp.html
----------------------------------------------------------------------
diff --git a/content/releases/qpid-proton-0.13.0/proton/cpp/examples/simple_recv.cpp.html b/content/releases/qpid-proton-0.13.0/proton/cpp/examples/simple_recv.cpp.html
new file mode 100644
index 0000000..9affee5
--- /dev/null
+++ b/content/releases/qpid-proton-0.13.0/proton/cpp/examples/simple_recv.cpp.html
@@ -0,0 +1,220 @@
+<!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>simple_recv.cpp - 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/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;">
+        <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-proton-0.13.0/index.html">Qpid Proton 0.13.0</a></li><li><a href="/releases/qpid-proton-0.13.0/proton/cpp/examples/index.html">Proton C++ Examples</a></li><li>simple_recv.cpp</li></ul>
+
+        <div id="-middle-content">
+          
+<h1>simple_recv.cpp</h1>
+<div class="highlight"><pre><span></span><span class="cp">#include</span> <span class="cpf">&quot;options.hpp&quot;</span><span class="cp"></span>
+
+<span class="cp">#include</span> <span class="cpf">&lt;proton/connection.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/default_container.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/delivery.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/messaging_handler.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/link.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/message_id.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/value.hpp&gt;</span><span class="cp"></span>
+
+<span class="cp">#include</span> <span class="cpf">&lt;iostream&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;map&gt;</span><span class="cp"></span>
+
+<span class="cp">#include</span> <span class="cpf">&quot;fake_cpp11.hpp&quot;</span><span class="cp"></span>
+
+<span class="k">class</span> <span class="nc">simple_recv</span> <span class="o">:</span> <span class="k">public</span> <span class="n">proton</span><span class="o">::</span><span class="n">messaging_handler</span> <span class="p">{</span>
+  <span class="k">private</span><span class="o">:</span>
+    <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">url</span><span class="p">;</span>
+    <span class="n">proton</span><span class="o">::</span><span class="n">receiver</span> <span class="n">receiver</span><span class="p">;</span>
+    <span class="kt">uint64_t</span> <span class="n">expected</span><span class="p">;</span>
+    <span class="kt">uint64_t</span> <span class="n">received</span><span class="p">;</span>
+
+  <span class="k">public</span><span class="o">:</span>
+    <span class="n">simple_recv</span><span class="p">(</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="o">&amp;</span><span class="n">s</span><span class="p">,</span> <span class="kt">int</span> <span class="n">c</span><span class="p">)</span> <span class="o">:</span> <span class="n">url</span><span class="p">(</span><span class="n">s</span><span class="p">),</span> <span class="n">expected</span><span class="p">(</span><span class="n">c</span><span class="p">),</span> <span class="n">received</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span> <span class="p">{}</span>
+
+    <span class="kt">void</span> <span class="n">on_container_start</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">container</span> <span class="o">&amp;</span><span class="n">c</span><span class="p">)</span> <span class="n">OVERRIDE</span> <span class="p">{</span>
+        <span class="n">receiver</span> <span class="o">=</span> <span class="n">c</span><span class="p">.</span><span class="n">open_receiver</span><span class="p">(</span><span class="n">url</span><span class="p">);</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;simple_recv listening on &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">url</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+    <span class="p">}</span>
+
+    <span class="kt">void</span> <span class="n">on_message</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">delivery</span> <span class="o">&amp;</span><span class="n">d</span><span class="p">,</span> <span class="n">proton</span><span class="o">::</span><span class="n">message</span> <span class="o">&amp;</span><span class="n">msg</span><span class="p">)</span> <span class="n">OVERRIDE</span> <span class="p">{</span>
+        <span class="k">if</span> <span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">get</span><span class="o">&lt;</span><span class="kt">uint64_t</span><span class="o">&gt;</span><span class="p">(</span><span class="n">msg</span><span class="p">.</span><span class="n">id</span><span class="p">())</span> <span class="o">&lt;</span> <span class="n">received</span><span class="p">)</span> <span class="p">{</span>
+            <span class="k">return</span><span class="p">;</span> <span class="c1">// Ignore duplicate</span>
+        <span class="p">}</span>
+
+        <span class="k">if</span> <span class="p">(</span><span class="n">expected</span> <span class="o">==</span> <span class="mi">0</span> <span class="o">||</span> <span class="n">received</span> <span class="o">&lt;</span> <span class="n">expected</span><span class="p">)</span> <span class="p">{</span>
+            <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="n">msg</span><span class="p">.</span><span class="n">body</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+            <span class="n">received</span><span class="o">++</span><span class="p">;</span>
+
+            <span class="k">if</span> <span class="p">(</span><span class="n">received</span> <span class="o">==</span> <span class="n">expected</span><span class="p">)</span> <span class="p">{</span>
+                <span class="n">d</span><span class="p">.</span><span class="n">receiver</span><span class="p">().</span><span class="n">close</span><span class="p">();</span>
+                <span class="n">d</span><span class="p">.</span><span class="n">connection</span><span class="p">().</span><span class="n">close</span><span class="p">();</span>
+            <span class="p">}</span>
+        <span class="p">}</span>
+    <span class="p">}</span>
+<span class="p">};</span>
+
+<span class="kt">int</span> <span class="nf">main</span><span class="p">(</span><span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">**</span><span class="n">argv</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">address</span><span class="p">(</span><span class="s">&quot;127.0.0.1:5672/examples&quot;</span><span class="p">);</span>
+
+    <span class="kt">int</span> <span class="n">message_count</span> <span class="o">=</span> <span class="mi">100</span><span class="p">;</span>
+    <span class="n">example</span><span class="o">::</span><span class="n">options</span> <span class="n">opts</span><span class="p">(</span><span class="n">argc</span><span class="p">,</span> <span class="n">argv</span><span class="p">);</span>
+
+    <span class="n">opts</span><span class="p">.</span><span class="n">add_value</span><span class="p">(</span><span class="n">address</span><span class="p">,</span> <span class="sc">&#39;a&#39;</span><span class="p">,</span> <span class="s">&quot;address&quot;</span><span class="p">,</span> <span class="s">&quot;connect to and receive from URL&quot;</span><span class="p">,</span> <span class="s">&quot;URL&quot;</span><span class="p">);</span>
+    <span class="n">opts</span><span class="p">.</span><span class="n">add_value</span><span class="p">(</span><span class="n">message_count</span><span class="p">,</span> <span class="sc">&#39;m&#39;</span><span class="p">,</span> <span class="s">&quot;messages&quot;</span><span class="p">,</span> <span class="s">&quot;receive COUNT messages&quot;</span><span class="p">,</span> <span class="s">&quot;COUNT&quot;</span><span class="p">);</span>
+
+    <span class="k">try</span> <span class="p">{</span>
+        <span class="n">opts</span><span class="p">.</span><span class="n">parse</span><span class="p">();</span>
+
+        <span class="n">simple_recv</span> <span class="n">recv</span><span class="p">(</span><span class="n">address</span><span class="p">,</span> <span class="n">message_count</span><span class="p">);</span>
+        <span class="n">proton</span><span class="o">::</span><span class="n">default_container</span><span class="p">(</span><span class="n">recv</span><span class="p">).</span><span class="n">run</span><span class="p">();</span>
+
+        <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">catch</span> <span class="p">(</span><span class="k">const</span> <span class="n">example</span><span class="o">::</span><span class="n">bad_option</span><span class="o">&amp;</span> <span class="n">e</span><span class="p">)</span> <span class="p">{</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="n">opts</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span> <span class="o">&lt;&lt;</span> <span class="n">e</span><span class="p">.</span><span class="n">what</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">catch</span> <span class="p">(</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">exception</span><span class="o">&amp;</span> <span class="n">e</span><span class="p">)</span> <span class="p">{</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">cerr</span> <span class="o">&lt;&lt;</span> <span class="n">e</span><span class="p">.</span><span class="n">what</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+    <span class="p">}</span>
+
+    <span class="k">return</span> <span class="mi">1</span><span class="p">;</span>
+<span class="p">}</span>
+</pre></div>
+
+<p><a href="simple_recv.cpp">Download this file</a></p>
+
+
+          <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/75ca8b14/content/releases/qpid-proton-0.13.0/proton/cpp/examples/simple_send.cpp
----------------------------------------------------------------------
diff --git a/content/releases/qpid-proton-0.13.0/proton/cpp/examples/simple_send.cpp b/content/releases/qpid-proton-0.13.0/proton/cpp/examples/simple_send.cpp
new file mode 100755
index 0000000..3ce72b4
--- /dev/null
+++ b/content/releases/qpid-proton-0.13.0/proton/cpp/examples/simple_send.cpp
@@ -0,0 +1,100 @@
+/*
+ *
+ * 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.
+ *
+ */
+
+#include "options.hpp"
+
+#include <proton/connection.hpp>
+#include <proton/default_container.hpp>
+#include <proton/messaging_handler.hpp>
+#include <proton/tracker.hpp>
+#include <proton/value.hpp>
+
+#include <iostream>
+#include <map>
+
+#include "fake_cpp11.hpp"
+
+class simple_send : public proton::messaging_handler {
+  private:
+    std::string url;
+    proton::sender sender;
+    int sent;
+    int confirmed;
+    int total;
+
+  public:
+    simple_send(const std::string &s, int c) : url(s), sent(0), confirmed(0), total(c) {}
+
+    void on_container_start(proton::container &c) OVERRIDE {
+        sender = c.open_sender(url);
+    }
+
+    void on_sendable(proton::sender &s) OVERRIDE {
+        while (s.credit() && sent < total) {
+            proton::message msg;
+            std::map<std::string, int> m;
+            m["sequence"] = sent + 1;
+
+            msg.id(sent + 1);
+            msg.body(m);
+
+            s.send(msg);
+            sent++;
+        }
+    }
+
+    void on_tracker_accept(proton::tracker &t) OVERRIDE {
+        confirmed++;
+
+        if (confirmed == total) {
+            std::cout << "all messages confirmed" << std::endl;
+            t.connection().close();
+        }
+    }
+
+    void on_transport_close(proton::transport &) OVERRIDE {
+        sent = confirmed;
+    }
+};
+
+int main(int argc, char **argv) {
+    std::string address("127.0.0.1:5672/examples");
+    int message_count = 100;
+    example::options opts(argc, argv);
+
+    opts.add_value(address, 'a', "address", "connect and send to URL", "URL");
+    opts.add_value(message_count, 'm', "messages", "send COUNT messages", "COUNT");
+
+    try {
+        opts.parse();
+
+        simple_send send(address, message_count);
+        proton::default_container(send).run();
+
+        return 0;
+    } catch (const example::bad_option& e) {
+        std::cout << opts << std::endl << e.what() << std::endl;
+    } catch (const std::exception& e) {
+        std::cerr << e.what() << std::endl;
+    }
+
+    return 1;
+}

http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/content/releases/qpid-proton-0.13.0/proton/cpp/examples/simple_send.cpp.html
----------------------------------------------------------------------
diff --git a/content/releases/qpid-proton-0.13.0/proton/cpp/examples/simple_send.cpp.html b/content/releases/qpid-proton-0.13.0/proton/cpp/examples/simple_send.cpp.html
new file mode 100644
index 0000000..b02cbb6
--- /dev/null
+++ b/content/releases/qpid-proton-0.13.0/proton/cpp/examples/simple_send.cpp.html
@@ -0,0 +1,228 @@
+<!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>simple_send.cpp - 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/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;">
+        <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-proton-0.13.0/index.html">Qpid Proton 0.13.0</a></li><li><a href="/releases/qpid-proton-0.13.0/proton/cpp/examples/index.html">Proton C++ Examples</a></li><li>simple_send.cpp</li></ul>
+
+        <div id="-middle-content">
+          
+<h1>simple_send.cpp</h1>
+<div class="highlight"><pre><span></span><span class="cp">#include</span> <span class="cpf">&quot;options.hpp&quot;</span><span class="cp"></span>
+
+<span class="cp">#include</span> <span class="cpf">&lt;proton/connection.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/default_container.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/messaging_handler.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/tracker.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/value.hpp&gt;</span><span class="cp"></span>
+
+<span class="cp">#include</span> <span class="cpf">&lt;iostream&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;map&gt;</span><span class="cp"></span>
+
+<span class="cp">#include</span> <span class="cpf">&quot;fake_cpp11.hpp&quot;</span><span class="cp"></span>
+
+<span class="k">class</span> <span class="nc">simple_send</span> <span class="o">:</span> <span class="k">public</span> <span class="n">proton</span><span class="o">::</span><span class="n">messaging_handler</span> <span class="p">{</span>
+  <span class="k">private</span><span class="o">:</span>
+    <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">url</span><span class="p">;</span>
+    <span class="n">proton</span><span class="o">::</span><span class="n">sender</span> <span class="n">sender</span><span class="p">;</span>
+    <span class="kt">int</span> <span class="n">sent</span><span class="p">;</span>
+    <span class="kt">int</span> <span class="n">confirmed</span><span class="p">;</span>
+    <span class="kt">int</span> <span class="n">total</span><span class="p">;</span>
+
+  <span class="k">public</span><span class="o">:</span>
+    <span class="n">simple_send</span><span class="p">(</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="o">&amp;</span><span class="n">s</span><span class="p">,</span> <span class="kt">int</span> <span class="n">c</span><span class="p">)</span> <span class="o">:</span> <span class="n">url</span><span class="p">(</span><span class="n">s</span><span class="p">),</span> <span class="n">sent</span><span class="p">(</span><span class="mi">0</span><span class="p">),</span> <span class="n">confirmed</span><span class="p">(</span><span class="mi">0</span><span class="p">),</span> <span class="n">total</span><span class="p">(</span><span class="n">c</span><span class="p">)</span> <span class="p">{}</span>
+
+    <span class="kt">void</span> <span class="n">on_container_start</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">container</span> <span class="o">&amp;</span><span class="n">c</span><span class="p">)</span> <span class="n">OVERRIDE</span> <span class="p">{</span>
+        <span class="n">sender</span> <span class="o">=</span> <span class="n">c</span><span class="p">.</span><span class="n">open_sender</span><span class="p">(</span><span class="n">url</span><span class="p">);</span>
+    <span class="p">}</span>
+
+    <span class="kt">void</span> <span class="n">on_sendable</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">sender</span> <span class="o">&amp;</span><span class="n">s</span><span class="p">)</span> <span class="n">OVERRIDE</span> <span class="p">{</span>
+        <span class="k">while</span> <span class="p">(</span><span class="n">s</span><span class="p">.</span><span class="n">credit</span><span class="p">()</span> <span class="o">&amp;&amp;</span> <span class="n">sent</span> <span class="o">&lt;</span> <span class="n">total</span><span class="p">)</span> <span class="p">{</span>
+            <span class="n">proton</span><span class="o">::</span><span class="n">message</span> <span class="n">msg</span><span class="p">;</span>
+            <span class="n">std</span><span class="o">::</span><span class="n">map</span><span class="o">&lt;</span><span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="p">,</span> <span class="kt">int</span><span class="o">&gt;</span> <span class="n">m</span><span class="p">;</span>
+            <span class="n">m</span><span class="p">[</span><span class="s">&quot;sequence&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">sent</span> <span class="o">+</span> <span class="mi">1</span><span class="p">;</span>
+
+            <span class="n">msg</span><span class="p">.</span><span class="n">id</span><span class="p">(</span><span class="n">sent</span> <span class="o">+</span> <span class="mi">1</span><span class="p">);</span>
+            <span class="n">msg</span><span class="p">.</span><span class="n">body</span><span class="p">(</span><span class="n">m</span><span class="p">);</span>
+
+            <span class="n">s</span><span class="p">.</span><span class="n">send</span><span class="p">(</span><span class="n">msg</span><span class="p">);</span>
+            <span class="n">sent</span><span class="o">++</span><span class="p">;</span>
+        <span class="p">}</span>
+    <span class="p">}</span>
+
+    <span class="kt">void</span> <span class="n">on_tracker_accept</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">tracker</span> <span class="o">&amp;</span><span class="n">t</span><span class="p">)</span> <span class="n">OVERRIDE</span> <span class="p">{</span>
+        <span class="n">confirmed</span><span class="o">++</span><span class="p">;</span>
+
+        <span class="k">if</span> <span class="p">(</span><span class="n">confirmed</span> <span class="o">==</span> <span class="n">total</span><span class="p">)</span> <span class="p">{</span>
+            <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;all messages confirmed&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+            <span class="n">t</span><span class="p">.</span><span class="n">connection</span><span class="p">().</span><span class="n">close</span><span class="p">();</span>
+        <span class="p">}</span>
+    <span class="p">}</span>
+
+    <span class="kt">void</span> <span class="n">on_transport_close</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">transport</span> <span class="o">&amp;</span><span class="p">)</span> <span class="n">OVERRIDE</span> <span class="p">{</span>
+        <span class="n">sent</span> <span class="o">=</span> <span class="n">confirmed</span><span class="p">;</span>
+    <span class="p">}</span>
+<span class="p">};</span>
+
+<span class="kt">int</span> <span class="nf">main</span><span class="p">(</span><span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">**</span><span class="n">argv</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">address</span><span class="p">(</span><span class="s">&quot;127.0.0.1:5672/examples&quot;</span><span class="p">);</span>
+    <span class="kt">int</span> <span class="n">message_count</span> <span class="o">=</span> <span class="mi">100</span><span class="p">;</span>
+    <span class="n">example</span><span class="o">::</span><span class="n">options</span> <span class="n">opts</span><span class="p">(</span><span class="n">argc</span><span class="p">,</span> <span class="n">argv</span><span class="p">);</span>
+
+    <span class="n">opts</span><span class="p">.</span><span class="n">add_value</span><span class="p">(</span><span class="n">address</span><span class="p">,</span> <span class="sc">&#39;a&#39;</span><span class="p">,</span> <span class="s">&quot;address&quot;</span><span class="p">,</span> <span class="s">&quot;connect and send to URL&quot;</span><span class="p">,</span> <span class="s">&quot;URL&quot;</span><span class="p">);</span>
+    <span class="n">opts</span><span class="p">.</span><span class="n">add_value</span><span class="p">(</span><span class="n">message_count</span><span class="p">,</span> <span class="sc">&#39;m&#39;</span><span class="p">,</span> <span class="s">&quot;messages&quot;</span><span class="p">,</span> <span class="s">&quot;send COUNT messages&quot;</span><span class="p">,</span> <span class="s">&quot;COUNT&quot;</span><span class="p">);</span>
+
+    <span class="k">try</span> <span class="p">{</span>
+        <span class="n">opts</span><span class="p">.</span><span class="n">parse</span><span class="p">();</span>
+
+        <span class="n">simple_send</span> <span class="n">send</span><span class="p">(</span><span class="n">address</span><span class="p">,</span> <span class="n">message_count</span><span class="p">);</span>
+        <span class="n">proton</span><span class="o">::</span><span class="n">default_container</span><span class="p">(</span><span class="n">send</span><span class="p">).</span><span class="n">run</span><span class="p">();</span>
+
+        <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">catch</span> <span class="p">(</span><span class="k">const</span> <span class="n">example</span><span class="o">::</span><span class="n">bad_option</span><span class="o">&amp;</span> <span class="n">e</span><span class="p">)</span> <span class="p">{</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="n">opts</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span> <span class="o">&lt;&lt;</span> <span class="n">e</span><span class="p">.</span><span class="n">what</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">catch</span> <span class="p">(</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">exception</span><span class="o">&amp;</span> <span class="n">e</span><span class="p">)</span> <span class="p">{</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">cerr</span> <span class="o">&lt;&lt;</span> <span class="n">e</span><span class="p">.</span><span class="n">what</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+    <span class="p">}</span>
+
+    <span class="k">return</span> <span class="mi">1</span><span class="p">;</span>
+<span class="p">}</span>
+</pre></div>
+
+<p><a href="simple_send.cpp">Download this file</a></p>
+
+
+          <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


[11/26] qpid-site git commit: QPID-7350: Examples that should have gone with the previous commit

Posted by jr...@apache.org.
http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/content/releases/qpid-proton-0.13.0/proton/python/examples/tx_send.py.html
----------------------------------------------------------------------
diff --git a/content/releases/qpid-proton-0.13.0/proton/python/examples/tx_send.py.html b/content/releases/qpid-proton-0.13.0/proton/python/examples/tx_send.py.html
new file mode 100644
index 0000000..0089e2e
--- /dev/null
+++ b/content/releases/qpid-proton-0.13.0/proton/python/examples/tx_send.py.html
@@ -0,0 +1,218 @@
+<!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>tx_send.py - 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/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;">
+        <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-proton-0.13.0/index.html">Qpid Proton 0.13.0</a></li><li><a href="/releases/qpid-proton-0.13.0/proton/python/examples/index.html">Proton Python Examples</a></li><li>tx_send.py</li></ul>
+
+        <div id="-middle-content">
+          
+<h1>tx_send.py</h1>
+<div class="highlight"><pre><span></span><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>
+<span class="kn">from</span> <span class="nn">proton</span> <span class="kn">import</span> <span class="n">Message</span><span class="p">,</span> <span class="n">Url</span>
+<span class="kn">from</span> <span class="nn">proton.reactor</span> <span class="kn">import</span> <span class="n">Container</span>
+<span class="kn">from</span> <span class="nn">proton.handlers</span> <span class="kn">import</span> <span class="n">MessagingHandler</span><span class="p">,</span> <span class="n">TransactionHandler</span>
+
+<span class="k">class</span> <span class="nc">TxSend</span><span class="p">(</span><span class="n">MessagingHandler</span><span class="p">,</span> <span class="n">TransactionHandler</span><span class="p">):</span>
+    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">url</span><span class="p">,</span> <span class="n">messages</span><span class="p">,</span> <span class="n">batch_size</span><span class="p">):</span>
+        <span class="nb">super</span><span class="p">(</span><span class="n">TxSend</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">__init__</span><span class="p">()</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">url</span> <span class="o">=</span> <span class="n">Url</span><span class="p">(</span><span class="n">url</span><span class="p">)</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">current_batch</span> <span class="o">=</span> <span class="mi">0</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">committed</span> <span class="o">=</span> <span class="mi">0</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">confirmed</span> <span class="o">=</span> <span class="mi">0</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">total</span> <span class="o">=</span> <span class="n">messages</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">batch_size</span> <span class="o">=</span> <span class="n">batch_size</span>
+
+    <span class="k">def</span> <span class="nf">on_start</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">container</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">container</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">conn</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">container</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">url</span><span class="p">)</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">sender</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">container</span><span class="o">.</span><span class="n">create_sender</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">conn</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">url</span><span class="o">.</span><span class="n">path</span><span class="p">)</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">container</span><span class="o">.</span><span class="n">declare_transaction</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">conn</span><span class="p">,</span> <span class="n">handler</span><span class="o">=</span><span class="bp">self</span><span class="p">)</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">transaction</span> <span class="o">=</span> <span class="bp">None</span>
+
+    <span class="k">def</span> <span class="nf">on_transaction_declared</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">transaction</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">transaction</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">send</span><span class="p">()</span>
+
+    <span class="k">def</span> <span class="nf">on_sendable</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">send</span><span class="p">()</span>
+
+    <span class="k">def</span> <span class="nf">send</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">transaction</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">sender</span><span class="o">.</span><span class="n">credit</span> <span class="ow">and</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">committed</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">current_batch</span><span class="p">)</span> <span class="o">&lt;</span> <span class="bp">self</span><span class="o">.</span><span class="n">total</span><span class="p">:</span>
+            <span class="n">seq</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">committed</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">current_batch</span> <span class="o">+</span> <span class="mi">1</span>
+            <span class="n">msg</span> <span class="o">=</span> <span class="n">Message</span><span class="p">(</span><span class="nb">id</span><span class="o">=</span><span class="n">seq</span><span class="p">,</span> <span class="n">body</span><span class="o">=</span><span class="p">{</span><span class="s1">&#39;sequence&#39;</span><span class="p">:</span><span class="n">seq</span><span class="p">})</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">transaction</span><span class="o">.</span><span class="n">send</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">sender</span><span class="p">,</span> <span class="n">msg</span><span class="p">)</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">current_batch</span> <span class="o">+=</span> <span class="mi">1</span>
+            <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">current_batch</span> <span class="o">==</span> <span class="bp">self</span><span class="o">.</span><span class="n">batch_size</span><span class="p">:</span>
+                <span class="bp">self</span><span class="o">.</span><span class="n">transaction</span><span class="o">.</span><span class="n">commit</span><span class="p">()</span>
+                <span class="bp">self</span><span class="o">.</span><span class="n">transaction</span> <span class="o">=</span> <span class="bp">None</span>
+
+    <span class="k">def</span> <span class="nf">on_accepted</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="k">if</span> <span class="n">event</span><span class="o">.</span><span class="n">sender</span> <span class="o">==</span> <span class="bp">self</span><span class="o">.</span><span class="n">sender</span><span class="p">:</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">confirmed</span> <span class="o">+=</span> <span class="mi">1</span>
+
+    <span class="k">def</span> <span class="nf">on_transaction_committed</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">committed</span> <span class="o">+=</span> <span class="bp">self</span><span class="o">.</span><span class="n">current_batch</span>
+        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">committed</span> <span class="o">==</span> <span class="bp">self</span><span class="o">.</span><span class="n">total</span><span class="p">:</span>
+            <span class="k">print</span><span class="p">(</span><span class="s2">&quot;all messages committed&quot;</span><span class="p">)</span>
+            <span class="n">event</span><span class="o">.</span><span class="n">connection</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
+        <span class="k">else</span><span class="p">:</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">current_batch</span> <span class="o">=</span> <span class="mi">0</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">container</span><span class="o">.</span><span class="n">declare_transaction</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">conn</span><span class="p">,</span> <span class="n">handler</span><span class="o">=</span><span class="bp">self</span><span class="p">)</span>
+
+    <span class="k">def</span> <span class="nf">on_disconnected</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">current_batch</span> <span class="o">=</span> <span class="mi">0</span>
+
+<span class="n">parser</span> <span class="o">=</span> <span class="n">optparse</span><span class="o">.</span><span class="n">OptionParser</span><span class="p">(</span><span class="n">usage</span><span class="o">=</span><span class="s2">&quot;usage: %prog [options]&quot;</span><span class="p">,</span>
+                               <span class="n">description</span><span class="o">=</span><span class="s2">&quot;Send messages transactionally to the supplied address.&quot;</span><span class="p">)</span>
+<span class="n">parser</span><span class="o">.</span><span class="n">add_option</span><span class="p">(</span><span class="s2">&quot;-a&quot;</span><span class="p">,</span> <span class="s2">&quot;--address&quot;</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="s2">&quot;localhost:5672/examples&quot;</span><span class="p">,</span>
+                  <span class="n">help</span><span class="o">=</span><span class="s2">&quot;address to which messages are sent (default </span><span class="si">%d</span><span class="s2">efault)&quot;</span><span class="p">)</span>
+<span class="n">parser</span><span class="o">.</span><span class="n">add_option</span><span class="p">(</span><span class="s2">&quot;-m&quot;</span><span class="p">,</span> <span class="s2">&quot;--messages&quot;</span><span class="p">,</span> <span class="nb">type</span><span class="o">=</span><span class="s2">&quot;int&quot;</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="mi">100</span><span class="p">,</span>
+                  <span class="n">help</span><span class="o">=</span><span class="s2">&quot;number of messages to send (default </span><span class="si">%d</span><span class="s2">efault)&quot;</span><span class="p">)</span>
+<span class="n">parser</span><span class="o">.</span><span class="n">add_option</span><span class="p">(</span><span class="s2">&quot;-b&quot;</span><span class="p">,</span> <span class="s2">&quot;--batch-size&quot;</span><span class="p">,</span> <span class="nb">type</span><span class="o">=</span><span class="s2">&quot;int&quot;</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="mi">10</span><span class="p">,</span>
+                  <span class="n">help</span><span class="o">=</span><span class="s2">&quot;number of messages in each transaction (default </span><span class="si">%d</span><span class="s2">efault)&quot;</span><span class="p">)</span>
+<span class="n">opts</span><span class="p">,</span> <span class="n">args</span> <span class="o">=</span> <span class="n">parser</span><span class="o">.</span><span class="n">parse_args</span><span class="p">()</span>
+
+<span class="k">try</span><span class="p">:</span>
+    <span class="n">Container</span><span class="p">(</span><span class="n">TxSend</span><span class="p">(</span><span class="n">opts</span><span class="o">.</span><span class="n">address</span><span class="p">,</span> <span class="n">opts</span><span class="o">.</span><span class="n">messages</span><span class="p">,</span> <span class="n">opts</span><span class="o">.</span><span class="n">batch_size</span><span class="p">))</span><span class="o">.</span><span class="n">run</span><span class="p">()</span>
+<span class="k">except</span> <span class="ne">KeyboardInterrupt</span><span class="p">:</span> <span class="k">pass</span>
+</pre></div>
+
+<p><a href="tx_send.py">Download this file</a></p>
+
+
+          <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/75ca8b14/input/releases/qpid-proton-0.13.0/proton/cpp/examples/broker.cpp
----------------------------------------------------------------------
diff --git a/input/releases/qpid-proton-0.13.0/proton/cpp/examples/broker.cpp b/input/releases/qpid-proton-0.13.0/proton/cpp/examples/broker.cpp
new file mode 100644
index 0000000..bb3aefb
--- /dev/null
+++ b/input/releases/qpid-proton-0.13.0/proton/cpp/examples/broker.cpp
@@ -0,0 +1,276 @@
+/*
+ *
+ * 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.
+ *
+ */
+
+#include "options.hpp"
+
+#include <proton/connection.hpp>
+#include <proton/default_container.hpp>
+#include <proton/delivery.hpp>
+#include <proton/messaging_handler.hpp>
+#include <proton/message.hpp>
+#include <proton/receiver_options.hpp>
+#include <proton/sender.hpp>
+#include <proton/sender_options.hpp>
+#include <proton/source_options.hpp>
+#include <proton/target_options.hpp>
+#include <proton/transport.hpp>
+#include <proton/url.hpp>
+
+#include <deque>
+#include <iostream>
+#include <list>
+#include <map>
+#include <string>
+
+#include "fake_cpp11.hpp"
+
+/// A simple implementation of a queue.
+class queue {
+  public:
+    queue(const std::string &name, bool dynamic = false) : name_(name), dynamic_(dynamic) {}
+
+    std::string name() const { return name_; }
+
+    void subscribe(proton::sender s) {
+        consumers_.push_back(s);
+    }
+
+    // Return true if queue can be deleted.
+    bool unsubscribe(proton::sender s) {
+        consumers_.remove(s);
+        return (consumers_.size() == 0 && (dynamic_ || messages_.size() == 0));
+    }
+
+    void publish(const proton::message &m) {
+        messages_.push_back(m);
+        dispatch(0);
+    }
+
+    void dispatch(proton::sender *s) {
+        while (deliver_to(s)) {}
+    }
+
+    bool deliver_to(proton::sender *s) {
+        // Deliver to single sender if supplied, else all consumers
+        int count = s ? 1 : consumers_.size();
+
+        if (!count) return false;
+
+        bool result = false;
+        sender_list::iterator it = consumers_.begin();
+
+        if (!s && count) {
+            s = &*it;
+        }
+
+        while (messages_.size()) {
+            if (s->credit()) {
+                const proton::message& m = messages_.front();
+
+                s->send(m);
+                messages_.pop_front();
+                result = true;
+            }
+
+            if (--count) {
+                it++;
+            } else {
+                return result;
+            }
+        }
+
+        return false;
+    }
+
+  private:
+    typedef std::deque<proton::message> message_queue;
+    typedef std::list<proton::sender> sender_list;
+
+    std::string name_;
+    bool dynamic_;
+    message_queue messages_;
+    sender_list consumers_;
+};
+
+/// A collection of queues and queue factory, used by a broker.
+class queues {
+  public:
+    queues() : next_id_(0) {}
+    virtual ~queues() {}
+
+    // Get or create a queue.
+    virtual queue &get(const std::string &address = std::string()) {
+        if (address.empty()) {
+            throw std::runtime_error("empty queue name");
+        }
+
+        queue*& q = queues_[address];
+
+        if (!q) q = new queue(address);
+
+        return *q;
+    }
+
+    // Create a dynamic queue with a unique name.
+    virtual queue &dynamic() {
+        std::ostringstream os;
+        os << "q" << next_id_++;
+        queue *q = queues_[os.str()] = new queue(os.str(), true);
+
+        return *q;
+    }
+
+    // Delete the named queue
+    virtual void erase(std::string &name) {
+        delete queues_[name];
+        queues_.erase(name);
+    }
+
+  protected:
+    typedef std::map<std::string, queue *> queue_map;
+    queue_map queues_;
+    uint64_t next_id_; // Use to generate unique queue IDs.
+};
+
+// A handler to implement broker logic
+class broker_handler : public proton::messaging_handler {
+  public:
+    broker_handler(queues& qs) : queues_(qs) {}
+
+    void on_sender_open(proton::sender &sender) OVERRIDE {
+        proton::source src(sender.source());
+        queue &q = src.dynamic() ?
+            queues_.dynamic() : queues_.get(src.address());
+        sender.open(proton::sender_options().source(proton::source_options().address(q.name())));
+        q.subscribe(sender);
+        std::cout << "broker outgoing link from " << q.name() << std::endl;
+    }
+
+    void on_receiver_open(proton::receiver &receiver) OVERRIDE {
+        std::string address = receiver.target().address();
+        if (!address.empty()) {
+            receiver.open(proton::receiver_options().target(proton::target_options().address(address)));
+            std::cout << "broker incoming link to " << address << std::endl;
+        }
+    }
+
+    void unsubscribe(proton::sender lnk) {
+        std::string address = lnk.source().address();
+
+        if (queues_.get(address).unsubscribe(lnk)) {
+            queues_.erase(address);
+        }
+    }
+
+    void on_sender_close(proton::sender &sender) OVERRIDE {
+        unsubscribe(sender);
+    }
+
+    void on_connection_close(proton::connection &c) OVERRIDE {
+        remove_stale_consumers(c);
+    }
+
+    void on_transport_close(proton::transport &t) OVERRIDE {
+        remove_stale_consumers(t.connection());
+    }
+
+    void on_transport_error(proton::transport &t) OVERRIDE {
+        std::cout << "broker client disconnect: " << t.error().what() << std::endl;
+    }
+
+    void on_error(const proton::error_condition &c) OVERRIDE {
+        std::cerr << "broker error: " << c.what() << std::endl;
+    }
+
+    void remove_stale_consumers(proton::connection connection) {
+        proton::session_range r1 = connection.sessions();
+        for (proton::session_iterator i1 = r1.begin(); i1 != r1.end(); ++i1) {
+            proton::sender_range r2 = i1->senders();
+            for (proton::sender_iterator i2 = r2.begin(); i2 != r2.end(); ++i2) {
+                if (i2->active())
+                    unsubscribe(*i2);
+            }
+        }
+    }
+
+    void on_sendable(proton::sender &s) OVERRIDE {
+        std::string address = s.source().address();
+
+        queues_.get(address).dispatch(&s);
+    }
+
+    void on_message(proton::delivery &d, proton::message &m) OVERRIDE {
+        std::string address = d.receiver().target().address();
+        queues_.get(address).publish(m);
+    }
+
+  protected:
+    queues& queues_;
+};
+
+
+// The broker
+class broker {
+  public:
+    broker(const std::string& url) : handler_(url, queues_) {}
+
+    proton::messaging_handler& handler() { return handler_; }
+
+  private:
+    class my_handler : public broker_handler {
+      public:
+        my_handler(const std::string& u, queues& qs) : broker_handler(qs), url_(u) {}
+
+        void on_container_start(proton::container &c) OVERRIDE {
+            c.listen(url_);
+            std::cout << "broker listening on " << url_ << std::endl;
+        }
+
+      private:
+        const std::string& url_;
+    };
+
+  private:
+    queues queues_;
+    my_handler handler_;
+};
+
+int main(int argc, char **argv) {
+    std::string url("0.0.0.0");
+    example::options opts(argc, argv);
+
+    opts.add_value(url, 'a', "address", "listen on URL", "URL");
+
+    try {
+        opts.parse();
+
+        broker b(url);
+        proton::default_container(b.handler()).run();
+
+        return 0;
+    } catch (const example::bad_option& e) {
+        std::cout << opts << std::endl << e.what() << std::endl;
+    } catch (const std::exception& e) {
+        std::cerr << e.what() << std::endl;
+    }
+
+    return 1;
+}

http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/input/releases/qpid-proton-0.13.0/proton/cpp/examples/broker.cpp.html.in
----------------------------------------------------------------------
diff --git a/input/releases/qpid-proton-0.13.0/proton/cpp/examples/broker.cpp.html.in b/input/releases/qpid-proton-0.13.0/proton/cpp/examples/broker.cpp.html.in
new file mode 100644
index 0000000..0878d30
--- /dev/null
+++ b/input/releases/qpid-proton-0.13.0/proton/cpp/examples/broker.cpp.html.in
@@ -0,0 +1,260 @@
+
+<h1>broker.cpp</h1>
+<div class="highlight"><pre><span></span><span class="cp">#include</span> <span class="cpf">&quot;options.hpp&quot;</span><span class="cp"></span>
+
+<span class="cp">#include</span> <span class="cpf">&lt;proton/connection.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/default_container.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/delivery.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/messaging_handler.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/message.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/receiver_options.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/sender.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/sender_options.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/source_options.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/target_options.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/transport.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/url.hpp&gt;</span><span class="cp"></span>
+
+<span class="cp">#include</span> <span class="cpf">&lt;deque&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;iostream&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;list&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;map&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;string&gt;</span><span class="cp"></span>
+
+<span class="cp">#include</span> <span class="cpf">&quot;fake_cpp11.hpp&quot;</span><span class="cp"></span>
+
+<span class="c1">/// A simple implementation of a queue.</span>
+<span class="k">class</span> <span class="nc">queue</span> <span class="p">{</span>
+  <span class="k">public</span><span class="o">:</span>
+    <span class="n">queue</span><span class="p">(</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="o">&amp;</span><span class="n">name</span><span class="p">,</span> <span class="kt">bool</span> <span class="n">dynamic</span> <span class="o">=</span> <span class="nb">false</span><span class="p">)</span> <span class="o">:</span> <span class="n">name_</span><span class="p">(</span><span class="n">name</span><span class="p">),</span> <span class="n">dynamic_</span><span class="p">(</span><span class="n">dynamic</span><span class="p">)</span> <span class="p">{}</span>
+
+    <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">name</span><span class="p">()</span> <span class="k">const</span> <span class="p">{</span> <span class="k">return</span> <span class="n">name_</span><span class="p">;</span> <span class="p">}</span>
+
+    <span class="kt">void</span> <span class="n">subscribe</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">sender</span> <span class="n">s</span><span class="p">)</span> <span class="p">{</span>
+        <span class="n">consumers_</span><span class="p">.</span><span class="n">push_back</span><span class="p">(</span><span class="n">s</span><span class="p">);</span>
+    <span class="p">}</span>
+
+    <span class="c1">// Return true if queue can be deleted.</span>
+    <span class="kt">bool</span> <span class="n">unsubscribe</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">sender</span> <span class="n">s</span><span class="p">)</span> <span class="p">{</span>
+        <span class="n">consumers_</span><span class="p">.</span><span class="n">remove</span><span class="p">(</span><span class="n">s</span><span class="p">);</span>
+        <span class="k">return</span> <span class="p">(</span><span class="n">consumers_</span><span class="p">.</span><span class="n">size</span><span class="p">()</span> <span class="o">==</span> <span class="mi">0</span> <span class="o">&amp;&amp;</span> <span class="p">(</span><span class="n">dynamic_</span> <span class="o">||</span> <span class="n">messages_</span><span class="p">.</span><span class="n">size</span><span class="p">()</span> <span class="o">==</span> <span class="mi">0</span><span class="p">));</span>
+    <span class="p">}</span>
+
+    <span class="kt">void</span> <span class="n">publish</span><span class="p">(</span><span class="k">const</span> <span class="n">proton</span><span class="o">::</span><span class="n">message</span> <span class="o">&amp;</span><span class="n">m</span><span class="p">)</span> <span class="p">{</span>
+        <span class="n">messages_</span><span class="p">.</span><span class="n">push_back</span><span class="p">(</span><span class="n">m</span><span class="p">);</span>
+        <span class="n">dispatch</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
+    <span class="p">}</span>
+
+    <span class="kt">void</span> <span class="n">dispatch</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">sender</span> <span class="o">*</span><span class="n">s</span><span class="p">)</span> <span class="p">{</span>
+        <span class="k">while</span> <span class="p">(</span><span class="n">deliver_to</span><span class="p">(</span><span class="n">s</span><span class="p">))</span> <span class="p">{}</span>
+    <span class="p">}</span>
+
+    <span class="kt">bool</span> <span class="n">deliver_to</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">sender</span> <span class="o">*</span><span class="n">s</span><span class="p">)</span> <span class="p">{</span>
+        <span class="c1">// Deliver to single sender if supplied, else all consumers</span>
+        <span class="kt">int</span> <span class="n">count</span> <span class="o">=</span> <span class="n">s</span> <span class="o">?</span> <span class="mi">1</span> <span class="o">:</span> <span class="n">consumers_</span><span class="p">.</span><span class="n">size</span><span class="p">();</span>
+
+        <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">count</span><span class="p">)</span> <span class="k">return</span> <span class="nb">false</span><span class="p">;</span>
+
+        <span class="kt">bool</span> <span class="n">result</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
+        <span class="n">sender_list</span><span class="o">::</span><span class="n">iterator</span> <span class="n">it</span> <span class="o">=</span> <span class="n">consumers_</span><span class="p">.</span><span class="n">begin</span><span class="p">();</span>
+
+        <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">s</span> <span class="o">&amp;&amp;</span> <span class="n">count</span><span class="p">)</span> <span class="p">{</span>
+            <span class="n">s</span> <span class="o">=</span> <span class="o">&amp;*</span><span class="n">it</span><span class="p">;</span>
+        <span class="p">}</span>
+
+        <span class="k">while</span> <span class="p">(</span><span class="n">messages_</span><span class="p">.</span><span class="n">size</span><span class="p">())</span> <span class="p">{</span>
+            <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">credit</span><span class="p">())</span> <span class="p">{</span>
+                <span class="k">const</span> <span class="n">proton</span><span class="o">::</span><span class="n">message</span><span class="o">&amp;</span> <span class="n">m</span> <span class="o">=</span> <span class="n">messages_</span><span class="p">.</span><span class="n">front</span><span class="p">();</span>
+
+                <span class="n">s</span><span class="o">-&gt;</span><span class="n">send</span><span class="p">(</span><span class="n">m</span><span class="p">);</span>
+                <span class="n">messages_</span><span class="p">.</span><span class="n">pop_front</span><span class="p">();</span>
+                <span class="n">result</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
+            <span class="p">}</span>
+
+            <span class="k">if</span> <span class="p">(</span><span class="o">--</span><span class="n">count</span><span class="p">)</span> <span class="p">{</span>
+                <span class="n">it</span><span class="o">++</span><span class="p">;</span>
+            <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
+                <span class="k">return</span> <span class="n">result</span><span class="p">;</span>
+            <span class="p">}</span>
+        <span class="p">}</span>
+
+        <span class="k">return</span> <span class="nb">false</span><span class="p">;</span>
+    <span class="p">}</span>
+
+  <span class="k">private</span><span class="o">:</span>
+    <span class="k">typedef</span> <span class="n">std</span><span class="o">::</span><span class="n">deque</span><span class="o">&lt;</span><span class="n">proton</span><span class="o">::</span><span class="n">message</span><span class="o">&gt;</span> <span class="n">message_queue</span><span class="p">;</span>
+    <span class="k">typedef</span> <span class="n">std</span><span class="o">::</span><span class="n">list</span><span class="o">&lt;</span><span class="n">proton</span><span class="o">::</span><span class="n">sender</span><span class="o">&gt;</span> <span class="n">sender_list</span><span class="p">;</span>
+
+    <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">name_</span><span class="p">;</span>
+    <span class="kt">bool</span> <span class="n">dynamic_</span><span class="p">;</span>
+    <span class="n">message_queue</span> <span class="n">messages_</span><span class="p">;</span>
+    <span class="n">sender_list</span> <span class="n">consumers_</span><span class="p">;</span>
+<span class="p">};</span>
+
+<span class="c1">/// A collection of queues and queue factory, used by a broker.</span>
+<span class="k">class</span> <span class="nc">queues</span> <span class="p">{</span>
+  <span class="k">public</span><span class="o">:</span>
+    <span class="n">queues</span><span class="p">()</span> <span class="o">:</span> <span class="n">next_id_</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span> <span class="p">{}</span>
+    <span class="k">virtual</span> <span class="o">~</span><span class="n">queues</span><span class="p">()</span> <span class="p">{}</span>
+
+    <span class="c1">// Get or create a queue.</span>
+    <span class="k">virtual</span> <span class="n">queue</span> <span class="o">&amp;</span><span class="n">get</span><span class="p">(</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="o">&amp;</span><span class="n">address</span> <span class="o">=</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="p">())</span> <span class="p">{</span>
+        <span class="k">if</span> <span class="p">(</span><span class="n">address</span><span class="p">.</span><span class="n">empty</span><span class="p">())</span> <span class="p">{</span>
+            <span class="k">throw</span> <span class="n">std</span><span class="o">::</span><span class="n">runtime_error</span><span class="p">(</span><span class="s">&quot;empty queue name&quot;</span><span class="p">);</span>
+        <span class="p">}</span>
+
+        <span class="n">queue</span><span class="o">*&amp;</span> <span class="n">q</span> <span class="o">=</span> <span class="n">queues_</span><span class="p">[</span><span class="n">address</span><span class="p">];</span>
+
+        <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">q</span><span class="p">)</span> <span class="n">q</span> <span class="o">=</span> <span class="k">new</span> <span class="n">queue</span><span class="p">(</span><span class="n">address</span><span class="p">);</span>
+
+        <span class="k">return</span> <span class="o">*</span><span class="n">q</span><span class="p">;</span>
+    <span class="p">}</span>
+
+    <span class="c1">// Create a dynamic queue with a unique name.</span>
+    <span class="k">virtual</span> <span class="n">queue</span> <span class="o">&amp;</span><span class="n">dynamic</span><span class="p">()</span> <span class="p">{</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">ostringstream</span> <span class="n">os</span><span class="p">;</span>
+        <span class="n">os</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;q&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">next_id_</span><span class="o">++</span><span class="p">;</span>
+        <span class="n">queue</span> <span class="o">*</span><span class="n">q</span> <span class="o">=</span> <span class="n">queues_</span><span class="p">[</span><span class="n">os</span><span class="p">.</span><span class="n">str</span><span class="p">()]</span> <span class="o">=</span> <span class="k">new</span> <span class="n">queue</span><span class="p">(</span><span class="n">os</span><span class="p">.</span><span class="n">str</span><span class="p">(),</span> <span class="nb">true</span><span class="p">);</span>
+
+        <span class="k">return</span> <span class="o">*</span><span class="n">q</span><span class="p">;</span>
+    <span class="p">}</span>
+
+    <span class="c1">// Delete the named queue</span>
+    <span class="k">virtual</span> <span class="kt">void</span> <span class="n">erase</span><span class="p">(</span><span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="o">&amp;</span><span class="n">name</span><span class="p">)</span> <span class="p">{</span>
+        <span class="k">delete</span> <span class="n">queues_</span><span class="p">[</span><span class="n">name</span><span class="p">];</span>
+        <span class="n">queues_</span><span class="p">.</span><span class="n">erase</span><span class="p">(</span><span class="n">name</span><span class="p">);</span>
+    <span class="p">}</span>
+
+  <span class="k">protected</span><span class="o">:</span>
+    <span class="k">typedef</span> <span class="n">std</span><span class="o">::</span><span class="n">map</span><span class="o">&lt;</span><span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="p">,</span> <span class="n">queue</span> <span class="o">*&gt;</span> <span class="n">queue_map</span><span class="p">;</span>
+    <span class="n">queue_map</span> <span class="n">queues_</span><span class="p">;</span>
+    <span class="kt">uint64_t</span> <span class="n">next_id_</span><span class="p">;</span> <span class="c1">// Use to generate unique queue IDs.</span>
+<span class="p">};</span>
+
+<span class="c1">// A handler to implement broker logic</span>
+<span class="k">class</span> <span class="nc">broker_handler</span> <span class="o">:</span> <span class="k">public</span> <span class="n">proton</span><span class="o">::</span><span class="n">messaging_handler</span> <span class="p">{</span>
+  <span class="k">public</span><span class="o">:</span>
+    <span class="n">broker_handler</span><span class="p">(</span><span class="n">queues</span><span class="o">&amp;</span> <span class="n">qs</span><span class="p">)</span> <span class="o">:</span> <span class="n">queues_</span><span class="p">(</span><span class="n">qs</span><span class="p">)</span> <span class="p">{}</span>
+
+    <span class="kt">void</span> <span class="n">on_sender_open</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">sender</span> <span class="o">&amp;</span><span class="n">sender</span><span class="p">)</span> <span class="n">OVERRIDE</span> <span class="p">{</span>
+        <span class="n">proton</span><span class="o">::</span><span class="n">source</span> <span class="n">src</span><span class="p">(</span><span class="n">sender</span><span class="p">.</span><span class="n">source</span><span class="p">());</span>
+        <span class="n">queue</span> <span class="o">&amp;</span><span class="n">q</span> <span class="o">=</span> <span class="n">src</span><span class="p">.</span><span class="n">dynamic</span><span class="p">()</span> <span class="o">?</span>
+            <span class="n">queues_</span><span class="p">.</span><span class="n">dynamic</span><span class="p">()</span> <span class="o">:</span> <span class="n">queues_</span><span class="p">.</span><span class="n">get</span><span class="p">(</span><span class="n">src</span><span class="p">.</span><span class="n">address</span><span class="p">());</span>
+        <span class="n">sender</span><span class="p">.</span><span class="n">open</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">sender_options</span><span class="p">().</span><span class="n">source</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">source_options</span><span class="p">().</span><span class="n">address</span><span class="p">(</span><span class="n">q</span><span class="p">.</span><span class="n">name</span><span class="p">())));</span>
+        <span class="n">q</span><span class="p">.</span><span class="n">subscribe</span><span class="p">(</span><span class="n">sender</span><span class="p">);</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;broker outgoing link from &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">q</span><span class="p">.</span><span class="n">name</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+    <span class="p">}</span>
+
+    <span class="kt">void</span> <span class="n">on_receiver_open</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">receiver</span> <span class="o">&amp;</span><span class="n">receiver</span><span class="p">)</span> <span class="n">OVERRIDE</span> <span class="p">{</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">address</span> <span class="o">=</span> <span class="n">receiver</span><span class="p">.</span><span class="n">target</span><span class="p">().</span><span class="n">address</span><span class="p">();</span>
+        <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">address</span><span class="p">.</span><span class="n">empty</span><span class="p">())</span> <span class="p">{</span>
+            <span class="n">receiver</span><span class="p">.</span><span class="n">open</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">receiver_options</span><span class="p">().</span><span class="n">target</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">target_options</span><span class="p">().</span><span class="n">address</span><span class="p">(</span><span class="n">address</span><span class="p">)));</span>
+            <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;broker incoming link to &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">address</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+        <span class="p">}</span>
+    <span class="p">}</span>
+
+    <span class="kt">void</span> <span class="n">unsubscribe</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">sender</span> <span class="n">lnk</span><span class="p">)</span> <span class="p">{</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">address</span> <span class="o">=</span> <span class="n">lnk</span><span class="p">.</span><span class="n">source</span><span class="p">().</span><span class="n">address</span><span class="p">();</span>
+
+        <span class="k">if</span> <span class="p">(</span><span class="n">queues_</span><span class="p">.</span><span class="n">get</span><span class="p">(</span><span class="n">address</span><span class="p">).</span><span class="n">unsubscribe</span><span class="p">(</span><span class="n">lnk</span><span class="p">))</span> <span class="p">{</span>
+            <span class="n">queues_</span><span class="p">.</span><span class="n">erase</span><span class="p">(</span><span class="n">address</span><span class="p">);</span>
+        <span class="p">}</span>
+    <span class="p">}</span>
+
+    <span class="kt">void</span> <span class="n">on_sender_close</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">sender</span> <span class="o">&amp;</span><span class="n">sender</span><span class="p">)</span> <span class="n">OVERRIDE</span> <span class="p">{</span>
+        <span class="n">unsubscribe</span><span class="p">(</span><span class="n">sender</span><span class="p">);</span>
+    <span class="p">}</span>
+
+    <span class="kt">void</span> <span class="n">on_connection_close</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">connection</span> <span class="o">&amp;</span><span class="n">c</span><span class="p">)</span> <span class="n">OVERRIDE</span> <span class="p">{</span>
+        <span class="n">remove_stale_consumers</span><span class="p">(</span><span class="n">c</span><span class="p">);</span>
+    <span class="p">}</span>
+
+    <span class="kt">void</span> <span class="n">on_transport_close</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">transport</span> <span class="o">&amp;</span><span class="n">t</span><span class="p">)</span> <span class="n">OVERRIDE</span> <span class="p">{</span>
+        <span class="n">remove_stale_consumers</span><span class="p">(</span><span class="n">t</span><span class="p">.</span><span class="n">connection</span><span class="p">());</span>
+    <span class="p">}</span>
+
+    <span class="kt">void</span> <span class="n">on_transport_error</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">transport</span> <span class="o">&amp;</span><span class="n">t</span><span class="p">)</span> <span class="n">OVERRIDE</span> <span class="p">{</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;broker client disconnect: &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">t</span><span class="p">.</span><span class="n">error</span><span class="p">().</span><span class="n">what</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+    <span class="p">}</span>
+
+    <span class="kt">void</span> <span class="n">on_error</span><span class="p">(</span><span class="k">const</span> <span class="n">proton</span><span class="o">::</span><span class="n">error_condition</span> <span class="o">&amp;</span><span class="n">c</span><span class="p">)</span> <span class="n">OVERRIDE</span> <span class="p">{</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">cerr</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;broker error: &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">c</span><span class="p">.</span><span class="n">what</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+    <span class="p">}</span>
+
+    <span class="kt">void</span> <span class="n">remove_stale_consumers</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">connection</span> <span class="n">connection</span><span class="p">)</span> <span class="p">{</span>
+        <span class="n">proton</span><span class="o">::</span><span class="n">session_range</span> <span class="n">r1</span> <span class="o">=</span> <span class="n">connection</span><span class="p">.</span><span class="n">sessions</span><span class="p">();</span>
+        <span class="k">for</span> <span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">session_iterator</span> <span class="n">i1</span> <span class="o">=</span> <span class="n">r1</span><span class="p">.</span><span class="n">begin</span><span class="p">();</span> <span class="n">i1</span> <span class="o">!=</span> <span class="n">r1</span><span class="p">.</span><span class="n">end</span><span class="p">();</span> <span class="o">++</span><span class="n">i1</span><span class="p">)</span> <span class="p">{</span>
+            <span class="n">proton</span><span class="o">::</span><span class="n">sender_range</span> <span class="n">r2</span> <span class="o">=</span> <span class="n">i1</span><span class="o">-&gt;</span><span class="n">senders</span><span class="p">();</span>
+            <span class="k">for</span> <span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">sender_iterator</span> <span class="n">i2</span> <span class="o">=</span> <span class="n">r2</span><span class="p">.</span><span class="n">begin</span><span class="p">();</span> <span class="n">i2</span> <span class="o">!=</span> <span class="n">r2</span><span class="p">.</span><span class="n">end</span><span class="p">();</span> <span class="o">++</span><span class="n">i2</span><span class="p">)</span> <span class="p">{</span>
+                <span class="k">if</span> <span class="p">(</span><span class="n">i2</span><span class="o">-&gt;</span><span class="n">active</span><span class="p">())</span>
+                    <span class="n">unsubscribe</span><span class="p">(</span><span class="o">*</span><span class="n">i2</span><span class="p">);</span>
+            <span class="p">}</span>
+        <span class="p">}</span>
+    <span class="p">}</span>
+
+    <span class="kt">void</span> <span class="n">on_sendable</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">sender</span> <span class="o">&amp;</span><span class="n">s</span><span class="p">)</span> <span class="n">OVERRIDE</span> <span class="p">{</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">address</span> <span class="o">=</span> <span class="n">s</span><span class="p">.</span><span class="n">source</span><span class="p">().</span><span class="n">address</span><span class="p">();</span>
+
+        <span class="n">queues_</span><span class="p">.</span><span class="n">get</span><span class="p">(</span><span class="n">address</span><span class="p">).</span><span class="n">dispatch</span><span class="p">(</span><span class="o">&amp;</span><span class="n">s</span><span class="p">);</span>
+    <span class="p">}</span>
+
+    <span class="kt">void</span> <span class="n">on_message</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">delivery</span> <span class="o">&amp;</span><span class="n">d</span><span class="p">,</span> <span class="n">proton</span><span class="o">::</span><span class="n">message</span> <span class="o">&amp;</span><span class="n">m</span><span class="p">)</span> <span class="n">OVERRIDE</span> <span class="p">{</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">address</span> <span class="o">=</span> <span class="n">d</span><span class="p">.</span><span class="n">receiver</span><span class="p">().</span><span class="n">target</span><span class="p">().</span><span class="n">address</span><span class="p">();</span>
+        <span class="n">queues_</span><span class="p">.</span><span class="n">get</span><span class="p">(</span><span class="n">address</span><span class="p">).</span><span class="n">publish</span><span class="p">(</span><span class="n">m</span><span class="p">);</span>
+    <span class="p">}</span>
+
+  <span class="k">protected</span><span class="o">:</span>
+    <span class="n">queues</span><span class="o">&amp;</span> <span class="n">queues_</span><span class="p">;</span>
+<span class="p">};</span>
+
+
+<span class="c1">// The broker</span>
+<span class="k">class</span> <span class="nc">broker</span> <span class="p">{</span>
+  <span class="k">public</span><span class="o">:</span>
+    <span class="n">broker</span><span class="p">(</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="o">&amp;</span> <span class="n">url</span><span class="p">)</span> <span class="o">:</span> <span class="n">handler_</span><span class="p">(</span><span class="n">url</span><span class="p">,</span> <span class="n">queues_</span><span class="p">)</span> <span class="p">{}</span>
+
+    <span class="n">proton</span><span class="o">::</span><span class="n">messaging_handler</span><span class="o">&amp;</span> <span class="n">handler</span><span class="p">()</span> <span class="p">{</span> <span class="k">return</span> <span class="n">handler_</span><span class="p">;</span> <span class="p">}</span>
+
+  <span class="k">private</span><span class="o">:</span>
+    <span class="k">class</span> <span class="nc">my_handler</span> <span class="o">:</span> <span class="k">public</span> <span class="n">broker_handler</span> <span class="p">{</span>
+      <span class="k">public</span><span class="o">:</span>
+        <span class="n">my_handler</span><span class="p">(</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="o">&amp;</span> <span class="n">u</span><span class="p">,</span> <span class="n">queues</span><span class="o">&amp;</span> <span class="n">qs</span><span class="p">)</span> <span class="o">:</span> <span class="n">broker_handler</span><span class="p">(</span><span class="n">qs</span><span class="p">),</span> <span class="n">url_</span><span class="p">(</span><span class="n">u</span><span class="p">)</span> <span class="p">{}</span>
+
+        <span class="kt">void</span> <span class="n">on_container_start</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">container</span> <span class="o">&amp;</span><span class="n">c</span><span class="p">)</span> <span class="n">OVERRIDE</span> <span class="p">{</span>
+            <span class="n">c</span><span class="p">.</span><span class="n">listen</span><span class="p">(</span><span class="n">url_</span><span class="p">);</span>
+            <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;broker listening on &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">url_</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+        <span class="p">}</span>
+
+      <span class="k">private</span><span class="o">:</span>
+        <span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="o">&amp;</span> <span class="n">url_</span><span class="p">;</span>
+    <span class="p">};</span>
+
+  <span class="k">private</span><span class="o">:</span>
+    <span class="n">queues</span> <span class="n">queues_</span><span class="p">;</span>
+    <span class="n">my_handler</span> <span class="n">handler_</span><span class="p">;</span>
+<span class="p">};</span>
+
+<span class="kt">int</span> <span class="nf">main</span><span class="p">(</span><span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">**</span><span class="n">argv</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">url</span><span class="p">(</span><span class="s">&quot;0.0.0.0&quot;</span><span class="p">);</span>
+    <span class="n">example</span><span class="o">::</span><span class="n">options</span> <span class="n">opts</span><span class="p">(</span><span class="n">argc</span><span class="p">,</span> <span class="n">argv</span><span class="p">);</span>
+
+    <span class="n">opts</span><span class="p">.</span><span class="n">add_value</span><span class="p">(</span><span class="n">url</span><span class="p">,</span> <span class="sc">&#39;a&#39;</span><span class="p">,</span> <span class="s">&quot;address&quot;</span><span class="p">,</span> <span class="s">&quot;listen on URL&quot;</span><span class="p">,</span> <span class="s">&quot;URL&quot;</span><span class="p">);</span>
+
+    <span class="k">try</span> <span class="p">{</span>
+        <span class="n">opts</span><span class="p">.</span><span class="n">parse</span><span class="p">();</span>
+
+        <span class="n">broker</span> <span class="n">b</span><span class="p">(</span><span class="n">url</span><span class="p">);</span>
+        <span class="n">proton</span><span class="o">::</span><span class="n">default_container</span><span class="p">(</span><span class="n">b</span><span class="p">.</span><span class="n">handler</span><span class="p">()).</span><span class="n">run</span><span class="p">();</span>
+
+        <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">catch</span> <span class="p">(</span><span class="k">const</span> <span class="n">example</span><span class="o">::</span><span class="n">bad_option</span><span class="o">&amp;</span> <span class="n">e</span><span class="p">)</span> <span class="p">{</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="n">opts</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span> <span class="o">&lt;&lt;</span> <span class="n">e</span><span class="p">.</span><span class="n">what</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">catch</span> <span class="p">(</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">exception</span><span class="o">&amp;</span> <span class="n">e</span><span class="p">)</span> <span class="p">{</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">cerr</span> <span class="o">&lt;&lt;</span> <span class="n">e</span><span class="p">.</span><span class="n">what</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+    <span class="p">}</span>
+
+    <span class="k">return</span> <span class="mi">1</span><span class="p">;</span>
+<span class="p">}</span>
+</pre></div>
+
+<p><a href="broker.cpp">Download this file</a></p>

http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/input/releases/qpid-proton-0.13.0/proton/cpp/examples/broker.hpp
----------------------------------------------------------------------
diff --git a/input/releases/qpid-proton-0.13.0/proton/cpp/examples/broker.hpp b/input/releases/qpid-proton-0.13.0/proton/cpp/examples/broker.hpp
new file mode 100644
index 0000000..184ddc7
--- /dev/null
+++ b/input/releases/qpid-proton-0.13.0/proton/cpp/examples/broker.hpp
@@ -0,0 +1,236 @@
+#ifndef BROKER_HPP
+#define BROKER_HPP
+
+/*
+ * 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.
+ */
+
+/// @file
+///
+/// Common code used by different broker examples.
+///
+/// The examples add functionality as needed, this helps to make it
+/// easier to see the important differences between the examples.
+
+#include <proton/connection.hpp>
+#include <proton/delivery.hpp>
+#include <proton/messaging_handler.hpp>
+#include <proton/message.hpp>
+#include <proton/sasl.hpp>
+#include <proton/sender.hpp>
+#include <proton/tracker.hpp>
+#include <proton/transport.hpp>
+#include <proton/sender_options.hpp>
+#include <proton/receiver_options.hpp>
+#include <proton/source_options.hpp>
+#include <proton/target_options.hpp>
+
+#include <iostream>
+#include <deque>
+#include <map>
+#include <list>
+#include <sstream>
+
+/// A simple implementation of a queue.
+class queue {
+  public:
+    queue(const std::string &name, bool dynamic = false) : name_(name), dynamic_(dynamic) {}
+
+    std::string name() const { return name_; }
+
+    void subscribe(proton::sender s) {
+        consumers_.push_back(s);
+    }
+
+    // Return true if queue can be deleted.
+    bool unsubscribe(proton::sender s) {
+        consumers_.remove(s);
+        return (consumers_.size() == 0 && (dynamic_ || messages_.size() == 0));
+    }
+
+    void publish(const proton::message &m) {
+        messages_.push_back(m);
+        dispatch(0);
+    }
+
+    void dispatch(proton::sender *s) {
+        while (deliver_to(s)) {}
+    }
+
+    bool deliver_to(proton::sender *s) {
+        // Deliver to single sender if supplied, else all consumers
+        int count = s ? 1 : consumers_.size();
+
+        if (!count) return false;
+
+        bool result = false;
+        sender_list::iterator it = consumers_.begin();
+
+        if (!s && count) {
+            s = &*it;
+        }
+
+        while (messages_.size()) {
+            if (s->credit()) {
+                const proton::message& m = messages_.front();
+
+                s->send(m);
+                messages_.pop_front();
+                result = true;
+            }
+
+            if (--count) {
+                it++;
+            } else {
+                return result;
+            }
+        }
+
+        return false;
+    }
+
+  private:
+    typedef std::deque<proton::message> message_queue;
+    typedef std::list<proton::sender> sender_list;
+
+    std::string name_;
+    bool dynamic_;
+    message_queue messages_;
+    sender_list consumers_;
+};
+
+/// A collection of queues and queue factory, used by a broker.
+class queues {
+  public:
+    queues() : next_id_(0) {}
+    virtual ~queues() {}
+
+    // Get or create a queue.
+    virtual queue &get(const std::string &address = std::string()) {
+        if (address.empty()) {
+            throw std::runtime_error("empty queue name");
+        }
+
+        queue*& q = queues_[address];
+
+        if (!q) q = new queue(address);
+
+        return *q;
+    }
+
+    // Create a dynamic queue with a unique name.
+    virtual queue &dynamic() {
+        std::ostringstream os;
+        os << "q" << next_id_++;
+        queue *q = queues_[os.str()] = new queue(os.str(), true);
+
+        return *q;
+    }
+
+    // Delete the named queue
+    virtual void erase(std::string &name) {
+        delete queues_[name];
+        queues_.erase(name);
+    }
+
+  protected:
+    typedef std::map<std::string, queue *> queue_map;
+    queue_map queues_;
+    uint64_t next_id_; // Use to generate unique queue IDs.
+};
+
+#include <proton/config.hpp>
+
+/** Common handler logic for brokers. */
+class broker_handler : public proton::messaging_handler {
+  public:
+    broker_handler(queues& qs) : queues_(qs) {}
+
+    void on_transport_open(proton::transport &t) OVERRIDE {
+        std::cout << "Connection from user: " << t.sasl().user() << " (mechanism: " << t.sasl().mech() << ")" << std::endl;
+    }
+
+    void on_sender_open(proton::sender &sender) OVERRIDE {
+        proton::source src(sender.source());
+        queue &q = src.dynamic() ?
+            queues_.dynamic() : queues_.get(src.address());
+        sender.open(proton::sender_options().source(proton::source_options().address(q.name())));
+        q.subscribe(sender);
+        std::cout << "broker outgoing link from " << q.name() << std::endl;
+    }
+
+    void on_receiver_open(proton::receiver &receiver) OVERRIDE {
+        std::string address = receiver.target().address();
+        if (!address.empty()) {
+            receiver.open(proton::receiver_options().target(proton::target_options().address(address)));
+            std::cout << "broker incoming link to " << address << std::endl;
+        }
+    }
+
+    void unsubscribe(proton::sender lnk) {
+        std::string address = lnk.source().address();
+
+        if (queues_.get(address).unsubscribe(lnk)) {
+            queues_.erase(address);
+        }
+    }
+
+    void on_sender_close(proton::sender &sender) OVERRIDE {
+        unsubscribe(sender);
+    }
+
+    void on_connection_close(proton::connection &c) OVERRIDE {
+        remove_stale_consumers(c);
+    }
+
+    void on_transport_close(proton::transport &t) OVERRIDE {
+        remove_stale_consumers(t.connection());
+    }
+
+    void on_transport_error(proton::transport &t) OVERRIDE {
+        std::cout << "broker client disconnect: " << t.error().what() << std::endl;
+    }
+
+    void on_error(const proton::error_condition &c) OVERRIDE {
+        std::cerr << "broker error: " << c.what() << std::endl;
+    }
+
+    void remove_stale_consumers(proton::connection connection) {
+        proton::sender_range sr = connection.senders();
+        for (proton::sender_iterator i = sr.begin(); i != sr.end(); ++i) {
+            if (i->active())
+                unsubscribe(*i);
+        }
+    }
+
+    void on_sendable(proton::sender &s) OVERRIDE {
+        std::string address = s.source().address();
+
+        queues_.get(address).dispatch(&s);
+    }
+
+    void on_message(proton::delivery &d, proton::message &m) OVERRIDE {
+        std::string address = d.receiver().target().address();
+        queues_.get(address).publish(m);
+    }
+
+  protected:
+    queues& queues_;
+};
+
+#endif // BROKER_HPP


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


[09/26] qpid-site git commit: QPID-7350: Examples that should have gone with the previous commit

Posted by jr...@apache.org.
http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/input/releases/qpid-proton-0.13.0/proton/cpp/examples/direct_send.cpp.html.in
----------------------------------------------------------------------
diff --git a/input/releases/qpid-proton-0.13.0/proton/cpp/examples/direct_send.cpp.html.in b/input/releases/qpid-proton-0.13.0/proton/cpp/examples/direct_send.cpp.html.in
new file mode 100644
index 0000000..5b29bba
--- /dev/null
+++ b/input/releases/qpid-proton-0.13.0/proton/cpp/examples/direct_send.cpp.html.in
@@ -0,0 +1,85 @@
+
+<h1>direct_send.cpp</h1>
+<div class="highlight"><pre><span></span><span class="cp">#include</span> <span class="cpf">&quot;options.hpp&quot;</span><span class="cp"></span>
+
+<span class="cp">#include</span> <span class="cpf">&lt;proton/connection.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/default_container.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/messaging_handler.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/value.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/tracker.hpp&gt;</span><span class="cp"></span>
+
+<span class="cp">#include</span> <span class="cpf">&lt;iostream&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;map&gt;</span><span class="cp"></span>
+
+<span class="cp">#include</span> <span class="cpf">&quot;fake_cpp11.hpp&quot;</span><span class="cp"></span>
+
+<span class="k">class</span> <span class="nc">simple_send</span> <span class="o">:</span> <span class="k">public</span> <span class="n">proton</span><span class="o">::</span><span class="n">messaging_handler</span> <span class="p">{</span>
+  <span class="k">private</span><span class="o">:</span>
+    <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">url</span><span class="p">;</span>
+    <span class="n">proton</span><span class="o">::</span><span class="n">listener</span> <span class="n">listener</span><span class="p">;</span>
+    <span class="kt">int</span> <span class="n">sent</span><span class="p">;</span>
+    <span class="kt">int</span> <span class="n">confirmed</span><span class="p">;</span>
+    <span class="kt">int</span> <span class="n">total</span><span class="p">;</span>
+
+  <span class="k">public</span><span class="o">:</span>
+    <span class="n">simple_send</span><span class="p">(</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="o">&amp;</span><span class="n">s</span><span class="p">,</span> <span class="kt">int</span> <span class="n">c</span><span class="p">)</span> <span class="o">:</span> <span class="n">url</span><span class="p">(</span><span class="n">s</span><span class="p">),</span> <span class="n">sent</span><span class="p">(</span><span class="mi">0</span><span class="p">),</span> <span class="n">confirmed</span><span class="p">(</span><span class="mi">0</span><span class="p">),</span> <span class="n">total</span><span class="p">(</span><span class="n">c</span><span class="p">)</span> <span class="p">{}</span>
+
+    <span class="kt">void</span> <span class="n">on_container_start</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">container</span> <span class="o">&amp;</span><span class="n">c</span><span class="p">)</span> <span class="n">OVERRIDE</span> <span class="p">{</span>
+        <span class="n">listener</span> <span class="o">=</span> <span class="n">c</span><span class="p">.</span><span class="n">listen</span><span class="p">(</span><span class="n">url</span><span class="p">);</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;direct_send listening on &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">url</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+    <span class="p">}</span>
+
+    <span class="kt">void</span> <span class="n">on_sendable</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">sender</span> <span class="o">&amp;</span><span class="n">sender</span><span class="p">)</span> <span class="n">OVERRIDE</span> <span class="p">{</span>
+        <span class="k">while</span> <span class="p">(</span><span class="n">sender</span><span class="p">.</span><span class="n">credit</span><span class="p">()</span> <span class="o">&amp;&amp;</span> <span class="n">sent</span> <span class="o">&lt;</span> <span class="n">total</span><span class="p">)</span> <span class="p">{</span>
+            <span class="n">proton</span><span class="o">::</span><span class="n">message</span> <span class="n">msg</span><span class="p">;</span>
+            <span class="n">std</span><span class="o">::</span><span class="n">map</span><span class="o">&lt;</span><span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="p">,</span> <span class="kt">int</span><span class="o">&gt;</span> <span class="n">m</span><span class="p">;</span>
+            <span class="n">m</span><span class="p">[</span><span class="s">&quot;sequence&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">sent</span> <span class="o">+</span> <span class="mi">1</span><span class="p">;</span>
+
+            <span class="n">msg</span><span class="p">.</span><span class="n">id</span><span class="p">(</span><span class="n">sent</span> <span class="o">+</span> <span class="mi">1</span><span class="p">);</span>
+            <span class="n">msg</span><span class="p">.</span><span class="n">body</span><span class="p">(</span><span class="n">m</span><span class="p">);</span>
+
+            <span class="n">sender</span><span class="p">.</span><span class="n">send</span><span class="p">(</span><span class="n">msg</span><span class="p">);</span>
+            <span class="n">sent</span><span class="o">++</span><span class="p">;</span>
+        <span class="p">}</span>
+    <span class="p">}</span>
+
+    <span class="kt">void</span> <span class="n">on_tracker_accept</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">tracker</span> <span class="o">&amp;</span><span class="n">t</span><span class="p">)</span> <span class="n">OVERRIDE</span> <span class="p">{</span>
+        <span class="n">confirmed</span><span class="o">++</span><span class="p">;</span>
+
+        <span class="k">if</span> <span class="p">(</span><span class="n">confirmed</span> <span class="o">==</span> <span class="n">total</span><span class="p">)</span> <span class="p">{</span>
+            <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;all messages confirmed&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+            <span class="n">t</span><span class="p">.</span><span class="n">connection</span><span class="p">().</span><span class="n">close</span><span class="p">();</span>
+            <span class="n">listener</span><span class="p">.</span><span class="n">stop</span><span class="p">();</span>
+        <span class="p">}</span>
+    <span class="p">}</span>
+
+    <span class="kt">void</span> <span class="n">on_transport_close</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">transport</span> <span class="o">&amp;</span><span class="p">)</span> <span class="n">OVERRIDE</span> <span class="p">{</span>
+        <span class="n">sent</span> <span class="o">=</span> <span class="n">confirmed</span><span class="p">;</span>
+    <span class="p">}</span>
+<span class="p">};</span>
+
+<span class="kt">int</span> <span class="nf">main</span><span class="p">(</span><span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">**</span><span class="n">argv</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">address</span><span class="p">(</span><span class="s">&quot;127.0.0.1:5672/examples&quot;</span><span class="p">);</span>
+    <span class="kt">int</span> <span class="n">message_count</span> <span class="o">=</span> <span class="mi">100</span><span class="p">;</span>
+    <span class="n">example</span><span class="o">::</span><span class="n">options</span> <span class="n">opts</span><span class="p">(</span><span class="n">argc</span><span class="p">,</span> <span class="n">argv</span><span class="p">);</span>
+
+    <span class="n">opts</span><span class="p">.</span><span class="n">add_value</span><span class="p">(</span><span class="n">address</span><span class="p">,</span> <span class="sc">&#39;a&#39;</span><span class="p">,</span> <span class="s">&quot;address&quot;</span><span class="p">,</span> <span class="s">&quot;listen and send on URL&quot;</span><span class="p">,</span> <span class="s">&quot;URL&quot;</span><span class="p">);</span>
+    <span class="n">opts</span><span class="p">.</span><span class="n">add_value</span><span class="p">(</span><span class="n">message_count</span><span class="p">,</span> <span class="sc">&#39;m&#39;</span><span class="p">,</span> <span class="s">&quot;messages&quot;</span><span class="p">,</span> <span class="s">&quot;send COUNT messages&quot;</span><span class="p">,</span> <span class="s">&quot;COUNT&quot;</span><span class="p">);</span>
+
+    <span class="k">try</span> <span class="p">{</span>
+        <span class="n">opts</span><span class="p">.</span><span class="n">parse</span><span class="p">();</span>
+
+        <span class="n">simple_send</span> <span class="n">send</span><span class="p">(</span><span class="n">address</span><span class="p">,</span> <span class="n">message_count</span><span class="p">);</span>
+        <span class="n">proton</span><span class="o">::</span><span class="n">default_container</span><span class="p">(</span><span class="n">send</span><span class="p">).</span><span class="n">run</span><span class="p">();</span>
+        <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">catch</span> <span class="p">(</span><span class="k">const</span> <span class="n">example</span><span class="o">::</span><span class="n">bad_option</span><span class="o">&amp;</span> <span class="n">e</span><span class="p">)</span> <span class="p">{</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="n">opts</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span> <span class="o">&lt;&lt;</span> <span class="n">e</span><span class="p">.</span><span class="n">what</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">catch</span> <span class="p">(</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">exception</span><span class="o">&amp;</span> <span class="n">e</span><span class="p">)</span> <span class="p">{</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">cerr</span> <span class="o">&lt;&lt;</span> <span class="n">e</span><span class="p">.</span><span class="n">what</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+    <span class="p">}</span>
+
+    <span class="k">return</span> <span class="mi">1</span><span class="p">;</span>
+<span class="p">}</span>
+</pre></div>
+
+<p><a href="direct_send.cpp">Download this file</a></p>

http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/input/releases/qpid-proton-0.13.0/proton/cpp/examples/encode_decode.cpp
----------------------------------------------------------------------
diff --git a/input/releases/qpid-proton-0.13.0/proton/cpp/examples/encode_decode.cpp b/input/releases/qpid-proton-0.13.0/proton/cpp/examples/encode_decode.cpp
new file mode 100644
index 0000000..17971d9
--- /dev/null
+++ b/input/releases/qpid-proton-0.13.0/proton/cpp/examples/encode_decode.cpp
@@ -0,0 +1,252 @@
+/*
+ * 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.
+ */
+
+#include <proton/types.hpp>
+#include <proton/codec/encoder.hpp>
+#include <proton/codec/decoder.hpp>
+
+#include <algorithm>
+#include <iostream>
+#include <iterator>
+#include <sstream>
+
+// Examples of how to use the encoder and decoder to create and examine AMQP values.
+//
+
+// Print is defined at the end as an example of how to query and extract complex
+// values from a decoder in terms of their simple components.
+void print(proton::value&);
+
+// Some helper templates to print map and std::vector results.
+namespace std {
+template<class T, class U> ostream& operator<<(ostream& o, const std::pair<T,U>& p) {
+    return o << p.first << ":" << p.second;
+}
+template<class T> ostream& operator<<(ostream& o, const std::vector<T>& v) {
+    o << "[ ";
+    ostream_iterator<T> oi(o, " ");
+    copy(v.begin(), v.end(), oi);
+    return o << "]";
+}
+template<class T> ostream& operator<<(ostream& o, const std::list<T>& v) {
+    o << "[ ";
+    ostream_iterator<T> oi(o, " ");
+    copy(v.begin(), v.end(), oi);
+    return o << "]";
+}
+template<class K, class T> ostream& operator<<(ostream& o, const map<K, T>& m) {
+    o << "{ ";
+    ostream_iterator<std::pair<K,T> > oi(o, " ");
+    copy(m.begin(), m.end(), oi);
+    return o << "}";
+}
+}
+
+// Insert/extract native C++ containers with uniform type values.
+static void uniform_containers() {
+    std::cout << std::endl << "== Array, list and map of uniform type." << std::endl;
+    proton::value v;
+
+    std::vector<int> a;
+    a.push_back(1);
+    a.push_back(2);
+    a.push_back(3);
+    // By default a C++ container is encoded as an AMQP array.
+    v = a;
+    print(v);
+    std::list<int> a1;
+    proton::get(v, a1);
+    std::cout << a1 << std::endl;
+
+    // You can specify that a container should be encoded as an AMQP list instead.
+    v = proton::codec::encoder::list(a1);
+    print(v);
+    std::cout << proton::get<std::vector<int> >(v) << std::endl;
+
+    // C++ map types (types with key_type, mapped_type) convert to an AMQP map by default.
+    std::map<std::string, int> m;
+    m["one"] = 1;
+    m["two"] = 2;
+    v = m;
+    print(v);
+    std::cout << proton::get<std::map<std::string, int> >(v) << std::endl;
+
+    // A sequence of pairs encodes as an AMQP MAP, which lets you control the encoded order.
+    std::vector<std::pair<std::string, int> > pairs;
+    pairs.push_back(std::make_pair("z", 3));
+    pairs.push_back(std::make_pair("a", 4));
+    v = pairs;
+    print(v);
+
+    // You can also decode an AMQP map as a sequence of pairs to preserve encode order.
+    std::vector<std::pair<std::string, int> > pairs2;
+    proton::codec::decoder d(v);
+    d >> pairs2;
+    std::cout << pairs2 << std::endl;
+
+    // A vector of proton::value is normally encoded as a mixed-type AMQP LIST,
+    // but you can encoded it as an array provided all the values match the array type.
+    std::vector<proton::value> vv;
+    vv.push_back(proton::value("a"));
+    vv.push_back(proton::value("b"));
+    vv.push_back(proton::value("c"));
+    v = vv;
+    print(v);
+}
+
+// Containers with mixed types use value to represent arbitrary AMQP types.
+static void mixed_containers() {
+    std::cout << std::endl << "== List and map of mixed type values." << std::endl;
+    proton::value v;
+
+    std::vector<proton::value> l;
+    l.push_back(proton::value(42));
+    l.push_back(proton::value(std::string("foo")));
+    // By default, a sequence of proton::value is treated as an AMQP list.
+    v = l;
+    print(v);
+    std::vector<proton::value> l2 = proton::get<std::vector<proton::value> >(v);
+    std::cout << l2 << std::endl;
+
+    std::map<proton::value, proton::value> m;
+    m[proton::value("five")] = proton::value(5);
+    m[proton::value(4)] = proton::value("four"); v = m;
+    print(v);
+    typedef std::map<proton::value, proton::value> value_map;
+    value_map m2(proton::get<value_map>(v));
+    std::cout << m2 << std::endl;
+}
+
+// Insert using stream operators (see print_next for example of extracting with stream ops.)
+static void insert_stream_operators() {
+    std::cout << std::endl << "== Insert with stream operators." << std::endl;
+    proton::value v;
+
+    // Create an array of INT with values [1, 2, 3]
+    proton::codec::encoder e(v);
+    e << proton::codec::start::array(proton::INT)
+      << int32_t(1) << int32_t(2) << int32_t(3)
+      << proton::codec::finish();
+    print(v);
+
+    // Create a mixed-type list of the values [42, false, "x"].
+    proton::codec::encoder e2(v);
+    e2 << proton::codec::start::list()
+       << int32_t(42) << false << proton::symbol("x")
+       << proton::codec::finish();
+    print(v);
+
+    // Create a map { "k1":42, "k2": false }
+    proton::codec::encoder e3(v);
+    e3 << proton::codec::start::map()
+       << "k1" << int32_t(42)
+       << proton::symbol("k2") << false
+       << proton::codec::finish();
+    print(v);
+}
+
+int main(int, char**) {
+    try {
+        uniform_containers();
+        mixed_containers();
+        insert_stream_operators();
+        return 0;
+    } catch (const std::exception& e) {
+        std::cerr << std::endl << "error: " << e.what() << std::endl;
+    }
+    return 1;
+}
+
+// print_next prints the next value from values by recursively descending into complex values.
+//
+// NOTE this is for example puroses only: There is a built in ostream operator<< for values.
+//
+//
+static void print_next(proton::codec::decoder& d) {
+    proton::type_id type = d.next_type();
+    proton::codec::start s;
+    switch (type) {
+      case proton::ARRAY: {
+          d >> s;
+          std::cout << "array<" << s.element;
+          if (s.is_described) {
+              std::cout  << ", descriptor=";
+              print_next(d);
+          }
+          std::cout << ">[";
+          for (size_t i = 0; i < s.size; ++i) {
+              if (i) std::cout << ", ";
+              print_next(d);
+          }
+          std::cout << "]";
+          d >> proton::codec::finish();
+          break;
+      }
+      case proton::LIST: {
+          d >> s;
+          std::cout << "list[";
+          for (size_t i = 0; i < s.size; ++i) {
+              if (i) std::cout << ", ";
+              print_next(d);
+          }
+          std::cout << "]";
+          d >> proton::codec::finish();
+          break;
+      }
+      case proton::MAP: {
+          d >> s;
+          std::cout << "map{";
+          for (size_t i = 0; i < s.size/2; ++i) {
+              if (i) std::cout << ", ";
+              print_next(d);
+              std::cout << ":";        // key:value
+              print_next(d);
+          }
+          std::cout << "}";
+          d >> proton::codec::finish();
+          break;
+      }
+      case proton::DESCRIBED: {
+          d >> s;
+          std::cout << "described(";
+          print_next(d);      // Descriptor
+          print_next(d);      // value
+          d >> proton::codec::finish();
+          break;
+      }
+      default:
+        // A simple type. We could continue the switch for all AMQP types but
+        // we will take a short cut and extract to another value and print that.
+        proton::value v2;
+        d >> v2;
+        std::cout << type << "(" << v2 << ")";
+    }
+}
+
+// Print a value, for example purposes. Normal code can use operator<<
+void print(proton::value& v) {
+    proton::codec::decoder d(v);
+    d.rewind();
+    std::cout << std::boolalpha; // Print boolean as true/false.
+    while (d.more()) {
+        print_next(d);
+        if (d.more()) std::cout << ", ";
+    }
+    std::cout << std::endl;
+}

http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/input/releases/qpid-proton-0.13.0/proton/cpp/examples/encode_decode.cpp.html.in
----------------------------------------------------------------------
diff --git a/input/releases/qpid-proton-0.13.0/proton/cpp/examples/encode_decode.cpp.html.in b/input/releases/qpid-proton-0.13.0/proton/cpp/examples/encode_decode.cpp.html.in
new file mode 100644
index 0000000..6ec6c85
--- /dev/null
+++ b/input/releases/qpid-proton-0.13.0/proton/cpp/examples/encode_decode.cpp.html.in
@@ -0,0 +1,238 @@
+
+<h1>encode_decode.cpp</h1>
+<div class="highlight"><pre><span></span><span class="cp">#include</span> <span class="cpf">&lt;proton/types.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/codec/encoder.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/codec/decoder.hpp&gt;</span><span class="cp"></span>
+
+<span class="cp">#include</span> <span class="cpf">&lt;algorithm&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;iostream&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;iterator&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;sstream&gt;</span><span class="cp"></span>
+
+<span class="c1">// Examples of how to use the encoder and decoder to create and examine AMQP values.</span>
+<span class="c1">//</span>
+
+<span class="c1">// Print is defined at the end as an example of how to query and extract complex</span>
+<span class="c1">// values from a decoder in terms of their simple components.</span>
+<span class="kt">void</span> <span class="nf">print</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">value</span><span class="o">&amp;</span><span class="p">);</span>
+
+<span class="c1">// Some helper templates to print map and std::vector results.</span>
+<span class="k">namespace</span> <span class="n">std</span> <span class="p">{</span>
+<span class="k">template</span><span class="o">&lt;</span><span class="k">class</span> <span class="nc">T</span><span class="p">,</span> <span class="k">class</span> <span class="nc">U</span><span class="o">&gt;</span> <span class="n">ostream</span><span class="o">&amp;</span> <span class="k">operator</span><span class="o">&lt;&lt;</span><span class="p">(</span><span class="n">ostream</span><span class="o">&amp;</span> <span class="n">o</span><span class="p">,</span> <span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">pair</span><span class="o">&lt;</span><span class="n">T</span><span class="p">,</span><span class="n">U</span><span class="o">&gt;&amp;</span> <span class="n">p</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">return</span> <span class="n">o</span> <span class="o">&lt;&lt;</span> <span class="n">p</span><span class="p">.</span><span class="n">first</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;:&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">p</span><span class="p">.</span><span class="n">second</span><span class="p">;</span>
+<span class="p">}</span>
+<span class="k">template</span><span class="o">&lt;</span><span class="k">class</span> <span class="nc">T</span><span class="o">&gt;</span> <span class="n">ostream</span><span class="o">&amp;</span> <span class="k">operator</span><span class="o">&lt;&lt;</span><span class="p">(</span><span class="n">ostream</span><span class="o">&amp;</span> <span class="n">o</span><span class="p">,</span> <span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">vector</span><span class="o">&lt;</span><span class="n">T</span><span class="o">&gt;&amp;</span> <span class="n">v</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">o</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;[ &quot;</span><span class="p">;</span>
+    <span class="n">ostream_iterator</span><span class="o">&lt;</span><span class="n">T</span><span class="o">&gt;</span> <span class="n">oi</span><span class="p">(</span><span class="n">o</span><span class="p">,</span> <span class="s">&quot; &quot;</span><span class="p">);</span>
+    <span class="n">copy</span><span class="p">(</span><span class="n">v</span><span class="p">.</span><span class="n">begin</span><span class="p">(),</span> <span class="n">v</span><span class="p">.</span><span class="n">end</span><span class="p">(),</span> <span class="n">oi</span><span class="p">);</span>
+    <span class="k">return</span> <span class="n">o</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;]&quot;</span><span class="p">;</span>
+<span class="p">}</span>
+<span class="k">template</span><span class="o">&lt;</span><span class="k">class</span> <span class="nc">T</span><span class="o">&gt;</span> <span class="n">ostream</span><span class="o">&amp;</span> <span class="k">operator</span><span class="o">&lt;&lt;</span><span class="p">(</span><span class="n">ostream</span><span class="o">&amp;</span> <span class="n">o</span><span class="p">,</span> <span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">list</span><span class="o">&lt;</span><span class="n">T</span><span class="o">&gt;&amp;</span> <span class="n">v</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">o</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;[ &quot;</span><span class="p">;</span>
+    <span class="n">ostream_iterator</span><span class="o">&lt;</span><span class="n">T</span><span class="o">&gt;</span> <span class="n">oi</span><span class="p">(</span><span class="n">o</span><span class="p">,</span> <span class="s">&quot; &quot;</span><span class="p">);</span>
+    <span class="n">copy</span><span class="p">(</span><span class="n">v</span><span class="p">.</span><span class="n">begin</span><span class="p">(),</span> <span class="n">v</span><span class="p">.</span><span class="n">end</span><span class="p">(),</span> <span class="n">oi</span><span class="p">);</span>
+    <span class="k">return</span> <span class="n">o</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;]&quot;</span><span class="p">;</span>
+<span class="p">}</span>
+<span class="k">template</span><span class="o">&lt;</span><span class="k">class</span> <span class="nc">K</span><span class="p">,</span> <span class="k">class</span> <span class="nc">T</span><span class="o">&gt;</span> <span class="n">ostream</span><span class="o">&amp;</span> <span class="k">operator</span><span class="o">&lt;&lt;</span><span class="p">(</span><span class="n">ostream</span><span class="o">&amp;</span> <span class="n">o</span><span class="p">,</span> <span class="k">const</span> <span class="n">map</span><span class="o">&lt;</span><span class="n">K</span><span class="p">,</span> <span class="n">T</span><span class="o">&gt;&amp;</span> <span class="n">m</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">o</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;{ &quot;</span><span class="p">;</span>
+    <span class="n">ostream_iterator</span><span class="o">&lt;</span><span class="n">std</span><span class="o">::</span><span class="n">pair</span><span class="o">&lt;</span><span class="n">K</span><span class="p">,</span><span class="n">T</span><span class="o">&gt;</span> <span class="o">&gt;</span> <span class="n">oi</span><span class="p">(</span><span class="n">o</span><span class="p">,</span> <span class="s">&quot; &quot;</span><span class="p">);</span>
+    <span class="n">copy</span><span class="p">(</span><span class="n">m</span><span class="p">.</span><span class="n">begin</span><span class="p">(),</span> <span class="n">m</span><span class="p">.</span><span class="n">end</span><span class="p">(),</span> <span class="n">oi</span><span class="p">);</span>
+    <span class="k">return</span> <span class="n">o</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;}&quot;</span><span class="p">;</span>
+<span class="p">}</span>
+<span class="p">}</span>
+
+<span class="c1">// Insert/extract native C++ containers with uniform type values.</span>
+<span class="k">static</span> <span class="kt">void</span> <span class="n">uniform_containers</span><span class="p">()</span> <span class="p">{</span>
+    <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;== Array, list and map of uniform type.&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+    <span class="n">proton</span><span class="o">::</span><span class="n">value</span> <span class="n">v</span><span class="p">;</span>
+
+    <span class="n">std</span><span class="o">::</span><span class="n">vector</span><span class="o">&lt;</span><span class="kt">int</span><span class="o">&gt;</span> <span class="n">a</span><span class="p">;</span>
+    <span class="n">a</span><span class="p">.</span><span class="n">push_back</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span>
+    <span class="n">a</span><span class="p">.</span><span class="n">push_back</span><span class="p">(</span><span class="mi">2</span><span class="p">);</span>
+    <span class="n">a</span><span class="p">.</span><span class="n">push_back</span><span class="p">(</span><span class="mi">3</span><span class="p">);</span>
+    <span class="c1">// By default a C++ container is encoded as an AMQP array.</span>
+    <span class="n">v</span> <span class="o">=</span> <span class="n">a</span><span class="p">;</span>
+    <span class="n">print</span><span class="p">(</span><span class="n">v</span><span class="p">);</span>
+    <span class="n">std</span><span class="o">::</span><span class="n">list</span><span class="o">&lt;</span><span class="kt">int</span><span class="o">&gt;</span> <span class="n">a1</span><span class="p">;</span>
+    <span class="n">proton</span><span class="o">::</span><span class="n">get</span><span class="p">(</span><span class="n">v</span><span class="p">,</span> <span class="n">a1</span><span class="p">);</span>
+    <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="n">a1</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+
+    <span class="c1">// You can specify that a container should be encoded as an AMQP list instead.</span>
+    <span class="n">v</span> <span class="o">=</span> <span class="n">proton</span><span class="o">::</span><span class="n">codec</span><span class="o">::</span><span class="n">encoder</span><span class="o">::</span><span class="n">list</span><span class="p">(</span><span class="n">a1</span><span class="p">);</span>
+    <span class="n">print</span><span class="p">(</span><span class="n">v</span><span class="p">);</span>
+    <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="n">proton</span><span class="o">::</span><span class="n">get</span><span class="o">&lt;</span><span class="n">std</span><span class="o">::</span><span class="n">vector</span><span class="o">&lt;</span><span class="kt">int</span><span class="o">&gt;</span> <span class="o">&gt;</span><span class="p">(</span><span class="n">v</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+
+    <span class="c1">// C++ map types (types with key_type, mapped_type) convert to an AMQP map by default.</span>
+    <span class="n">std</span><span class="o">::</span><span class="n">map</span><span class="o">&lt;</span><span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="p">,</span> <span class="kt">int</span><span class="o">&gt;</span> <span class="n">m</span><span class="p">;</span>
+    <span class="n">m</span><span class="p">[</span><span class="s">&quot;one&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+    <span class="n">m</span><span class="p">[</span><span class="s">&quot;two&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="mi">2</span><span class="p">;</span>
+    <span class="n">v</span> <span class="o">=</span> <span class="n">m</span><span class="p">;</span>
+    <span class="n">print</span><span class="p">(</span><span class="n">v</span><span class="p">);</span>
+    <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="n">proton</span><span class="o">::</span><span class="n">get</span><span class="o">&lt;</span><span class="n">std</span><span class="o">::</span><span class="n">map</span><span class="o">&lt;</span><span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="p">,</span> <span class="kt">int</span><span class="o">&gt;</span> <span class="o">&gt;</span><span class="p">(</span><span class="n">v</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+
+    <span class="c1">// A sequence of pairs encodes as an AMQP MAP, which lets you control the encoded order.</span>
+    <span class="n">std</span><span class="o">::</span><span class="n">vector</span><span class="o">&lt;</span><span class="n">std</span><span class="o">::</span><span class="n">pair</span><span class="o">&lt;</span><span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="p">,</span> <span class="kt">int</span><span class="o">&gt;</span> <span class="o">&gt;</span> <span class="n">pairs</span><span class="p">;</span>
+    <span class="n">pairs</span><span class="p">.</span><span class="n">push_back</span><span class="p">(</span><span class="n">std</span><span class="o">::</span><span class="n">make_pair</span><span class="p">(</span><span class="s">&quot;z&quot;</span><span class="p">,</span> <span class="mi">3</span><span class="p">));</span>
+    <span class="n">pairs</span><span class="p">.</span><span class="n">push_back</span><span class="p">(</span><span class="n">std</span><span class="o">::</span><span class="n">make_pair</span><span class="p">(</span><span class="s">&quot;a&quot;</span><span class="p">,</span> <span class="mi">4</span><span class="p">));</span>
+    <span class="n">v</span> <span class="o">=</span> <span class="n">pairs</span><span class="p">;</span>
+    <span class="n">print</span><span class="p">(</span><span class="n">v</span><span class="p">);</span>
+
+    <span class="c1">// You can also decode an AMQP map as a sequence of pairs to preserve encode order.</span>
+    <span class="n">std</span><span class="o">::</span><span class="n">vector</span><span class="o">&lt;</span><span class="n">std</span><span class="o">::</span><span class="n">pair</span><span class="o">&lt;</span><span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="p">,</span> <span class="kt">int</span><span class="o">&gt;</span> <span class="o">&gt;</span> <span class="n">pairs2</span><span class="p">;</span>
+    <span class="n">proton</span><span class="o">::</span><span class="n">codec</span><span class="o">::</span><span class="n">decoder</span> <span class="n">d</span><span class="p">(</span><span class="n">v</span><span class="p">);</span>
+    <span class="n">d</span> <span class="o">&gt;&gt;</span> <span class="n">pairs2</span><span class="p">;</span>
+    <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="n">pairs2</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+
+    <span class="c1">// A vector of proton::value is normally encoded as a mixed-type AMQP LIST,</span>
+    <span class="c1">// but you can encoded it as an array provided all the values match the array type.</span>
+    <span class="n">std</span><span class="o">::</span><span class="n">vector</span><span class="o">&lt;</span><span class="n">proton</span><span class="o">::</span><span class="n">value</span><span class="o">&gt;</span> <span class="n">vv</span><span class="p">;</span>
+    <span class="n">vv</span><span class="p">.</span><span class="n">push_back</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">value</span><span class="p">(</span><span class="s">&quot;a&quot;</span><span class="p">));</span>
+    <span class="n">vv</span><span class="p">.</span><span class="n">push_back</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">value</span><span class="p">(</span><span class="s">&quot;b&quot;</span><span class="p">));</span>
+    <span class="n">vv</span><span class="p">.</span><span class="n">push_back</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">value</span><span class="p">(</span><span class="s">&quot;c&quot;</span><span class="p">));</span>
+    <span class="n">v</span> <span class="o">=</span> <span class="n">vv</span><span class="p">;</span>
+    <span class="n">print</span><span class="p">(</span><span class="n">v</span><span class="p">);</span>
+<span class="p">}</span>
+
+<span class="c1">// Containers with mixed types use value to represent arbitrary AMQP types.</span>
+<span class="k">static</span> <span class="kt">void</span> <span class="n">mixed_containers</span><span class="p">()</span> <span class="p">{</span>
+    <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;== List and map of mixed type values.&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+    <span class="n">proton</span><span class="o">::</span><span class="n">value</span> <span class="n">v</span><span class="p">;</span>
+
+    <span class="n">std</span><span class="o">::</span><span class="n">vector</span><span class="o">&lt;</span><span class="n">proton</span><span class="o">::</span><span class="n">value</span><span class="o">&gt;</span> <span class="n">l</span><span class="p">;</span>
+    <span class="n">l</span><span class="p">.</span><span class="n">push_back</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">value</span><span class="p">(</span><span class="mi">42</span><span class="p">));</span>
+    <span class="n">l</span><span class="p">.</span><span class="n">push_back</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">value</span><span class="p">(</span><span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="p">(</span><span class="s">&quot;foo&quot;</span><span class="p">)));</span>
+    <span class="c1">// By default, a sequence of proton::value is treated as an AMQP list.</span>
+    <span class="n">v</span> <span class="o">=</span> <span class="n">l</span><span class="p">;</span>
+    <span class="n">print</span><span class="p">(</span><span class="n">v</span><span class="p">);</span>
+    <span class="n">std</span><span class="o">::</span><span class="n">vector</span><span class="o">&lt;</span><span class="n">proton</span><span class="o">::</span><span class="n">value</span><span class="o">&gt;</span> <span class="n">l2</span> <span class="o">=</span> <span class="n">proton</span><span class="o">::</span><span class="n">get</span><span class="o">&lt;</span><span class="n">std</span><span class="o">::</span><span class="n">vector</span><span class="o">&lt;</span><span class="n">proton</span><span class="o">::</span><span class="n">value</span><span class="o">&gt;</span> <span class="o">&gt;</span><span class="p">(</span><span class="n">v</span><span class="p">);</span>
+    <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="n">l2</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+
+    <span class="n">std</span><span class="o">::</span><span class="n">map</span><span class="o">&lt;</span><span class="n">proton</span><span class="o">::</span><span class="n">value</span><span class="p">,</span> <span class="n">proton</span><span class="o">::</span><span class="n">value</span><span class="o">&gt;</span> <span class="n">m</span><span class="p">;</span>
+    <span class="n">m</span><span class="p">[</span><span class="n">proton</span><span class="o">::</span><span class="n">value</span><span class="p">(</span><span class="s">&quot;five&quot;</span><span class="p">)]</span> <span class="o">=</span> <span class="n">proton</span><span class="o">::</span><span class="n">value</span><span class="p">(</span><span class="mi">5</span><span class="p">);</span>
+    <span class="n">m</span><span class="p">[</span><span class="n">proton</span><span class="o">::</span><span class="n">value</span><span class="p">(</span><span class="mi">4</span><span class="p">)]</span> <span class="o">=</span> <span class="n">proton</span><span class="o">::</span><span class="n">value</span><span class="p">(</span><span class="s">&quot;four&quot;</span><span class="p">);</span> <span class="n">v</span> <span class="o">=</span> <span class="n">m</span><span class="p">;</span>
+    <span class="n">print</span><span class="p">(</span><span class="n">v</span><span class="p">);</span>
+    <span class="k">typedef</span> <span class="n">std</span><span class="o">::</span><span class="n">map</span><span class="o">&lt;</span><span class="n">proton</span><span class="o">::</span><span class="n">value</span><span class="p">,</span> <span class="n">proton</span><span class="o">::</span><span class="n">value</span><span class="o">&gt;</span> <span class="n">value_map</span><span class="p">;</span>
+    <span class="n">value_map</span> <span class="nf">m2</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">get</span><span class="o">&lt;</span><span class="n">value_map</span><span class="o">&gt;</span><span class="p">(</span><span class="n">v</span><span class="p">));</span>
+    <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="n">m2</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+<span class="p">}</span>
+
+<span class="c1">// Insert using stream operators (see print_next for example of extracting with stream ops.)</span>
+<span class="k">static</span> <span class="kt">void</span> <span class="n">insert_stream_operators</span><span class="p">()</span> <span class="p">{</span>
+    <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;== Insert with stream operators.&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+    <span class="n">proton</span><span class="o">::</span><span class="n">value</span> <span class="n">v</span><span class="p">;</span>
+
+    <span class="c1">// Create an array of INT with values [1, 2, 3]</span>
+    <span class="n">proton</span><span class="o">::</span><span class="n">codec</span><span class="o">::</span><span class="n">encoder</span> <span class="n">e</span><span class="p">(</span><span class="n">v</span><span class="p">);</span>
+    <span class="n">e</span> <span class="o">&lt;&lt;</span> <span class="n">proton</span><span class="o">::</span><span class="n">codec</span><span class="o">::</span><span class="n">start</span><span class="o">::</span><span class="n">array</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">INT</span><span class="p">)</span>
+      <span class="o">&lt;&lt;</span> <span class="kt">int32_t</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="kt">int32_t</span><span class="p">(</span><span class="mi">2</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="kt">int32_t</span><span class="p">(</span><span class="mi">3</span><span class="p">)</span>
+      <span class="o">&lt;&lt;</span> <span class="n">proton</span><span class="o">::</span><span class="n">codec</span><span class="o">::</span><span class="n">finish</span><span class="p">();</span>
+    <span class="n">print</span><span class="p">(</span><span class="n">v</span><span class="p">);</span>
+
+    <span class="c1">// Create a mixed-type list of the values [42, false, &quot;x&quot;].</span>
+    <span class="n">proton</span><span class="o">::</span><span class="n">codec</span><span class="o">::</span><span class="n">encoder</span> <span class="n">e2</span><span class="p">(</span><span class="n">v</span><span class="p">);</span>
+    <span class="n">e2</span> <span class="o">&lt;&lt;</span> <span class="n">proton</span><span class="o">::</span><span class="n">codec</span><span class="o">::</span><span class="n">start</span><span class="o">::</span><span class="n">list</span><span class="p">()</span>
+       <span class="o">&lt;&lt;</span> <span class="kt">int32_t</span><span class="p">(</span><span class="mi">42</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="nb">false</span> <span class="o">&lt;&lt;</span> <span class="n">proton</span><span class="o">::</span><span class="n">symbol</span><span class="p">(</span><span class="s">&quot;x&quot;</span><span class="p">)</span>
+       <span class="o">&lt;&lt;</span> <span class="n">proton</span><span class="o">::</span><span class="n">codec</span><span class="o">::</span><span class="n">finish</span><span class="p">();</span>
+    <span class="n">print</span><span class="p">(</span><span class="n">v</span><span class="p">);</span>
+
+    <span class="c1">// Create a map { &quot;k1&quot;:42, &quot;k2&quot;: false }</span>
+    <span class="n">proton</span><span class="o">::</span><span class="n">codec</span><span class="o">::</span><span class="n">encoder</span> <span class="n">e3</span><span class="p">(</span><span class="n">v</span><span class="p">);</span>
+    <span class="n">e3</span> <span class="o">&lt;&lt;</span> <span class="n">proton</span><span class="o">::</span><span class="n">codec</span><span class="o">::</span><span class="n">start</span><span class="o">::</span><span class="n">map</span><span class="p">()</span>
+       <span class="o">&lt;&lt;</span> <span class="s">&quot;k1&quot;</span> <span class="o">&lt;&lt;</span> <span class="kt">int32_t</span><span class="p">(</span><span class="mi">42</span><span class="p">)</span>
+       <span class="o">&lt;&lt;</span> <span class="n">proton</span><span class="o">::</span><span class="n">symbol</span><span class="p">(</span><span class="s">&quot;k2&quot;</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="nb">false</span>
+       <span class="o">&lt;&lt;</span> <span class="n">proton</span><span class="o">::</span><span class="n">codec</span><span class="o">::</span><span class="n">finish</span><span class="p">();</span>
+    <span class="n">print</span><span class="p">(</span><span class="n">v</span><span class="p">);</span>
+<span class="p">}</span>
+
+<span class="kt">int</span> <span class="n">main</span><span class="p">(</span><span class="kt">int</span><span class="p">,</span> <span class="kt">char</span><span class="o">**</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">try</span> <span class="p">{</span>
+        <span class="n">uniform_containers</span><span class="p">();</span>
+        <span class="n">mixed_containers</span><span class="p">();</span>
+        <span class="n">insert_stream_operators</span><span class="p">();</span>
+        <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">catch</span> <span class="p">(</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">exception</span><span class="o">&amp;</span> <span class="n">e</span><span class="p">)</span> <span class="p">{</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">cerr</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;error: &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">e</span><span class="p">.</span><span class="n">what</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+    <span class="p">}</span>
+    <span class="k">return</span> <span class="mi">1</span><span class="p">;</span>
+<span class="p">}</span>
+
+<span class="c1">// print_next prints the next value from values by recursively descending into complex values.</span>
+<span class="c1">//</span>
+<span class="c1">// NOTE this is for example puroses only: There is a built in ostream operator&lt;&lt; for values.</span>
+<span class="c1">//</span>
+<span class="c1">//</span>
+<span class="k">static</span> <span class="kt">void</span> <span class="n">print_next</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">codec</span><span class="o">::</span><span class="n">decoder</span><span class="o">&amp;</span> <span class="n">d</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">proton</span><span class="o">::</span><span class="n">type_id</span> <span class="n">type</span> <span class="o">=</span> <span class="n">d</span><span class="p">.</span><span class="n">next_type</span><span class="p">();</span>
+    <span class="n">proton</span><span class="o">::</span><span class="n">codec</span><span class="o">::</span><span class="n">start</span> <span class="n">s</span><span class="p">;</span>
+    <span class="k">switch</span> <span class="p">(</span><span class="n">type</span><span class="p">)</span> <span class="p">{</span>
+      <span class="k">case</span> <span class="n">proton</span><span class="o">::</span><span class="nl">ARRAY</span><span class="p">:</span> <span class="p">{</span>
+          <span class="n">d</span> <span class="o">&gt;&gt;</span> <span class="n">s</span><span class="p">;</span>
+          <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;array&lt;&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">s</span><span class="p">.</span><span class="n">element</span><span class="p">;</span>
+          <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="p">.</span><span class="n">is_described</span><span class="p">)</span> <span class="p">{</span>
+              <span class="n">std</span><span class="o">::</span><span class="n">cout</span>  <span class="o">&lt;&lt;</span> <span class="s">&quot;, descriptor=&quot;</span><span class="p">;</span>
+              <span class="n">print_next</span><span class="p">(</span><span class="n">d</span><span class="p">);</span>
+          <span class="p">}</span>
+          <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;&gt;[&quot;</span><span class="p">;</span>
+          <span class="k">for</span> <span class="p">(</span><span class="kt">size_t</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">s</span><span class="p">.</span><span class="n">size</span><span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span> <span class="p">{</span>
+              <span class="k">if</span> <span class="p">(</span><span class="n">i</span><span class="p">)</span> <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;, &quot;</span><span class="p">;</span>
+              <span class="n">print_next</span><span class="p">(</span><span class="n">d</span><span class="p">);</span>
+          <span class="p">}</span>
+          <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;]&quot;</span><span class="p">;</span>
+          <span class="n">d</span> <span class="o">&gt;&gt;</span> <span class="n">proton</span><span class="o">::</span><span class="n">codec</span><span class="o">::</span><span class="n">finish</span><span class="p">();</span>
+          <span class="k">break</span><span class="p">;</span>
+      <span class="p">}</span>
+      <span class="k">case</span> <span class="n">proton</span><span class="o">::</span><span class="nl">LIST</span><span class="p">:</span> <span class="p">{</span>
+          <span class="n">d</span> <span class="o">&gt;&gt;</span> <span class="n">s</span><span class="p">;</span>
+          <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;list[&quot;</span><span class="p">;</span>
+          <span class="k">for</span> <span class="p">(</span><span class="kt">size_t</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">s</span><span class="p">.</span><span class="n">size</span><span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span> <span class="p">{</span>
+              <span class="k">if</span> <span class="p">(</span><span class="n">i</span><span class="p">)</span> <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;, &quot;</span><span class="p">;</span>
+              <span class="n">print_next</span><span class="p">(</span><span class="n">d</span><span class="p">);</span>
+          <span class="p">}</span>
+          <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;]&quot;</span><span class="p">;</span>
+          <span class="n">d</span> <span class="o">&gt;&gt;</span> <span class="n">proton</span><span class="o">::</span><span class="n">codec</span><span class="o">::</span><span class="n">finish</span><span class="p">();</span>
+          <span class="k">break</span><span class="p">;</span>
+      <span class="p">}</span>
+      <span class="k">case</span> <span class="n">proton</span><span class="o">::</span><span class="nl">MAP</span><span class="p">:</span> <span class="p">{</span>
+          <span class="n">d</span> <span class="o">&gt;&gt;</span> <span class="n">s</span><span class="p">;</span>
+          <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;map{&quot;</span><span class="p">;</span>
+          <span class="k">for</span> <span class="p">(</span><span class="kt">size_t</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">s</span><span class="p">.</span><span class="n">size</span><span class="o">/</span><span class="mi">2</span><span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span> <span class="p">{</span>
+              <span class="k">if</span> <span class="p">(</span><span class="n">i</span><span class="p">)</span> <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;, &quot;</span><span class="p">;</span>
+              <span class="n">print_next</span><span class="p">(</span><span class="n">d</span><span class="p">);</span>
+              <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;:&quot;</span><span class="p">;</span>        <span class="c1">// key:value</span>
+              <span class="n">print_next</span><span class="p">(</span><span class="n">d</span><span class="p">);</span>
+          <span class="p">}</span>
+          <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;}&quot;</span><span class="p">;</span>
+          <span class="n">d</span> <span class="o">&gt;&gt;</span> <span class="n">proton</span><span class="o">::</span><span class="n">codec</span><span class="o">::</span><span class="n">finish</span><span class="p">();</span>
+          <span class="k">break</span><span class="p">;</span>
+      <span class="p">}</span>
+      <span class="k">case</span> <span class="n">proton</span><span class="o">::</span><span class="nl">DESCRIBED</span><span class="p">:</span> <span class="p">{</span>
+          <span class="n">d</span> <span class="o">&gt;&gt;</span> <span class="n">s</span><span class="p">;</span>
+          <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;described(&quot;</span><span class="p">;</span>
+          <span class="n">print_next</span><span class="p">(</span><span class="n">d</span><span class="p">);</span>      <span class="c1">// Descriptor</span>
+          <span class="n">print_next</span><span class="p">(</span><span class="n">d</span><span class="p">);</span>      <span class="c1">// value</span>
+          <span class="n">d</span> <span class="o">&gt;&gt;</span> <span class="n">proton</span><span class="o">::</span><span class="n">codec</span><span class="o">::</span><span class="n">finish</span><span class="p">();</span>
+          <span class="k">break</span><span class="p">;</span>
+      <span class="p">}</span>
+      <span class="k">default</span><span class="o">:</span>
+        <span class="c1">// A simple type. We could continue the switch for all AMQP types but</span>
+        <span class="c1">// we will take a short cut and extract to another value and print that.</span>
+        <span class="n">proton</span><span class="o">::</span><span class="n">value</span> <span class="n">v2</span><span class="p">;</span>
+        <span class="n">d</span> <span class="o">&gt;&gt;</span> <span class="n">v2</span><span class="p">;</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="n">type</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;(&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">v2</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;)&quot;</span><span class="p">;</span>
+    <span class="p">}</span>
+<span class="p">}</span>
+
+<span class="c1">// Print a value, for example purposes. Normal code can use operator&lt;&lt;</span>
+<span class="kt">void</span> <span class="n">print</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">value</span><span class="o">&amp;</span> <span class="n">v</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">proton</span><span class="o">::</span><span class="n">codec</span><span class="o">::</span><span class="n">decoder</span> <span class="n">d</span><span class="p">(</span><span class="n">v</span><span class="p">);</span>
+    <span class="n">d</span><span class="p">.</span><span class="n">rewind</span><span class="p">();</span>
+    <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">boolalpha</span><span class="p">;</span> <span class="c1">// Print boolean as true/false.</span>
+    <span class="k">while</span> <span class="p">(</span><span class="n">d</span><span class="p">.</span><span class="n">more</span><span class="p">())</span> <span class="p">{</span>
+        <span class="n">print_next</span><span class="p">(</span><span class="n">d</span><span class="p">);</span>
+        <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="p">.</span><span class="n">more</span><span class="p">())</span> <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;, &quot;</span><span class="p">;</span>
+    <span class="p">}</span>
+    <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+<span class="p">}</span>
+</pre></div>
+
+<p><a href="encode_decode.cpp">Download this file</a></p>

http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/input/releases/qpid-proton-0.13.0/proton/cpp/examples/fake_cpp11.hpp
----------------------------------------------------------------------
diff --git a/input/releases/qpid-proton-0.13.0/proton/cpp/examples/fake_cpp11.hpp b/input/releases/qpid-proton-0.13.0/proton/cpp/examples/fake_cpp11.hpp
new file mode 100644
index 0000000..03daa3b
--- /dev/null
+++ b/input/releases/qpid-proton-0.13.0/proton/cpp/examples/fake_cpp11.hpp
@@ -0,0 +1,34 @@
+#ifndef FAKE_CPP11_HPP
+#define FAKE_CPP11_HPP
+
+/*
+ * 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.
+ */
+
+/// These definitions allow us to use some new C++11 features in previous compilers
+///
+/// It is strongly recommended not to copy this - just use C++11/C++14 instead!
+
+#if __cplusplus < 201103L
+#define OVERRIDE
+#else
+#define OVERRIDE override
+#endif
+
+
+#endif // FAKE_CPP11_HPP

http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/input/releases/qpid-proton-0.13.0/proton/cpp/examples/fake_cpp11.hpp.html.in
----------------------------------------------------------------------
diff --git a/input/releases/qpid-proton-0.13.0/proton/cpp/examples/fake_cpp11.hpp.html.in b/input/releases/qpid-proton-0.13.0/proton/cpp/examples/fake_cpp11.hpp.html.in
new file mode 100644
index 0000000..45258cb
--- /dev/null
+++ b/input/releases/qpid-proton-0.13.0/proton/cpp/examples/fake_cpp11.hpp.html.in
@@ -0,0 +1,22 @@
+
+<h1>fake_cpp11.hpp</h1>
+<div class="highlight"><pre><span></span><span class="cp">#ifndef FAKE_CPP11_HPP</span>
+<span class="cp">#define FAKE_CPP11_HPP</span>
+
+
+
+<span class="c1">/// These definitions allow us to use some new C++11 features in previous compilers</span>
+<span class="c1">///</span>
+<span class="c1">/// It is strongly recommended not to copy this - just use C++11/C++14 instead!</span>
+
+<span class="cp">#if __cplusplus &lt; 201103L</span>
+<span class="cp">#define OVERRIDE</span>
+<span class="cp">#else</span>
+<span class="cp">#define OVERRIDE override</span>
+<span class="cp">#endif</span>
+
+
+<span class="cp">#endif </span><span class="c1">// FAKE_CPP11_HPP</span>
+</pre></div>
+
+<p><a href="fake_cpp11.hpp">Download this file</a></p>

http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/input/releases/qpid-proton-0.13.0/proton/cpp/examples/flow_control.cpp
----------------------------------------------------------------------
diff --git a/input/releases/qpid-proton-0.13.0/proton/cpp/examples/flow_control.cpp b/input/releases/qpid-proton-0.13.0/proton/cpp/examples/flow_control.cpp
new file mode 100644
index 0000000..2eedd65
--- /dev/null
+++ b/input/releases/qpid-proton-0.13.0/proton/cpp/examples/flow_control.cpp
@@ -0,0 +1,233 @@
+/*
+ *
+ * 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.
+ *
+ */
+
+#include <proton/listener.hpp>
+#include <proton/connection.hpp>
+#include <proton/connection_options.hpp>
+#include <proton/default_container.hpp>
+#include <proton/messaging_handler.hpp>
+#include <proton/sender.hpp>
+#include <proton/tracker.hpp>
+#include <proton/delivery.hpp>
+
+#include <iostream>
+#include <sstream>
+
+#include "fake_cpp11.hpp"
+
+namespace {
+
+bool verbose = true;
+
+void verify(bool success, const std::string &msg) {
+    if (!success)
+        throw std::runtime_error("example failure:" + msg);
+    else {
+        std::cout << "success: " << msg << std::endl;
+        if (verbose) std::cout << std::endl;
+    }
+}
+
+}
+
+// flow_sender manages the incoming connection and acts as the message sender.
+class flow_sender : public proton::messaging_handler {
+  private:
+    int available;  // Number of messages the sender may send assuming sufficient credit.
+    int sequence;
+
+  public:
+    flow_sender() : available(0), sequence(0) {}
+
+    void on_sendable(proton::sender &s) OVERRIDE {
+        if (verbose)
+            std::cout << "flow_sender in \"on_sendable\" with credit " << s.credit()
+                      << " and " << available << " available messages" << std::endl;
+        for (int i = sequence; available && s.credit() > 0; i++) {
+            std::ostringstream mbody;
+            mbody << "flow_sender message " << sequence++;
+            proton::message m(mbody.str());
+            s.send(m);
+            available--;
+        }
+    }
+
+    void on_sender_drain_start(proton::sender &s) OVERRIDE {
+        if (verbose)
+            std::cout << "flow_sender in \"on_drain_start\" with credit " << s.credit()
+                      << " making an internal call to \"on_sendble\"" << std::endl;
+        on_sendable(s); // send as many as we can
+        if (s.credit()) {
+            s.return_credit(); // return the rest
+        }
+    }
+
+    void set_available(int n) { available = n; }
+};
+
+class flow_receiver : public proton::messaging_handler {
+  public:
+    int stage;
+    int received;
+    flow_sender &sender;
+
+    flow_receiver(flow_sender &s) : stage(0), sender(s) {}
+
+    void example_setup(int n) {
+        received = 0;
+        sender.set_available(n);
+    }
+
+    void run_stage(proton::receiver &r, const std::string &caller) {
+        // Serialize the progression of the flow control examples.
+        switch (stage) {
+        case 0:
+            if (verbose) std::cout << "Example 1.  Simple use of credit." << std::endl;
+            // TODO: add timeout callbacks, show no messages until credit.
+            example_setup(2);
+            r.add_credit(2);
+            break;
+        case 1:
+            if (r.credit() > 0) return;
+            verify(received == 2, "Example 1: simple credit");
+
+            if (verbose) std::cout << "Example 2.   Use basic drain, sender has 3 \"immediate\" messages." << std::endl;
+            example_setup(3);
+            r.add_credit(5); // ask for up to 5
+            r.drain();       // but only use what's available
+            break;
+        case 2:
+            if (caller == "on_message") return;
+            if (caller == "on_receiver_drain_finish") {
+                // Note that unused credit of 2 at sender is returned and is now 0.
+                verify(received == 3 && r.credit() == 0, "Example 2: basic drain");
+
+                if (verbose) std::cout << "Example 3. Drain use with no credit." << std::endl;
+                example_setup(0);
+                r.drain();
+                break;
+            }
+            verify(false, "example 2 run_stage");
+            return;
+
+        case 3:
+            verify(caller == "on_receiver_drain_finish" && received == 0, "Example 3: drain without credit");
+
+            if (verbose) std::cout << "Example 4. Show using high(10)/low(3) watermark for 25 messages." << std::endl;
+            example_setup(25);
+            r.add_credit(10);
+            break;
+
+        case 4:
+            if (received < 25) {
+                // Top up credit as needed.
+                uint32_t credit = r.credit();
+                if (credit <= 3) {
+                    uint32_t new_credit = 10;
+                    uint32_t remaining = 25 - received;
+                    if (new_credit > remaining)
+                        new_credit = remaining;
+                    if (new_credit > credit) {
+                        r.add_credit(new_credit - credit);
+                        if (verbose)
+                            std::cout << "flow_receiver adding credit for " << new_credit - credit
+                                      << " messages" << std::endl;
+                    }
+                }
+                return;
+            }
+
+            verify(received == 25 && r.credit() == 0, "Exmaple 4: high/low watermark");
+            r.connection().close();
+            break;
+
+        default:
+            throw std::runtime_error("run_stage sequencing error");
+        }
+        stage++;
+    }
+
+    void on_receiver_open(proton::receiver &r) OVERRIDE {
+        run_stage(r, "on_receiver_open");
+    }
+
+    void on_message(proton::delivery &d, proton::message &m) OVERRIDE {
+        if (verbose)
+            std::cout << "flow_receiver in \"on_message\" with " << m.body() << std::endl;
+        proton::receiver r(d.receiver());
+        received++;
+        run_stage(r, "on_message");
+    }
+
+    void on_receiver_drain_finish(proton::receiver &r) OVERRIDE {
+        if (verbose)
+            std::cout << "flow_receiver in \"on_receiver_drain_finish\"" << std::endl;
+        run_stage(r, "on_receiver_drain_finish");
+    }
+};
+
+
+class flow_control : public proton::messaging_handler {
+  private:
+    std::string url;
+    proton::listener listener;
+    flow_sender send_handler;
+    flow_receiver receive_handler;
+
+  public:
+    flow_control(const std::string& u) : url(u), receive_handler(send_handler) {}
+
+    void on_container_start(proton::container &c) OVERRIDE {
+        listener = c.listen(url, proton::connection_options().handler(send_handler));
+        c.connect(url);
+    }
+
+    void on_connection_open(proton::connection &c) OVERRIDE {
+        if (c.active()) {
+            // outbound connection
+            c.open_receiver("flow_example", proton::receiver_options().handler(receive_handler).credit_window(0));
+        }
+    }
+
+    void on_connection_close(proton::connection &) OVERRIDE {
+        listener.stop();
+    }
+};
+
+int main(int argc, char **argv) {
+    std::string quiet_arg("-quiet");
+    if (argc > 2 && quiet_arg == argv[2])
+        verbose = false;
+    try {
+        // Pick an "unusual" port since we are going to be talking to
+        // ourselves, not a broker.
+        std::string url = argc > 1 ? argv[1] : "127.0.0.1:8888/examples";
+
+        flow_control fc(url);
+        proton::default_container(fc).run();
+
+        return 0;
+    } catch (const std::exception& e) {
+        std::cerr << e.what() << std::endl;
+    }
+
+    return 1;
+}


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


[19/26] qpid-site git commit: QPID-7350: Examples that should have gone with the previous commit

Posted by jr...@apache.org.
http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/content/releases/qpid-proton-0.13.0/proton/cpp/examples/ssl.cpp
----------------------------------------------------------------------
diff --git a/content/releases/qpid-proton-0.13.0/proton/cpp/examples/ssl.cpp b/content/releases/qpid-proton-0.13.0/proton/cpp/examples/ssl.cpp
new file mode 100755
index 0000000..91a4230
--- /dev/null
+++ b/content/releases/qpid-proton-0.13.0/proton/cpp/examples/ssl.cpp
@@ -0,0 +1,179 @@
+/*
+ *
+ * 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.
+ *
+ */
+
+#include <proton/connection_options.hpp>
+#include <proton/connection.hpp>
+#include <proton/default_container.hpp>
+#include <proton/messaging_handler.hpp>
+#include <proton/ssl.hpp>
+#include <proton/tracker.hpp>
+#include <proton/transport.hpp>
+
+#include <iostream>
+
+#include "fake_cpp11.hpp"
+
+using proton::connection_options;
+using proton::ssl_client_options;
+using proton::ssl_server_options;
+using proton::ssl_certificate;
+
+// Helper functions defined below.
+bool using_OpenSSL();
+std::string platform_CA(const std::string &base_name);
+ssl_certificate platform_certificate(const std::string &base_name, const std::string &passwd);
+static std::string cert_directory;
+std::string find_CN(const std::string &);
+
+
+struct server_handler : public proton::messaging_handler {
+    std::string url;
+
+    void on_connection_open(proton::connection &c) OVERRIDE {
+        std::cout << "Inbound server connection connected via SSL.  Protocol: " <<
+            c.transport().ssl().protocol() << std::endl;
+        c.container().stop_listening(url);
+    }
+
+    void on_message(proton::delivery &, proton::message &m) OVERRIDE {
+        std::cout << m.body() << std::endl;
+    }
+};
+
+
+class hello_world_direct : public proton::messaging_handler {
+  private:
+    std::string url;
+    server_handler s_handler;
+
+  public:
+    hello_world_direct(const std::string& u) : url(u) {}
+
+    void on_container_start(proton::container &c) OVERRIDE {
+        // Configure listener.  Details vary by platform.
+        ssl_certificate server_cert = platform_certificate("tserver", "tserverpw");
+        ssl_server_options ssl_srv(server_cert);
+        connection_options server_opts;
+        server_opts.ssl_server_options(ssl_srv).handler(s_handler);
+        c.server_connection_options(server_opts);
+
+        // Configure client with a Certificate Authority database populated with the server's self signed certificate.
+        // Since the test certifcate's credentials are unlikely to match this host's name, downgrade the verification
+        // from VERIFY_PEER_NAME to VERIFY_PEER.
+        connection_options client_opts;
+        ssl_client_options ssl_cli(platform_CA("tserver"), proton::ssl::VERIFY_PEER);
+        client_opts.ssl_client_options(ssl_cli);
+        c.client_connection_options(client_opts);
+
+        s_handler.url = url;
+        c.listen(url);
+        c.open_sender(url);
+    }
+
+    void on_connection_open(proton::connection &c) OVERRIDE {
+        std::string subject = c.transport().ssl().remote_subject();
+        std::cout << "Outgoing client connection connected via SSL.  Server certificate identity " <<
+            find_CN(subject) << std::endl;
+    }
+
+    void on_sendable(proton::sender &s) OVERRIDE {
+        proton::message m;
+        m.body("Hello World!");
+        s.send(m);
+        s.close();
+    }
+
+    void on_tracker_accept(proton::tracker &t) OVERRIDE {
+        // All done.
+        t.connection().close();
+    }
+};
+
+int main(int argc, char **argv) {
+    try {
+        // Pick an "unusual" port since we are going to be talking to ourselves, not a broker.
+        // Note the use of "amqps" as the URL scheme to denote a TLS/SSL connection.
+        std::string url = argc > 1 ? argv[1] : "amqps://127.0.0.1:8888/examples";
+        // Location of certificates and private key information:
+        if (argc > 2) {
+            cert_directory = argv[2];
+            size_t sz = cert_directory.size();
+            if (sz && cert_directory[sz -1] != '/')
+                cert_directory.append("/");
+        }
+        else cert_directory = "ssl_certs/";
+
+        hello_world_direct hwd(url);
+        proton::default_container(hwd).run();
+        return 0;
+    } catch (const std::exception& e) {
+        std::cerr << e.what() << std::endl;
+    }
+    return 1;
+}
+
+
+bool using_OpenSSL() {
+    // Current defaults.
+#if defined(WIN32)
+    return false;
+#else
+    return true;
+#endif
+}
+
+ssl_certificate platform_certificate(const std::string &base_name, const std::string &passwd) {
+    if (using_OpenSSL()) {
+        // The first argument will be the name of the file containing the public certificate, the
+        // second argument will be the name of the file containing the private key.
+        return ssl_certificate(cert_directory + base_name + "-certificate.pem",
+                               cert_directory + base_name + "-private-key.pem", passwd);
+    }
+    else {
+        // Windows SChannel
+        // The first argument will be the database or store that contains one or more complete certificates
+        // (public and private data).  The second will be an optional name of the certificate in the store
+        // (not used in this example with one certificate per store).
+        return ssl_certificate(cert_directory + base_name + "-full.p12", "", passwd);
+    }
+}
+
+std::string platform_CA(const std::string &base_name) {
+    if (using_OpenSSL()) {
+        // In this simple example with self-signed certificates, the peer's certificate is the CA database.
+        return cert_directory + base_name + "-certificate.pem";
+    }
+    else {
+        // Windows SChannel.  Use a pkcs#12 file with just the peer's public certificate information.
+        return cert_directory + base_name + "-certificate.p12";
+    }
+}
+
+std::string find_CN(const std::string &subject) {
+    // The subject string is returned with different whitespace and component ordering between platforms.
+    // Here we just return the common name by searching for "CN=...." in the subject, knowing that
+    // the test certificates do not contain any escaped characters.
+    size_t pos = subject.find("CN=");
+    if (pos == std::string::npos) throw std::runtime_error("No common name in certificate subject");
+    std::string cn = subject.substr(pos);
+    pos = cn.find(',');
+    return pos == std::string::npos ? cn : cn.substr(0, pos);
+}

http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/content/releases/qpid-proton-0.13.0/proton/cpp/examples/ssl.cpp.html
----------------------------------------------------------------------
diff --git a/content/releases/qpid-proton-0.13.0/proton/cpp/examples/ssl.cpp.html b/content/releases/qpid-proton-0.13.0/proton/cpp/examples/ssl.cpp.html
new file mode 100644
index 0000000..0f15d4d
--- /dev/null
+++ b/content/releases/qpid-proton-0.13.0/proton/cpp/examples/ssl.cpp.html
@@ -0,0 +1,307 @@
+<!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>ssl.cpp - 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/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;">
+        <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-proton-0.13.0/index.html">Qpid Proton 0.13.0</a></li><li><a href="/releases/qpid-proton-0.13.0/proton/cpp/examples/index.html">Proton C++ Examples</a></li><li>ssl.cpp</li></ul>
+
+        <div id="-middle-content">
+          
+<h1>ssl.cpp</h1>
+<div class="highlight"><pre><span></span><span class="cp">#include</span> <span class="cpf">&lt;proton/connection_options.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/connection.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/default_container.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/messaging_handler.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/ssl.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/tracker.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/transport.hpp&gt;</span><span class="cp"></span>
+
+<span class="cp">#include</span> <span class="cpf">&lt;iostream&gt;</span><span class="cp"></span>
+
+<span class="cp">#include</span> <span class="cpf">&quot;fake_cpp11.hpp&quot;</span><span class="cp"></span>
+
+<span class="k">using</span> <span class="n">proton</span><span class="o">::</span><span class="n">connection_options</span><span class="p">;</span>
+<span class="k">using</span> <span class="n">proton</span><span class="o">::</span><span class="n">ssl_client_options</span><span class="p">;</span>
+<span class="k">using</span> <span class="n">proton</span><span class="o">::</span><span class="n">ssl_server_options</span><span class="p">;</span>
+<span class="k">using</span> <span class="n">proton</span><span class="o">::</span><span class="n">ssl_certificate</span><span class="p">;</span>
+
+<span class="c1">// Helper functions defined below.</span>
+<span class="kt">bool</span> <span class="nf">using_OpenSSL</span><span class="p">();</span>
+<span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">platform_CA</span><span class="p">(</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="o">&amp;</span><span class="n">base_name</span><span class="p">);</span>
+<span class="n">ssl_certificate</span> <span class="nf">platform_certificate</span><span class="p">(</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="o">&amp;</span><span class="n">base_name</span><span class="p">,</span> <span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="o">&amp;</span><span class="n">passwd</span><span class="p">);</span>
+<span class="k">static</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">cert_directory</span><span class="p">;</span>
+<span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">find_CN</span><span class="p">(</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="o">&amp;</span><span class="p">);</span>
+
+
+<span class="k">struct</span> <span class="nl">server_handler</span> <span class="p">:</span> <span class="k">public</span> <span class="n">proton</span><span class="o">::</span><span class="n">messaging_handler</span> <span class="p">{</span>
+    <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">url</span><span class="p">;</span>
+
+    <span class="kt">void</span> <span class="nf">on_connection_open</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">connection</span> <span class="o">&amp;</span><span class="n">c</span><span class="p">)</span> <span class="n">OVERRIDE</span> <span class="p">{</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Inbound server connection connected via SSL.  Protocol: &quot;</span> <span class="o">&lt;&lt;</span>
+            <span class="n">c</span><span class="p">.</span><span class="n">transport</span><span class="p">().</span><span class="n">ssl</span><span class="p">().</span><span class="n">protocol</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+        <span class="n">c</span><span class="p">.</span><span class="n">container</span><span class="p">().</span><span class="n">stop_listening</span><span class="p">(</span><span class="n">url</span><span class="p">);</span>
+    <span class="p">}</span>
+
+    <span class="kt">void</span> <span class="nf">on_message</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">delivery</span> <span class="o">&amp;</span><span class="p">,</span> <span class="n">proton</span><span class="o">::</span><span class="n">message</span> <span class="o">&amp;</span><span class="n">m</span><span class="p">)</span> <span class="n">OVERRIDE</span> <span class="p">{</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="n">m</span><span class="p">.</span><span class="n">body</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+    <span class="p">}</span>
+<span class="p">};</span>
+
+
+<span class="k">class</span> <span class="nc">hello_world_direct</span> <span class="o">:</span> <span class="k">public</span> <span class="n">proton</span><span class="o">::</span><span class="n">messaging_handler</span> <span class="p">{</span>
+  <span class="k">private</span><span class="o">:</span>
+    <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">url</span><span class="p">;</span>
+    <span class="n">server_handler</span> <span class="n">s_handler</span><span class="p">;</span>
+
+  <span class="k">public</span><span class="o">:</span>
+    <span class="n">hello_world_direct</span><span class="p">(</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="o">&amp;</span> <span class="n">u</span><span class="p">)</span> <span class="o">:</span> <span class="n">url</span><span class="p">(</span><span class="n">u</span><span class="p">)</span> <span class="p">{}</span>
+
+    <span class="kt">void</span> <span class="n">on_container_start</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">container</span> <span class="o">&amp;</span><span class="n">c</span><span class="p">)</span> <span class="n">OVERRIDE</span> <span class="p">{</span>
+        <span class="c1">// Configure listener.  Details vary by platform.</span>
+        <span class="n">ssl_certificate</span> <span class="n">server_cert</span> <span class="o">=</span> <span class="n">platform_certificate</span><span class="p">(</span><span class="s">&quot;tserver&quot;</span><span class="p">,</span> <span class="s">&quot;tserverpw&quot;</span><span class="p">);</span>
+        <span class="n">ssl_server_options</span> <span class="nf">ssl_srv</span><span class="p">(</span><span class="n">server_cert</span><span class="p">);</span>
+        <span class="n">connection_options</span> <span class="n">server_opts</span><span class="p">;</span>
+        <span class="n">server_opts</span><span class="p">.</span><span class="n">ssl_server_options</span><span class="p">(</span><span class="n">ssl_srv</span><span class="p">).</span><span class="n">handler</span><span class="p">(</span><span class="n">s_handler</span><span class="p">);</span>
+        <span class="n">c</span><span class="p">.</span><span class="n">server_connection_options</span><span class="p">(</span><span class="n">server_opts</span><span class="p">);</span>
+
+        <span class="c1">// Configure client with a Certificate Authority database populated with the server&#39;s self signed certificate.</span>
+        <span class="c1">// Since the test certifcate&#39;s credentials are unlikely to match this host&#39;s name, downgrade the verification</span>
+        <span class="c1">// from VERIFY_PEER_NAME to VERIFY_PEER.</span>
+        <span class="n">connection_options</span> <span class="n">client_opts</span><span class="p">;</span>
+        <span class="n">ssl_client_options</span> <span class="nf">ssl_cli</span><span class="p">(</span><span class="n">platform_CA</span><span class="p">(</span><span class="s">&quot;tserver&quot;</span><span class="p">),</span> <span class="n">proton</span><span class="o">::</span><span class="n">ssl</span><span class="o">::</span><span class="n">VERIFY_PEER</span><span class="p">);</span>
+        <span class="n">client_opts</span><span class="p">.</span><span class="n">ssl_client_options</span><span class="p">(</span><span class="n">ssl_cli</span><span class="p">);</span>
+        <span class="n">c</span><span class="p">.</span><span class="n">client_connection_options</span><span class="p">(</span><span class="n">client_opts</span><span class="p">);</span>
+
+        <span class="n">s_handler</span><span class="p">.</span><span class="n">url</span> <span class="o">=</span> <span class="n">url</span><span class="p">;</span>
+        <span class="n">c</span><span class="p">.</span><span class="n">listen</span><span class="p">(</span><span class="n">url</span><span class="p">);</span>
+        <span class="n">c</span><span class="p">.</span><span class="n">open_sender</span><span class="p">(</span><span class="n">url</span><span class="p">);</span>
+    <span class="p">}</span>
+
+    <span class="kt">void</span> <span class="n">on_connection_open</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">connection</span> <span class="o">&amp;</span><span class="n">c</span><span class="p">)</span> <span class="n">OVERRIDE</span> <span class="p">{</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">subject</span> <span class="o">=</span> <span class="n">c</span><span class="p">.</span><span class="n">transport</span><span class="p">().</span><span class="n">ssl</span><span class="p">().</span><span class="n">remote_subject</span><span class="p">();</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Outgoing client connection connected via SSL.  Server certificate identity &quot;</span> <span class="o">&lt;&lt;</span>
+            <span class="n">find_CN</span><span class="p">(</span><span class="n">subject</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+    <span class="p">}</span>
+
+    <span class="kt">void</span> <span class="n">on_sendable</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">sender</span> <span class="o">&amp;</span><span class="n">s</span><span class="p">)</span> <span class="n">OVERRIDE</span> <span class="p">{</span>
+        <span class="n">proton</span><span class="o">::</span><span class="n">message</span> <span class="n">m</span><span class="p">;</span>
+        <span class="n">m</span><span class="p">.</span><span class="n">body</span><span class="p">(</span><span class="s">&quot;Hello World!&quot;</span><span class="p">);</span>
+        <span class="n">s</span><span class="p">.</span><span class="n">send</span><span class="p">(</span><span class="n">m</span><span class="p">);</span>
+        <span class="n">s</span><span class="p">.</span><span class="n">close</span><span class="p">();</span>
+    <span class="p">}</span>
+
+    <span class="kt">void</span> <span class="n">on_tracker_accept</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">tracker</span> <span class="o">&amp;</span><span class="n">t</span><span class="p">)</span> <span class="n">OVERRIDE</span> <span class="p">{</span>
+        <span class="c1">// All done.</span>
+        <span class="n">t</span><span class="p">.</span><span class="n">connection</span><span class="p">().</span><span class="n">close</span><span class="p">();</span>
+    <span class="p">}</span>
+<span class="p">};</span>
+
+<span class="kt">int</span> <span class="nf">main</span><span class="p">(</span><span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">**</span><span class="n">argv</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">try</span> <span class="p">{</span>
+        <span class="c1">// Pick an &quot;unusual&quot; port since we are going to be talking to ourselves, not a broker.</span>
+        <span class="c1">// Note the use of &quot;amqps&quot; as the URL scheme to denote a TLS/SSL connection.</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">url</span> <span class="o">=</span> <span class="n">argc</span> <span class="o">&gt;</span> <span class="mi">1</span> <span class="o">?</span> <span class="n">argv</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">:</span> <span class="s">&quot;amqps://127.0.0.1:8888/examples&quot;</span><span class="p">;</span>
+        <span class="c1">// Location of certificates and private key information:</span>
+        <span class="k">if</span> <span class="p">(</span><span class="n">argc</span> <span class="o">&gt;</span> <span class="mi">2</span><span class="p">)</span> <span class="p">{</span>
+            <span class="n">cert_directory</span> <span class="o">=</span> <span class="n">argv</span><span class="p">[</span><span class="mi">2</span><span class="p">];</span>
+            <span class="kt">size_t</span> <span class="n">sz</span> <span class="o">=</span> <span class="n">cert_directory</span><span class="p">.</span><span class="n">size</span><span class="p">();</span>
+            <span class="k">if</span> <span class="p">(</span><span class="n">sz</span> <span class="o">&amp;&amp;</span> <span class="n">cert_directory</span><span class="p">[</span><span class="n">sz</span> <span class="o">-</span><span class="mi">1</span><span class="p">]</span> <span class="o">!=</span> <span class="sc">&#39;/&#39;</span><span class="p">)</span>
+                <span class="n">cert_directory</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="s">&quot;/&quot;</span><span class="p">);</span>
+        <span class="p">}</span>
+        <span class="k">else</span> <span class="n">cert_directory</span> <span class="o">=</span> <span class="s">&quot;ssl_certs/&quot;</span><span class="p">;</span>
+
+        <span class="n">hello_world_direct</span> <span class="n">hwd</span><span class="p">(</span><span class="n">url</span><span class="p">);</span>
+        <span class="n">proton</span><span class="o">::</span><span class="n">default_container</span><span class="p">(</span><span class="n">hwd</span><span class="p">).</span><span class="n">run</span><span class="p">();</span>
+        <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">catch</span> <span class="p">(</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">exception</span><span class="o">&amp;</span> <span class="n">e</span><span class="p">)</span> <span class="p">{</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">cerr</span> <span class="o">&lt;&lt;</span> <span class="n">e</span><span class="p">.</span><span class="n">what</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+    <span class="p">}</span>
+    <span class="k">return</span> <span class="mi">1</span><span class="p">;</span>
+<span class="p">}</span>
+
+
+<span class="kt">bool</span> <span class="nf">using_OpenSSL</span><span class="p">()</span> <span class="p">{</span>
+    <span class="c1">// Current defaults.</span>
+<span class="cp">#if defined(WIN32)</span>
+    <span class="k">return</span> <span class="nb">false</span><span class="p">;</span>
+<span class="cp">#else</span>
+    <span class="k">return</span> <span class="nb">true</span><span class="p">;</span>
+<span class="cp">#endif</span>
+<span class="p">}</span>
+
+<span class="n">ssl_certificate</span> <span class="nf">platform_certificate</span><span class="p">(</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="o">&amp;</span><span class="n">base_name</span><span class="p">,</span> <span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="o">&amp;</span><span class="n">passwd</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">using_OpenSSL</span><span class="p">())</span> <span class="p">{</span>
+        <span class="c1">// The first argument will be the name of the file containing the public certificate, the</span>
+        <span class="c1">// second argument will be the name of the file containing the private key.</span>
+        <span class="k">return</span> <span class="n">ssl_certificate</span><span class="p">(</span><span class="n">cert_directory</span> <span class="o">+</span> <span class="n">base_name</span> <span class="o">+</span> <span class="s">&quot;-certificate.pem&quot;</span><span class="p">,</span>
+                               <span class="n">cert_directory</span> <span class="o">+</span> <span class="n">base_name</span> <span class="o">+</span> <span class="s">&quot;-private-key.pem&quot;</span><span class="p">,</span> <span class="n">passwd</span><span class="p">);</span>
+    <span class="p">}</span>
+    <span class="k">else</span> <span class="p">{</span>
+        <span class="c1">// Windows SChannel</span>
+        <span class="c1">// The first argument will be the database or store that contains one or more complete certificates</span>
+        <span class="c1">// (public and private data).  The second will be an optional name of the certificate in the store</span>
+        <span class="c1">// (not used in this example with one certificate per store).</span>
+        <span class="k">return</span> <span class="n">ssl_certificate</span><span class="p">(</span><span class="n">cert_directory</span> <span class="o">+</span> <span class="n">base_name</span> <span class="o">+</span> <span class="s">&quot;-full.p12&quot;</span><span class="p">,</span> <span class="s">&quot;&quot;</span><span class="p">,</span> <span class="n">passwd</span><span class="p">);</span>
+    <span class="p">}</span>
+<span class="p">}</span>
+
+<span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">platform_CA</span><span class="p">(</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="o">&amp;</span><span class="n">base_name</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">using_OpenSSL</span><span class="p">())</span> <span class="p">{</span>
+        <span class="c1">// In this simple example with self-signed certificates, the peer&#39;s certificate is the CA database.</span>
+        <span class="k">return</span> <span class="n">cert_directory</span> <span class="o">+</span> <span class="n">base_name</span> <span class="o">+</span> <span class="s">&quot;-certificate.pem&quot;</span><span class="p">;</span>
+    <span class="p">}</span>
+    <span class="k">else</span> <span class="p">{</span>
+        <span class="c1">// Windows SChannel.  Use a pkcs#12 file with just the peer&#39;s public certificate information.</span>
+        <span class="k">return</span> <span class="n">cert_directory</span> <span class="o">+</span> <span class="n">base_name</span> <span class="o">+</span> <span class="s">&quot;-certificate.p12&quot;</span><span class="p">;</span>
+    <span class="p">}</span>
+<span class="p">}</span>
+
+<span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">find_CN</span><span class="p">(</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="o">&amp;</span><span class="n">subject</span><span class="p">)</span> <span class="p">{</span>
+    <span class="c1">// The subject string is returned with different whitespace and component ordering between platforms.</span>
+    <span class="c1">// Here we just return the common name by searching for &quot;CN=....&quot; in the subject, knowing that</span>
+    <span class="c1">// the test certificates do not contain any escaped characters.</span>
+    <span class="kt">size_t</span> <span class="n">pos</span> <span class="o">=</span> <span class="n">subject</span><span class="p">.</span><span class="n">find</span><span class="p">(</span><span class="s">&quot;CN=&quot;</span><span class="p">);</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">pos</span> <span class="o">==</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="o">::</span><span class="n">npos</span><span class="p">)</span> <span class="k">throw</span> <span class="n">std</span><span class="o">::</span><span class="n">runtime_error</span><span class="p">(</span><span class="s">&quot;No common name in certificate subject&quot;</span><span class="p">);</span>
+    <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">cn</span> <span class="o">=</span> <span class="n">subject</span><span class="p">.</span><span class="n">substr</span><span class="p">(</span><span class="n">pos</span><span class="p">);</span>
+    <span class="n">pos</span> <span class="o">=</span> <span class="n">cn</span><span class="p">.</span><span class="n">find</span><span class="p">(</span><span class="sc">&#39;,&#39;</span><span class="p">);</span>
+    <span class="k">return</span> <span class="n">pos</span> <span class="o">==</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="o">::</span><span class="n">npos</span> <span class="o">?</span> <span class="nl">cn</span> <span class="p">:</span> <span class="n">cn</span><span class="p">.</span><span class="n">substr</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">pos</span><span class="p">);</span>
+<span class="p">}</span>
+</pre></div>
+
+<p><a href="ssl.cpp">Download this file</a></p>
+
+
+          <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/75ca8b14/content/releases/qpid-proton-0.13.0/proton/cpp/examples/ssl_client_cert.cpp
----------------------------------------------------------------------
diff --git a/content/releases/qpid-proton-0.13.0/proton/cpp/examples/ssl_client_cert.cpp b/content/releases/qpid-proton-0.13.0/proton/cpp/examples/ssl_client_cert.cpp
new file mode 100755
index 0000000..42b6593
--- /dev/null
+++ b/content/releases/qpid-proton-0.13.0/proton/cpp/examples/ssl_client_cert.cpp
@@ -0,0 +1,193 @@
+/*
+ *
+ * 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.
+ *
+ */
+
+#include <proton/connection.hpp>
+#include <proton/connection_options.hpp>
+#include <proton/default_container.hpp>
+#include <proton/messaging_handler.hpp>
+#include <proton/sasl.hpp>
+#include <proton/ssl.hpp>
+#include <proton/tracker.hpp>
+#include <proton/transport.hpp>
+
+#include <iostream>
+
+#include "fake_cpp11.hpp"
+
+using proton::connection_options;
+using proton::ssl_client_options;
+using proton::ssl_server_options;
+using proton::ssl_certificate;
+using proton::sasl;
+
+// Helper functions defined below.
+bool using_OpenSSL();
+std::string platform_CA(const std::string &base_name);
+ssl_certificate platform_certificate(const std::string &base_name, const std::string &passwd);
+static std::string cert_directory;
+static std::string find_CN(const std::string &);
+
+
+struct server_handler : public proton::messaging_handler {
+    proton::listener listener;
+
+    void on_connection_open(proton::connection &c) OVERRIDE {
+        std::cout << "Inbound server connection connected via SSL.  Protocol: " <<
+            c.transport().ssl().protocol() << std::endl;
+        if (c.transport().sasl().outcome() == sasl::OK) {
+            std::string subject = c.transport().ssl().remote_subject();
+            std::cout << "Inbound client certificate identity " << find_CN(subject) << std::endl;
+        }
+        else {
+            std::cout << "Inbound client authentication failed" <<std::endl;
+            c.close();
+        }
+        listener.stop();
+    }
+
+    void on_message(proton::delivery &, proton::message &m) OVERRIDE {
+        std::cout << m.body() << std::endl;
+    }
+};
+
+
+class hello_world_direct : public proton::messaging_handler {
+  private:
+    std::string url;
+    server_handler s_handler;
+
+  public:
+    hello_world_direct(const std::string& u) : url(u) {}
+
+    void on_container_start(proton::container &c) OVERRIDE {
+        // Configure listener.  Details vary by platform.
+        ssl_certificate server_cert = platform_certificate("tserver", "tserverpw");
+        std::string client_CA = platform_CA("tclient");
+        // Specify an SSL domain with CA's for client certificate verification.
+        ssl_server_options srv_ssl(server_cert, client_CA);
+        connection_options server_opts;
+        server_opts.ssl_server_options(srv_ssl).handler(s_handler);
+        server_opts.sasl_allowed_mechs("EXTERNAL");
+        c.server_connection_options(server_opts);
+
+        // Configure client.
+        ssl_certificate client_cert = platform_certificate("tclient", "tclientpw");
+        std::string server_CA = platform_CA("tserver");
+        // Since the test certifcate's credentials are unlikely to match this host's name, downgrade the verification
+        // from VERIFY_PEER_NAME to VERIFY_PEER.
+        ssl_client_options ssl_cli(client_cert, server_CA, proton::ssl::VERIFY_PEER);
+        connection_options client_opts;
+        client_opts.ssl_client_options(ssl_cli).sasl_allowed_mechs("EXTERNAL");
+        c.client_connection_options(client_opts);
+
+        s_handler.listener = c.listen(url);
+        c.open_sender(url);
+    }
+
+    void on_connection_open(proton::connection &c) OVERRIDE {
+        std::string subject = c.transport().ssl().remote_subject();
+        std::cout << "Outgoing client connection connected via SSL.  Server certificate identity " <<
+            find_CN(subject) << std::endl;
+    }
+
+    void on_sendable(proton::sender &s) OVERRIDE {
+        proton::message m;
+        m.body("Hello World!");
+        s.send(m);
+        s.close();
+    }
+
+    void on_tracker_accept(proton::tracker &t) OVERRIDE {
+        // All done.
+        t.connection().close();
+    }
+};
+
+int main(int argc, char **argv) {
+    try {
+        // Pick an "unusual" port since we are going to be talking to ourselves, not a broker.
+        // Note the use of "amqps" as the URL scheme to denote a TLS/SSL connection.
+        std::string url = argc > 1 ? argv[1] : "amqps://127.0.0.1:8888/examples";
+        // Location of certificates and private key information:
+        if (argc > 2) {
+            cert_directory = argv[2];
+            size_t sz = cert_directory.size();
+            if (sz && cert_directory[sz -1] != '/')
+                cert_directory.append("/");
+        }
+        else cert_directory = "ssl_certs/";
+
+        hello_world_direct hwd(url);
+        proton::default_container(hwd).run();
+        return 0;
+    } catch (const std::exception& e) {
+        std::cerr << e.what() << std::endl;
+    }
+    return 1;
+}
+
+
+bool using_OpenSSL() {
+    // Current defaults.
+#if defined(WIN32)
+    return false;
+#else
+    return true;
+#endif
+}
+
+ssl_certificate platform_certificate(const std::string &base_name, const std::string &passwd) {
+    if (using_OpenSSL()) {
+        // The first argument will be the name of the file containing the public certificate, the
+        // second argument will be the name of the file containing the private key.
+        return ssl_certificate(cert_directory + base_name + "-certificate.pem",
+                               cert_directory + base_name + "-private-key.pem", passwd);
+    }
+    else {
+        // Windows SChannel
+        // The first argument will be the database or store that contains one or more complete certificates
+        // (public and private data).  The second will be an optional name of the certificate in the store
+        // (not used in this example with one certificate per store).
+        return ssl_certificate(cert_directory + base_name + "-full.p12", "", passwd);
+    }
+}
+
+std::string platform_CA(const std::string &base_name) {
+    if (using_OpenSSL()) {
+        // In this simple example with self-signed certificates, the peer's certificate is the CA database.
+        return cert_directory + base_name + "-certificate.pem";
+    }
+    else {
+        // Windows SChannel.  Use a pkcs#12 file with just the peer's public certificate information.
+        return cert_directory + base_name + "-certificate.p12";
+    }
+}
+
+std::string find_CN(const std::string &subject) {
+    // The subject string is returned with different whitespace and component ordering between platforms.
+    // Here we just return the common name by searching for "CN=...." in the subject, knowing that
+    // the test certificates do not contain any escaped characters.
+    size_t pos = subject.find("CN=");
+    if (pos == std::string::npos) throw std::runtime_error("No common name in certificate subject");
+    std::string cn = subject.substr(pos);
+    pos = cn.find(',');
+    return pos == std::string::npos ? cn : cn.substr(0, pos);
+}

http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/content/releases/qpid-proton-0.13.0/proton/cpp/examples/ssl_client_cert.cpp.html
----------------------------------------------------------------------
diff --git a/content/releases/qpid-proton-0.13.0/proton/cpp/examples/ssl_client_cert.cpp.html b/content/releases/qpid-proton-0.13.0/proton/cpp/examples/ssl_client_cert.cpp.html
new file mode 100644
index 0000000..f3f4712
--- /dev/null
+++ b/content/releases/qpid-proton-0.13.0/proton/cpp/examples/ssl_client_cert.cpp.html
@@ -0,0 +1,321 @@
+<!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>ssl_client_cert.cpp - 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/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;">
+        <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-proton-0.13.0/index.html">Qpid Proton 0.13.0</a></li><li><a href="/releases/qpid-proton-0.13.0/proton/cpp/examples/index.html">Proton C++ Examples</a></li><li>ssl_client_cert.cpp</li></ul>
+
+        <div id="-middle-content">
+          
+<h1>ssl_client_cert.cpp</h1>
+<div class="highlight"><pre><span></span><span class="cp">#include</span> <span class="cpf">&lt;proton/connection.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/connection_options.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/default_container.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/messaging_handler.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/sasl.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/ssl.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/tracker.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/transport.hpp&gt;</span><span class="cp"></span>
+
+<span class="cp">#include</span> <span class="cpf">&lt;iostream&gt;</span><span class="cp"></span>
+
+<span class="cp">#include</span> <span class="cpf">&quot;fake_cpp11.hpp&quot;</span><span class="cp"></span>
+
+<span class="k">using</span> <span class="n">proton</span><span class="o">::</span><span class="n">connection_options</span><span class="p">;</span>
+<span class="k">using</span> <span class="n">proton</span><span class="o">::</span><span class="n">ssl_client_options</span><span class="p">;</span>
+<span class="k">using</span> <span class="n">proton</span><span class="o">::</span><span class="n">ssl_server_options</span><span class="p">;</span>
+<span class="k">using</span> <span class="n">proton</span><span class="o">::</span><span class="n">ssl_certificate</span><span class="p">;</span>
+<span class="k">using</span> <span class="n">proton</span><span class="o">::</span><span class="n">sasl</span><span class="p">;</span>
+
+<span class="c1">// Helper functions defined below.</span>
+<span class="kt">bool</span> <span class="nf">using_OpenSSL</span><span class="p">();</span>
+<span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">platform_CA</span><span class="p">(</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="o">&amp;</span><span class="n">base_name</span><span class="p">);</span>
+<span class="n">ssl_certificate</span> <span class="nf">platform_certificate</span><span class="p">(</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="o">&amp;</span><span class="n">base_name</span><span class="p">,</span> <span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="o">&amp;</span><span class="n">passwd</span><span class="p">);</span>
+<span class="k">static</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">cert_directory</span><span class="p">;</span>
+<span class="k">static</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">find_CN</span><span class="p">(</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="o">&amp;</span><span class="p">);</span>
+
+
+<span class="k">struct</span> <span class="nl">server_handler</span> <span class="p">:</span> <span class="k">public</span> <span class="n">proton</span><span class="o">::</span><span class="n">messaging_handler</span> <span class="p">{</span>
+    <span class="n">proton</span><span class="o">::</span><span class="n">listener</span> <span class="n">listener</span><span class="p">;</span>
+
+    <span class="kt">void</span> <span class="nf">on_connection_open</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">connection</span> <span class="o">&amp;</span><span class="n">c</span><span class="p">)</span> <span class="n">OVERRIDE</span> <span class="p">{</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Inbound server connection connected via SSL.  Protocol: &quot;</span> <span class="o">&lt;&lt;</span>
+            <span class="n">c</span><span class="p">.</span><span class="n">transport</span><span class="p">().</span><span class="n">ssl</span><span class="p">().</span><span class="n">protocol</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+        <span class="k">if</span> <span class="p">(</span><span class="n">c</span><span class="p">.</span><span class="n">transport</span><span class="p">().</span><span class="n">sasl</span><span class="p">().</span><span class="n">outcome</span><span class="p">()</span> <span class="o">==</span> <span class="n">sasl</span><span class="o">::</span><span class="n">OK</span><span class="p">)</span> <span class="p">{</span>
+            <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">subject</span> <span class="o">=</span> <span class="n">c</span><span class="p">.</span><span class="n">transport</span><span class="p">().</span><span class="n">ssl</span><span class="p">().</span><span class="n">remote_subject</span><span class="p">();</span>
+            <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Inbound client certificate identity &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">find_CN</span><span class="p">(</span><span class="n">subject</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+        <span class="p">}</span>
+        <span class="k">else</span> <span class="p">{</span>
+            <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Inbound client authentication failed&quot;</span> <span class="o">&lt;&lt;</span><span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+            <span class="n">c</span><span class="p">.</span><span class="n">close</span><span class="p">();</span>
+        <span class="p">}</span>
+        <span class="n">listener</span><span class="p">.</span><span class="n">stop</span><span class="p">();</span>
+    <span class="p">}</span>
+
+    <span class="kt">void</span> <span class="nf">on_message</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">delivery</span> <span class="o">&amp;</span><span class="p">,</span> <span class="n">proton</span><span class="o">::</span><span class="n">message</span> <span class="o">&amp;</span><span class="n">m</span><span class="p">)</span> <span class="n">OVERRIDE</span> <span class="p">{</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="n">m</span><span class="p">.</span><span class="n">body</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+    <span class="p">}</span>
+<span class="p">};</span>
+
+
+<span class="k">class</span> <span class="nc">hello_world_direct</span> <span class="o">:</span> <span class="k">public</span> <span class="n">proton</span><span class="o">::</span><span class="n">messaging_handler</span> <span class="p">{</span>
+  <span class="k">private</span><span class="o">:</span>
+    <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">url</span><span class="p">;</span>
+    <span class="n">server_handler</span> <span class="n">s_handler</span><span class="p">;</span>
+
+  <span class="k">public</span><span class="o">:</span>
+    <span class="n">hello_world_direct</span><span class="p">(</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="o">&amp;</span> <span class="n">u</span><span class="p">)</span> <span class="o">:</span> <span class="n">url</span><span class="p">(</span><span class="n">u</span><span class="p">)</span> <span class="p">{}</span>
+
+    <span class="kt">void</span> <span class="n">on_container_start</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">container</span> <span class="o">&amp;</span><span class="n">c</span><span class="p">)</span> <span class="n">OVERRIDE</span> <span class="p">{</span>
+        <span class="c1">// Configure listener.  Details vary by platform.</span>
+        <span class="n">ssl_certificate</span> <span class="n">server_cert</span> <span class="o">=</span> <span class="n">platform_certificate</span><span class="p">(</span><span class="s">&quot;tserver&quot;</span><span class="p">,</span> <span class="s">&quot;tserverpw&quot;</span><span class="p">);</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">client_CA</span> <span class="o">=</span> <span class="n">platform_CA</span><span class="p">(</span><span class="s">&quot;tclient&quot;</span><span class="p">);</span>
+        <span class="c1">// Specify an SSL domain with CA&#39;s for client certificate verification.</span>
+        <span class="n">ssl_server_options</span> <span class="nf">srv_ssl</span><span class="p">(</span><span class="n">server_cert</span><span class="p">,</span> <span class="n">client_CA</span><span class="p">);</span>
+        <span class="n">connection_options</span> <span class="n">server_opts</span><span class="p">;</span>
+        <span class="n">server_opts</span><span class="p">.</span><span class="n">ssl_server_options</span><span class="p">(</span><span class="n">srv_ssl</span><span class="p">).</span><span class="n">handler</span><span class="p">(</span><span class="n">s_handler</span><span class="p">);</span>
+        <span class="n">server_opts</span><span class="p">.</span><span class="n">sasl_allowed_mechs</span><span class="p">(</span><span class="s">&quot;EXTERNAL&quot;</span><span class="p">);</span>
+        <span class="n">c</span><span class="p">.</span><span class="n">server_connection_options</span><span class="p">(</span><span class="n">server_opts</span><span class="p">);</span>
+
+        <span class="c1">// Configure client.</span>
+        <span class="n">ssl_certificate</span> <span class="n">client_cert</span> <span class="o">=</span> <span class="n">platform_certificate</span><span class="p">(</span><span class="s">&quot;tclient&quot;</span><span class="p">,</span> <span class="s">&quot;tclientpw&quot;</span><span class="p">);</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">server_CA</span> <span class="o">=</span> <span class="n">platform_CA</span><span class="p">(</span><span class="s">&quot;tserver&quot;</span><span class="p">);</span>
+        <span class="c1">// Since the test certifcate&#39;s credentials are unlikely to match this host&#39;s name, downgrade the verification</span>
+        <span class="c1">// from VERIFY_PEER_NAME to VERIFY_PEER.</span>
+        <span class="n">ssl_client_options</span> <span class="nf">ssl_cli</span><span class="p">(</span><span class="n">client_cert</span><span class="p">,</span> <span class="n">server_CA</span><span class="p">,</span> <span class="n">proton</span><span class="o">::</span><span class="n">ssl</span><span class="o">::</span><span class="n">VERIFY_PEER</span><span class="p">);</span>
+        <span class="n">connection_options</span> <span class="n">client_opts</span><span class="p">;</span>
+        <span class="n">client_opts</span><span class="p">.</span><span class="n">ssl_client_options</span><span class="p">(</span><span class="n">ssl_cli</span><span class="p">).</span><span class="n">sasl_allowed_mechs</span><span class="p">(</span><span class="s">&quot;EXTERNAL&quot;</span><span class="p">);</span>
+        <span class="n">c</span><span class="p">.</span><span class="n">client_connection_options</span><span class="p">(</span><span class="n">client_opts</span><span class="p">);</span>
+
+        <span class="n">s_handler</span><span class="p">.</span><span class="n">listener</span> <span class="o">=</span> <span class="n">c</span><span class="p">.</span><span class="n">listen</span><span class="p">(</span><span class="n">url</span><span class="p">);</span>
+        <span class="n">c</span><span class="p">.</span><span class="n">open_sender</span><span class="p">(</span><span class="n">url</span><span class="p">);</span>
+    <span class="p">}</span>
+
+    <span class="kt">void</span> <span class="n">on_connection_open</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">connection</span> <span class="o">&amp;</span><span class="n">c</span><span class="p">)</span> <span class="n">OVERRIDE</span> <span class="p">{</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">subject</span> <span class="o">=</span> <span class="n">c</span><span class="p">.</span><span class="n">transport</span><span class="p">().</span><span class="n">ssl</span><span class="p">().</span><span class="n">remote_subject</span><span class="p">();</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Outgoing client connection connected via SSL.  Server certificate identity &quot;</span> <span class="o">&lt;&lt;</span>
+            <span class="n">find_CN</span><span class="p">(</span><span class="n">subject</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+    <span class="p">}</span>
+
+    <span class="kt">void</span> <span class="n">on_sendable</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">sender</span> <span class="o">&amp;</span><span class="n">s</span><span class="p">)</span> <span class="n">OVERRIDE</span> <span class="p">{</span>
+        <span class="n">proton</span><span class="o">::</span><span class="n">message</span> <span class="n">m</span><span class="p">;</span>
+        <span class="n">m</span><span class="p">.</span><span class="n">body</span><span class="p">(</span><span class="s">&quot;Hello World!&quot;</span><span class="p">);</span>
+        <span class="n">s</span><span class="p">.</span><span class="n">send</span><span class="p">(</span><span class="n">m</span><span class="p">);</span>
+        <span class="n">s</span><span class="p">.</span><span class="n">close</span><span class="p">();</span>
+    <span class="p">}</span>
+
+    <span class="kt">void</span> <span class="n">on_tracker_accept</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">tracker</span> <span class="o">&amp;</span><span class="n">t</span><span class="p">)</span> <span class="n">OVERRIDE</span> <span class="p">{</span>
+        <span class="c1">// All done.</span>
+        <span class="n">t</span><span class="p">.</span><span class="n">connection</span><span class="p">().</span><span class="n">close</span><span class="p">();</span>
+    <span class="p">}</span>
+<span class="p">};</span>
+
+<span class="kt">int</span> <span class="nf">main</span><span class="p">(</span><span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">**</span><span class="n">argv</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">try</span> <span class="p">{</span>
+        <span class="c1">// Pick an &quot;unusual&quot; port since we are going to be talking to ourselves, not a broker.</span>
+        <span class="c1">// Note the use of &quot;amqps&quot; as the URL scheme to denote a TLS/SSL connection.</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">url</span> <span class="o">=</span> <span class="n">argc</span> <span class="o">&gt;</span> <span class="mi">1</span> <span class="o">?</span> <span class="n">argv</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">:</span> <span class="s">&quot;amqps://127.0.0.1:8888/examples&quot;</span><span class="p">;</span>
+        <span class="c1">// Location of certificates and private key information:</span>
+        <span class="k">if</span> <span class="p">(</span><span class="n">argc</span> <span class="o">&gt;</span> <span class="mi">2</span><span class="p">)</span> <span class="p">{</span>
+            <span class="n">cert_directory</span> <span class="o">=</span> <span class="n">argv</span><span class="p">[</span><span class="mi">2</span><span class="p">];</span>
+            <span class="kt">size_t</span> <span class="n">sz</span> <span class="o">=</span> <span class="n">cert_directory</span><span class="p">.</span><span class="n">size</span><span class="p">();</span>
+            <span class="k">if</span> <span class="p">(</span><span class="n">sz</span> <span class="o">&amp;&amp;</span> <span class="n">cert_directory</span><span class="p">[</span><span class="n">sz</span> <span class="o">-</span><span class="mi">1</span><span class="p">]</span> <span class="o">!=</span> <span class="sc">&#39;/&#39;</span><span class="p">)</span>
+                <span class="n">cert_directory</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="s">&quot;/&quot;</span><span class="p">);</span>
+        <span class="p">}</span>
+        <span class="k">else</span> <span class="n">cert_directory</span> <span class="o">=</span> <span class="s">&quot;ssl_certs/&quot;</span><span class="p">;</span>
+
+        <span class="n">hello_world_direct</span> <span class="n">hwd</span><span class="p">(</span><span class="n">url</span><span class="p">);</span>
+        <span class="n">proton</span><span class="o">::</span><span class="n">default_container</span><span class="p">(</span><span class="n">hwd</span><span class="p">).</span><span class="n">run</span><span class="p">();</span>
+        <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">catch</span> <span class="p">(</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">exception</span><span class="o">&amp;</span> <span class="n">e</span><span class="p">)</span> <span class="p">{</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">cerr</span> <span class="o">&lt;&lt;</span> <span class="n">e</span><span class="p">.</span><span class="n">what</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+    <span class="p">}</span>
+    <span class="k">return</span> <span class="mi">1</span><span class="p">;</span>
+<span class="p">}</span>
+
+
+<span class="kt">bool</span> <span class="nf">using_OpenSSL</span><span class="p">()</span> <span class="p">{</span>
+    <span class="c1">// Current defaults.</span>
+<span class="cp">#if defined(WIN32)</span>
+    <span class="k">return</span> <span class="nb">false</span><span class="p">;</span>
+<span class="cp">#else</span>
+    <span class="k">return</span> <span class="nb">true</span><span class="p">;</span>
+<span class="cp">#endif</span>
+<span class="p">}</span>
+
+<span class="n">ssl_certificate</span> <span class="nf">platform_certificate</span><span class="p">(</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="o">&amp;</span><span class="n">base_name</span><span class="p">,</span> <span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="o">&amp;</span><span class="n">passwd</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">using_OpenSSL</span><span class="p">())</span> <span class="p">{</span>
+        <span class="c1">// The first argument will be the name of the file containing the public certificate, the</span>
+        <span class="c1">// second argument will be the name of the file containing the private key.</span>
+        <span class="k">return</span> <span class="n">ssl_certificate</span><span class="p">(</span><span class="n">cert_directory</span> <span class="o">+</span> <span class="n">base_name</span> <span class="o">+</span> <span class="s">&quot;-certificate.pem&quot;</span><span class="p">,</span>
+                               <span class="n">cert_directory</span> <span class="o">+</span> <span class="n">base_name</span> <span class="o">+</span> <span class="s">&quot;-private-key.pem&quot;</span><span class="p">,</span> <span class="n">passwd</span><span class="p">);</span>
+    <span class="p">}</span>
+    <span class="k">else</span> <span class="p">{</span>
+        <span class="c1">// Windows SChannel</span>
+        <span class="c1">// The first argument will be the database or store that contains one or more complete certificates</span>
+        <span class="c1">// (public and private data).  The second will be an optional name of the certificate in the store</span>
+        <span class="c1">// (not used in this example with one certificate per store).</span>
+        <span class="k">return</span> <span class="n">ssl_certificate</span><span class="p">(</span><span class="n">cert_directory</span> <span class="o">+</span> <span class="n">base_name</span> <span class="o">+</span> <span class="s">&quot;-full.p12&quot;</span><span class="p">,</span> <span class="s">&quot;&quot;</span><span class="p">,</span> <span class="n">passwd</span><span class="p">);</span>
+    <span class="p">}</span>
+<span class="p">}</span>
+
+<span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">platform_CA</span><span class="p">(</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="o">&amp;</span><span class="n">base_name</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">using_OpenSSL</span><span class="p">())</span> <span class="p">{</span>
+        <span class="c1">// In this simple example with self-signed certificates, the peer&#39;s certificate is the CA database.</span>
+        <span class="k">return</span> <span class="n">cert_directory</span> <span class="o">+</span> <span class="n">base_name</span> <span class="o">+</span> <span class="s">&quot;-certificate.pem&quot;</span><span class="p">;</span>
+    <span class="p">}</span>
+    <span class="k">else</span> <span class="p">{</span>
+        <span class="c1">// Windows SChannel.  Use a pkcs#12 file with just the peer&#39;s public certificate information.</span>
+        <span class="k">return</span> <span class="n">cert_directory</span> <span class="o">+</span> <span class="n">base_name</span> <span class="o">+</span> <span class="s">&quot;-certificate.p12&quot;</span><span class="p">;</span>
+    <span class="p">}</span>
+<span class="p">}</span>
+
+<span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">find_CN</span><span class="p">(</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="o">&amp;</span><span class="n">subject</span><span class="p">)</span> <span class="p">{</span>
+    <span class="c1">// The subject string is returned with different whitespace and component ordering between platforms.</span>
+    <span class="c1">// Here we just return the common name by searching for &quot;CN=....&quot; in the subject, knowing that</span>
+    <span class="c1">// the test certificates do not contain any escaped characters.</span>
+    <span class="kt">size_t</span> <span class="n">pos</span> <span class="o">=</span> <span class="n">subject</span><span class="p">.</span><span class="n">find</span><span class="p">(</span><span class="s">&quot;CN=&quot;</span><span class="p">);</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">pos</span> <span class="o">==</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="o">::</span><span class="n">npos</span><span class="p">)</span> <span class="k">throw</span> <span class="n">std</span><span class="o">::</span><span class="n">runtime_error</span><span class="p">(</span><span class="s">&quot;No common name in certificate subject&quot;</span><span class="p">);</span>
+    <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">cn</span> <span class="o">=</span> <span class="n">subject</span><span class="p">.</span><span class="n">substr</span><span class="p">(</span><span class="n">pos</span><span class="p">);</span>
+    <span class="n">pos</span> <span class="o">=</span> <span class="n">cn</span><span class="p">.</span><span class="n">find</span><span class="p">(</span><span class="sc">&#39;,&#39;</span><span class="p">);</span>
+    <span class="k">return</span> <span class="n">pos</span> <span class="o">==</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="o">::</span><span class="n">npos</span> <span class="o">?</span> <span class="nl">cn</span> <span class="p">:</span> <span class="n">cn</span><span class="p">.</span><span class="n">substr</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">pos</span><span class="p">);</span>
+<span class="p">}</span>
+</pre></div>
+
+<p><a href="ssl_client_cert.cpp">Download this file</a></p>
+
+
+          <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/75ca8b14/content/releases/qpid-proton-0.13.0/proton/python/examples/abstract_server.py
----------------------------------------------------------------------
diff --git a/content/releases/qpid-proton-0.13.0/proton/python/examples/abstract_server.py b/content/releases/qpid-proton-0.13.0/proton/python/examples/abstract_server.py
new file mode 100755
index 0000000..fed7fb2
--- /dev/null
+++ b/content/releases/qpid-proton-0.13.0/proton/python/examples/abstract_server.py
@@ -0,0 +1,36 @@
+#!/usr/bin/env python
+#
+# 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.
+#
+
+from __future__ import print_function
+from proton_server import Server
+
+class Application(Server):
+    def __init__(self, host, address):
+        super(Application, self).__init__(host, address)
+
+    def on_request(self, request, reply_to):
+        response = request.upper()
+        self.send(response, reply_to)
+        print("Request from: %s" % reply_to)
+
+try:
+    Application("localhost:5672", "examples").run()
+except KeyboardInterrupt: pass
+


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


[02/26] qpid-site git commit: QPID-7350: Examples that should have gone with the previous commit

Posted by jr...@apache.org.
http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/input/releases/qpid-proton-0.13.0/proton/python/examples/server.py
----------------------------------------------------------------------
diff --git a/input/releases/qpid-proton-0.13.0/proton/python/examples/server.py b/input/releases/qpid-proton-0.13.0/proton/python/examples/server.py
new file mode 100755
index 0000000..8cebaad
--- /dev/null
+++ b/input/releases/qpid-proton-0.13.0/proton/python/examples/server.py
@@ -0,0 +1,49 @@
+#!/usr/bin/env python
+#
+# 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.
+#
+
+from __future__ import print_function
+from proton import Message
+from proton.handlers import MessagingHandler
+from proton.reactor import Container
+
+class Server(MessagingHandler):
+    def __init__(self, url, address):
+        super(Server, self).__init__()
+        self.url = url
+        self.address = address
+
+    def on_start(self, event):
+        print("Listening on", self.url)
+        self.container = event.container
+        self.conn = event.container.connect(self.url)
+        self.receiver = event.container.create_receiver(self.conn, self.address)
+        self.server = self.container.create_sender(self.conn, None)
+
+    def on_message(self, event):
+        print("Received", event.message)
+        self.server.send(Message(address=event.message.reply_to, body=event.message.body.upper(),
+                            correlation_id=event.message.correlation_id))
+
+try:
+    Container(Server("0.0.0.0:5672", "examples")).run()
+except KeyboardInterrupt: pass
+
+
+

http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/input/releases/qpid-proton-0.13.0/proton/python/examples/server.py.html.in
----------------------------------------------------------------------
diff --git a/input/releases/qpid-proton-0.13.0/proton/python/examples/server.py.html.in b/input/releases/qpid-proton-0.13.0/proton/python/examples/server.py.html.in
new file mode 100644
index 0000000..dbb8edc
--- /dev/null
+++ b/input/releases/qpid-proton-0.13.0/proton/python/examples/server.py.html.in
@@ -0,0 +1,31 @@
+
+<h1>server.py</h1>
+<div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">__future__</span> <span class="kn">import</span> <span class="n">print_function</span>
+<span class="kn">from</span> <span class="nn">proton</span> <span class="kn">import</span> <span class="n">Message</span>
+<span class="kn">from</span> <span class="nn">proton.handlers</span> <span class="kn">import</span> <span class="n">MessagingHandler</span>
+<span class="kn">from</span> <span class="nn">proton.reactor</span> <span class="kn">import</span> <span class="n">Container</span>
+
+<span class="k">class</span> <span class="nc">Server</span><span class="p">(</span><span class="n">MessagingHandler</span><span class="p">):</span>
+    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">url</span><span class="p">,</span> <span class="n">address</span><span class="p">):</span>
+        <span class="nb">super</span><span class="p">(</span><span class="n">Server</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">__init__</span><span class="p">()</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">url</span> <span class="o">=</span> <span class="n">url</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">address</span> <span class="o">=</span> <span class="n">address</span>
+
+    <span class="k">def</span> <span class="nf">on_start</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="k">print</span><span class="p">(</span><span class="s2">&quot;Listening on&quot;</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">url</span><span class="p">)</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">container</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">container</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">conn</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">container</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">url</span><span class="p">)</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">receiver</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">container</span><span class="o">.</span><span class="n">create_receiver</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">conn</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">address</span><span class="p">)</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">server</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">container</span><span class="o">.</span><span class="n">create_sender</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">conn</span><span class="p">,</span> <span class="bp">None</span><span class="p">)</span>
+
+    <span class="k">def</span> <span class="nf">on_message</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="k">print</span><span class="p">(</span><span class="s2">&quot;Received&quot;</span><span class="p">,</span> <span class="n">event</span><span class="o">.</span><span class="n">message</span><span class="p">)</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">server</span><span class="o">.</span><span class="n">send</span><span class="p">(</span><span class="n">Message</span><span class="p">(</span><span class="n">address</span><span class="o">=</span><span class="n">event</span><span class="o">.</span><span class="n">message</span><span class="o">.</span><span class="n">reply_to</span><span class="p">,</span> <span class="n">body</span><span class="o">=</span><span class="n">event</span><span class="o">.</span><span class="n">message</span><span class="o">.</span><span class="n">body</span><span class="o">.</span><span class="n">upper</span><span class="p">(),</span>
+                            <span class="n">correlation_id</span><span class="o">=</span><span class="n">event</span><span class="o">.</span><span class="n">message</span><span class="o">.</span><span class="n">correlation_id</span><span class="p">))</span>
+
+<span class="k">try</span><span class="p">:</span>
+    <span class="n">Container</span><span class="p">(</span><span class="n">Server</span><span class="p">(</span><span class="s2">&quot;0.0.0.0:5672&quot;</span><span class="p">,</span> <span class="s2">&quot;examples&quot;</span><span class="p">))</span><span class="o">.</span><span class="n">run</span><span class="p">()</span>
+<span class="k">except</span> <span class="ne">KeyboardInterrupt</span><span class="p">:</span> <span class="k">pass</span>
+</pre></div>
+
+<p><a href="server.py">Download this file</a></p>

http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/input/releases/qpid-proton-0.13.0/proton/python/examples/server_direct.py
----------------------------------------------------------------------
diff --git a/input/releases/qpid-proton-0.13.0/proton/python/examples/server_direct.py b/input/releases/qpid-proton-0.13.0/proton/python/examples/server_direct.py
new file mode 100755
index 0000000..a9910f1
--- /dev/null
+++ b/input/releases/qpid-proton-0.13.0/proton/python/examples/server_direct.py
@@ -0,0 +1,64 @@
+#!/usr/bin/env python
+#
+# 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.
+#
+
+from __future__ import print_function
+from proton import generate_uuid, Message
+from proton.handlers import MessagingHandler
+from proton.reactor import Container
+
+class Server(MessagingHandler):
+    def __init__(self, url):
+        super(Server, self).__init__()
+        self.url = url
+        self.senders = {}
+
+    def on_start(self, event):
+        print("Listening on", self.url)
+        self.container = event.container
+        self.acceptor = event.container.listen(self.url)
+
+    def on_link_opening(self, event):
+        if event.link.is_sender:
+            if event.link.remote_source and event.link.remote_source.dynamic:
+                event.link.source.address = str(generate_uuid())
+                self.senders[event.link.source.address] = event.link
+            elif event.link.remote_target and event.link.remote_target.address:
+                event.link.target.address = event.link.remote_target.address
+                self.senders[event.link.remote_target.address] = event.link
+            elif event.link.remote_source:
+                event.link.source.address = event.link.remote_source.address
+        elif event.link.remote_target:
+            event.link.target.address = event.link.remote_target.address
+
+    def on_message(self, event):
+        print("Received", event.message)
+        sender = self.senders.get(event.message.reply_to)
+        if not sender:
+            print("No link for reply")
+            return
+        sender.send(Message(address=event.message.reply_to, body=event.message.body.upper(),
+                            correlation_id=event.message.correlation_id))
+
+try:
+    Container(Server("0.0.0.0:8888")).run()
+except KeyboardInterrupt: pass
+
+
+

http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/input/releases/qpid-proton-0.13.0/proton/python/examples/server_direct.py.html.in
----------------------------------------------------------------------
diff --git a/input/releases/qpid-proton-0.13.0/proton/python/examples/server_direct.py.html.in b/input/releases/qpid-proton-0.13.0/proton/python/examples/server_direct.py.html.in
new file mode 100644
index 0000000..b642d52
--- /dev/null
+++ b/input/releases/qpid-proton-0.13.0/proton/python/examples/server_direct.py.html.in
@@ -0,0 +1,46 @@
+
+<h1>server_direct.py</h1>
+<div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">__future__</span> <span class="kn">import</span> <span class="n">print_function</span>
+<span class="kn">from</span> <span class="nn">proton</span> <span class="kn">import</span> <span class="n">generate_uuid</span><span class="p">,</span> <span class="n">Message</span>
+<span class="kn">from</span> <span class="nn">proton.handlers</span> <span class="kn">import</span> <span class="n">MessagingHandler</span>
+<span class="kn">from</span> <span class="nn">proton.reactor</span> <span class="kn">import</span> <span class="n">Container</span>
+
+<span class="k">class</span> <span class="nc">Server</span><span class="p">(</span><span class="n">MessagingHandler</span><span class="p">):</span>
+    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">url</span><span class="p">):</span>
+        <span class="nb">super</span><span class="p">(</span><span class="n">Server</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">__init__</span><span class="p">()</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">url</span> <span class="o">=</span> <span class="n">url</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">senders</span> <span class="o">=</span> <span class="p">{}</span>
+
+    <span class="k">def</span> <span class="nf">on_start</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="k">print</span><span class="p">(</span><span class="s2">&quot;Listening on&quot;</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">url</span><span class="p">)</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">container</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">container</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">acceptor</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">container</span><span class="o">.</span><span class="n">listen</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">url</span><span class="p">)</span>
+
+    <span class="k">def</span> <span class="nf">on_link_opening</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="k">if</span> <span class="n">event</span><span class="o">.</span><span class="n">link</span><span class="o">.</span><span class="n">is_sender</span><span class="p">:</span>
+            <span class="k">if</span> <span class="n">event</span><span class="o">.</span><span class="n">link</span><span class="o">.</span><span class="n">remote_source</span> <span class="ow">and</span> <span class="n">event</span><span class="o">.</span><span class="n">link</span><span class="o">.</span><span class="n">remote_source</span><span class="o">.</span><span class="n">dynamic</span><span class="p">:</span>
+                <span class="n">event</span><span class="o">.</span><span class="n">link</span><span class="o">.</span><span class="n">source</span><span class="o">.</span><span class="n">address</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="n">generate_uuid</span><span class="p">())</span>
+                <span class="bp">self</span><span class="o">.</span><span class="n">senders</span><span class="p">[</span><span class="n">event</span><span class="o">.</span><span class="n">link</span><span class="o">.</span><span class="n">source</span><span class="o">.</span><span class="n">address</span><span class="p">]</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">link</span>
+            <span class="k">elif</span> <span class="n">event</span><span class="o">.</span><span class="n">link</span><span class="o">.</span><span class="n">remote_target</span> <span class="ow">and</span> <span class="n">event</span><span class="o">.</span><span class="n">link</span><span class="o">.</span><span class="n">remote_target</span><span class="o">.</span><span class="n">address</span><span class="p">:</span>
+                <span class="n">event</span><span class="o">.</span><span class="n">link</span><span class="o">.</span><span class="n">target</span><span class="o">.</span><span class="n">address</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">link</span><span class="o">.</span><span class="n">remote_target</span><span class="o">.</span><span class="n">address</span>
+                <span class="bp">self</span><span class="o">.</span><span class="n">senders</span><span class="p">[</span><span class="n">event</span><span class="o">.</span><span class="n">link</span><span class="o">.</span><span class="n">remote_target</span><span class="o">.</span><span class="n">address</span><span class="p">]</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">link</span>
+            <span class="k">elif</span> <span class="n">event</span><span class="o">.</span><span class="n">link</span><span class="o">.</span><span class="n">remote_source</span><span class="p">:</span>
+                <span class="n">event</span><span class="o">.</span><span class="n">link</span><span class="o">.</span><span class="n">source</span><span class="o">.</span><span class="n">address</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">link</span><span class="o">.</span><span class="n">remote_source</span><span class="o">.</span><span class="n">address</span>
+        <span class="k">elif</span> <span class="n">event</span><span class="o">.</span><span class="n">link</span><span class="o">.</span><span class="n">remote_target</span><span class="p">:</span>
+            <span class="n">event</span><span class="o">.</span><span class="n">link</span><span class="o">.</span><span class="n">target</span><span class="o">.</span><span class="n">address</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">link</span><span class="o">.</span><span class="n">remote_target</span><span class="o">.</span><span class="n">address</span>
+
+    <span class="k">def</span> <span class="nf">on_message</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="k">print</span><span class="p">(</span><span class="s2">&quot;Received&quot;</span><span class="p">,</span> <span class="n">event</span><span class="o">.</span><span class="n">message</span><span class="p">)</span>
+        <span class="n">sender</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">senders</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">event</span><span class="o">.</span><span class="n">message</span><span class="o">.</span><span class="n">reply_to</span><span class="p">)</span>
+        <span class="k">if</span> <span class="ow">not</span> <span class="n">sender</span><span class="p">:</span>
+            <span class="k">print</span><span class="p">(</span><span class="s2">&quot;No link for reply&quot;</span><span class="p">)</span>
+            <span class="k">return</span>
+        <span class="n">sender</span><span class="o">.</span><span class="n">send</span><span class="p">(</span><span class="n">Message</span><span class="p">(</span><span class="n">address</span><span class="o">=</span><span class="n">event</span><span class="o">.</span><span class="n">message</span><span class="o">.</span><span class="n">reply_to</span><span class="p">,</span> <span class="n">body</span><span class="o">=</span><span class="n">event</span><span class="o">.</span><span class="n">message</span><span class="o">.</span><span class="n">body</span><span class="o">.</span><span class="n">upper</span><span class="p">(),</span>
+                            <span class="n">correlation_id</span><span class="o">=</span><span class="n">event</span><span class="o">.</span><span class="n">message</span><span class="o">.</span><span class="n">correlation_id</span><span class="p">))</span>
+
+<span class="k">try</span><span class="p">:</span>
+    <span class="n">Container</span><span class="p">(</span><span class="n">Server</span><span class="p">(</span><span class="s2">&quot;0.0.0.0:8888&quot;</span><span class="p">))</span><span class="o">.</span><span class="n">run</span><span class="p">()</span>
+<span class="k">except</span> <span class="ne">KeyboardInterrupt</span><span class="p">:</span> <span class="k">pass</span>
+</pre></div>
+
+<p><a href="server_direct.py">Download this file</a></p>

http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/input/releases/qpid-proton-0.13.0/proton/python/examples/server_tx.py
----------------------------------------------------------------------
diff --git a/input/releases/qpid-proton-0.13.0/proton/python/examples/server_tx.py b/input/releases/qpid-proton-0.13.0/proton/python/examples/server_tx.py
new file mode 100755
index 0000000..51e734c
--- /dev/null
+++ b/input/releases/qpid-proton-0.13.0/proton/python/examples/server_tx.py
@@ -0,0 +1,79 @@
+#!/usr/bin/env python
+#
+# 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.
+#
+
+from __future__ import print_function
+from proton import Message
+from proton.reactor import Container
+from proton.handlers import MessagingHandler, TransactionHandler
+
+class TxRequest(TransactionHandler):
+    def __init__(self, response, sender, request_delivery):
+        super(TxRequest, self).__init__()
+        self.response = response
+        self.sender = sender
+        self.request_delivery = request_delivery
+
+    def on_transaction_declared(self, event):
+        event.transaction.send(self.sender, self.response)
+        event.transaction.accept(self.request_delivery)
+        event.transaction.commit()
+
+    def on_transaction_committed(self, event):
+        print("Request processed successfully")
+
+    def on_transaction_aborted(self, event):
+        print("Request processing aborted")
+
+
+class TxServer(MessagingHandler):
+    def __init__(self, host, address):
+        super(TxServer, self).__init__(auto_accept=False)
+        self.host = host
+        self.address = address
+
+    def on_start(self, event):
+        self.container = event.container
+        self.conn = event.container.connect(self.host, reconnect=False)
+        self.receiver = event.container.create_receiver(self.conn, self.address)
+        self.senders = {}
+        self.relay = None
+
+    def on_message(self, event):
+        sender = self.relay
+        if not sender:
+            sender = self.senders.get(event.message.reply_to)
+        if not sender:
+            sender = self.container.create_sender(self.conn, event.message.reply_to)
+            self.senders[event.message.reply_to] = sender
+
+        response = Message(address=event.message.reply_to, body=event.message.body.upper(),
+                           correlation_id=event.message.correlation_id)
+        self.container.declare_transaction(self.conn, handler=TxRequest(response, sender, event.delivery))
+
+    def on_connection_open(self, event):
+        if event.connection.remote_offered_capabilities and 'ANONYMOUS-RELAY' in event.connection.remote_offered_capabilities:
+            self.relay = self.container.create_sender(self.conn, None)
+
+try:
+    Container(TxServer("localhost:5672", "examples")).run()
+except KeyboardInterrupt: pass
+
+
+

http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/input/releases/qpid-proton-0.13.0/proton/python/examples/server_tx.py.html.in
----------------------------------------------------------------------
diff --git a/input/releases/qpid-proton-0.13.0/proton/python/examples/server_tx.py.html.in b/input/releases/qpid-proton-0.13.0/proton/python/examples/server_tx.py.html.in
new file mode 100644
index 0000000..5434190
--- /dev/null
+++ b/input/releases/qpid-proton-0.13.0/proton/python/examples/server_tx.py.html.in
@@ -0,0 +1,61 @@
+
+<h1>server_tx.py</h1>
+<div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">__future__</span> <span class="kn">import</span> <span class="n">print_function</span>
+<span class="kn">from</span> <span class="nn">proton</span> <span class="kn">import</span> <span class="n">Message</span>
+<span class="kn">from</span> <span class="nn">proton.reactor</span> <span class="kn">import</span> <span class="n">Container</span>
+<span class="kn">from</span> <span class="nn">proton.handlers</span> <span class="kn">import</span> <span class="n">MessagingHandler</span><span class="p">,</span> <span class="n">TransactionHandler</span>
+
+<span class="k">class</span> <span class="nc">TxRequest</span><span class="p">(</span><span class="n">TransactionHandler</span><span class="p">):</span>
+    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">response</span><span class="p">,</span> <span class="n">sender</span><span class="p">,</span> <span class="n">request_delivery</span><span class="p">):</span>
+        <span class="nb">super</span><span class="p">(</span><span class="n">TxRequest</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">__init__</span><span class="p">()</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">response</span> <span class="o">=</span> <span class="n">response</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">sender</span> <span class="o">=</span> <span class="n">sender</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">request_delivery</span> <span class="o">=</span> <span class="n">request_delivery</span>
+
+    <span class="k">def</span> <span class="nf">on_transaction_declared</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="n">event</span><span class="o">.</span><span class="n">transaction</span><span class="o">.</span><span class="n">send</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">sender</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">response</span><span class="p">)</span>
+        <span class="n">event</span><span class="o">.</span><span class="n">transaction</span><span class="o">.</span><span class="n">accept</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">request_delivery</span><span class="p">)</span>
+        <span class="n">event</span><span class="o">.</span><span class="n">transaction</span><span class="o">.</span><span class="n">commit</span><span class="p">()</span>
+
+    <span class="k">def</span> <span class="nf">on_transaction_committed</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="k">print</span><span class="p">(</span><span class="s2">&quot;Request processed successfully&quot;</span><span class="p">)</span>
+
+    <span class="k">def</span> <span class="nf">on_transaction_aborted</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="k">print</span><span class="p">(</span><span class="s2">&quot;Request processing aborted&quot;</span><span class="p">)</span>
+
+
+<span class="k">class</span> <span class="nc">TxServer</span><span class="p">(</span><span class="n">MessagingHandler</span><span class="p">):</span>
+    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">host</span><span class="p">,</span> <span class="n">address</span><span class="p">):</span>
+        <span class="nb">super</span><span class="p">(</span><span class="n">TxServer</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">__init__</span><span class="p">(</span><span class="n">auto_accept</span><span class="o">=</span><span class="bp">False</span><span class="p">)</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">host</span> <span class="o">=</span> <span class="n">host</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">address</span> <span class="o">=</span> <span class="n">address</span>
+
+    <span class="k">def</span> <span class="nf">on_start</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">container</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">container</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">conn</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">container</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">host</span><span class="p">,</span> <span class="n">reconnect</span><span class="o">=</span><span class="bp">False</span><span class="p">)</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">receiver</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">container</span><span class="o">.</span><span class="n">create_receiver</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">conn</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">address</span><span class="p">)</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">senders</span> <span class="o">=</span> <span class="p">{}</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">relay</span> <span class="o">=</span> <span class="bp">None</span>
+
+    <span class="k">def</span> <span class="nf">on_message</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="n">sender</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">relay</span>
+        <span class="k">if</span> <span class="ow">not</span> <span class="n">sender</span><span class="p">:</span>
+            <span class="n">sender</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">senders</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">event</span><span class="o">.</span><span class="n">message</span><span class="o">.</span><span class="n">reply_to</span><span class="p">)</span>
+        <span class="k">if</span> <span class="ow">not</span> <span class="n">sender</span><span class="p">:</span>
+            <span class="n">sender</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">container</span><span class="o">.</span><span class="n">create_sender</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">conn</span><span class="p">,</span> <span class="n">event</span><span class="o">.</span><span class="n">message</span><span class="o">.</span><span class="n">reply_to</span><span class="p">)</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">senders</span><span class="p">[</span><span class="n">event</span><span class="o">.</span><span class="n">message</span><span class="o">.</span><span class="n">reply_to</span><span class="p">]</span> <span class="o">=</span> <span class="n">sender</span>
+
+        <span class="n">response</span> <span class="o">=</span> <span class="n">Message</span><span class="p">(</span><span class="n">address</span><span class="o">=</span><span class="n">event</span><span class="o">.</span><span class="n">message</span><span class="o">.</span><span class="n">reply_to</span><span class="p">,</span> <span class="n">body</span><span class="o">=</span><span class="n">event</span><span class="o">.</span><span class="n">message</span><span class="o">.</span><span class="n">body</span><span class="o">.</span><span class="n">upper</span><span class="p">(),</span>
+                           <span class="n">correlation_id</span><span class="o">=</span><span class="n">event</span><span class="o">.</span><span class="n">message</span><span class="o">.</span><span class="n">correlation_id</span><span class="p">)</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">container</span><span class="o">.</span><span class="n">declare_transaction</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">conn</span><span class="p">,</span> <span class="n">handler</span><span class="o">=</span><span class="n">TxRequest</span><span class="p">(</span><span class="n">response</span><span class="p">,</span> <span class="n">sender</span><span class="p">,</span> <span class="n">event</span><span class="o">.</span><span class="n">delivery</span><span class="p">))</span>
+
+    <span class="k">def</span> <span class="nf">on_connection_open</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="k">if</span> <span class="n">event</span><span class="o">.</span><span class="n">connection</span><span class="o">.</span><span class="n">remote_offered_capabilities</span> <span class="ow">and</span> <span class="s1">&#39;ANONYMOUS-RELAY&#39;</span> <span class="ow">in</span> <span class="n">event</span><span class="o">.</span><span class="n">connection</span><span class="o">.</span><span class="n">remote_offered_capabilities</span><span class="p">:</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">relay</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">container</span><span class="o">.</span><span class="n">create_sender</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">conn</span><span class="p">,</span> <span class="bp">None</span><span class="p">)</span>
+
+<span class="k">try</span><span class="p">:</span>
+    <span class="n">Container</span><span class="p">(</span><span class="n">TxServer</span><span class="p">(</span><span class="s2">&quot;localhost:5672&quot;</span><span class="p">,</span> <span class="s2">&quot;examples&quot;</span><span class="p">))</span><span class="o">.</span><span class="n">run</span><span class="p">()</span>
+<span class="k">except</span> <span class="ne">KeyboardInterrupt</span><span class="p">:</span> <span class="k">pass</span>
+</pre></div>
+
+<p><a href="server_tx.py">Download this file</a></p>

http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/input/releases/qpid-proton-0.13.0/proton/python/examples/simple_recv.py
----------------------------------------------------------------------
diff --git a/input/releases/qpid-proton-0.13.0/proton/python/examples/simple_recv.py b/input/releases/qpid-proton-0.13.0/proton/python/examples/simple_recv.py
new file mode 100755
index 0000000..5322500
--- /dev/null
+++ b/input/releases/qpid-proton-0.13.0/proton/python/examples/simple_recv.py
@@ -0,0 +1,59 @@
+#!/usr/bin/env python
+#
+# 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.
+#
+
+from __future__ import print_function
+import optparse
+from proton.handlers import MessagingHandler
+from proton.reactor import Container
+
+class Recv(MessagingHandler):
+    def __init__(self, url, count):
+        super(Recv, self).__init__()
+        self.url = url
+        self.expected = count
+        self.received = 0
+
+    def on_start(self, event):
+        event.container.create_receiver(self.url)
+
+    def on_message(self, event):
+        if event.message.id and event.message.id < self.received:
+            # ignore duplicate message
+            return
+        if self.expected == 0 or self.received < self.expected:
+            print(event.message.body)
+            self.received += 1
+            if self.received == self.expected:
+                event.receiver.close()
+                event.connection.close()
+
+parser = optparse.OptionParser(usage="usage: %prog [options]")
+parser.add_option("-a", "--address", default="localhost:5672/examples",
+                  help="address from which messages are received (default %default)")
+parser.add_option("-m", "--messages", type="int", default=100,
+                  help="number of messages to receive; 0 receives indefinitely (default %default)")
+opts, args = parser.parse_args()
+
+try:
+    Container(Recv(opts.address, opts.messages)).run()
+except KeyboardInterrupt: pass
+
+
+

http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/input/releases/qpid-proton-0.13.0/proton/python/examples/simple_recv.py.html.in
----------------------------------------------------------------------
diff --git a/input/releases/qpid-proton-0.13.0/proton/python/examples/simple_recv.py.html.in b/input/releases/qpid-proton-0.13.0/proton/python/examples/simple_recv.py.html.in
new file mode 100644
index 0000000..9e6316b
--- /dev/null
+++ b/input/releases/qpid-proton-0.13.0/proton/python/examples/simple_recv.py.html.in
@@ -0,0 +1,41 @@
+
+<h1>simple_recv.py</h1>
+<div class="highlight"><pre><span></span><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">optparse</span>
+<span class="kn">from</span> <span class="nn">proton.handlers</span> <span class="kn">import</span> <span class="n">MessagingHandler</span>
+<span class="kn">from</span> <span class="nn">proton.reactor</span> <span class="kn">import</span> <span class="n">Container</span>
+
+<span class="k">class</span> <span class="nc">Recv</span><span class="p">(</span><span class="n">MessagingHandler</span><span class="p">):</span>
+    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">url</span><span class="p">,</span> <span class="n">count</span><span class="p">):</span>
+        <span class="nb">super</span><span class="p">(</span><span class="n">Recv</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">__init__</span><span class="p">()</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">url</span> <span class="o">=</span> <span class="n">url</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">expected</span> <span class="o">=</span> <span class="n">count</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">received</span> <span class="o">=</span> <span class="mi">0</span>
+
+    <span class="k">def</span> <span class="nf">on_start</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="n">event</span><span class="o">.</span><span class="n">container</span><span class="o">.</span><span class="n">create_receiver</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">url</span><span class="p">)</span>
+
+    <span class="k">def</span> <span class="nf">on_message</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="k">if</span> <span class="n">event</span><span class="o">.</span><span class="n">message</span><span class="o">.</span><span class="n">id</span> <span class="ow">and</span> <span class="n">event</span><span class="o">.</span><span class="n">message</span><span class="o">.</span><span class="n">id</span> <span class="o">&lt;</span> <span class="bp">self</span><span class="o">.</span><span class="n">received</span><span class="p">:</span>
+            <span class="c1"># ignore duplicate message</span>
+            <span class="k">return</span>
+        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">expected</span> <span class="o">==</span> <span class="mi">0</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">received</span> <span class="o">&lt;</span> <span class="bp">self</span><span class="o">.</span><span class="n">expected</span><span class="p">:</span>
+            <span class="k">print</span><span class="p">(</span><span class="n">event</span><span class="o">.</span><span class="n">message</span><span class="o">.</span><span class="n">body</span><span class="p">)</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">received</span> <span class="o">+=</span> <span class="mi">1</span>
+            <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">received</span> <span class="o">==</span> <span class="bp">self</span><span class="o">.</span><span class="n">expected</span><span class="p">:</span>
+                <span class="n">event</span><span class="o">.</span><span class="n">receiver</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
+                <span class="n">event</span><span class="o">.</span><span class="n">connection</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
+
+<span class="n">parser</span> <span class="o">=</span> <span class="n">optparse</span><span class="o">.</span><span class="n">OptionParser</span><span class="p">(</span><span class="n">usage</span><span class="o">=</span><span class="s2">&quot;usage: %prog [options]&quot;</span><span class="p">)</span>
+<span class="n">parser</span><span class="o">.</span><span class="n">add_option</span><span class="p">(</span><span class="s2">&quot;-a&quot;</span><span class="p">,</span> <span class="s2">&quot;--address&quot;</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="s2">&quot;localhost:5672/examples&quot;</span><span class="p">,</span>
+                  <span class="n">help</span><span class="o">=</span><span class="s2">&quot;address from which messages are received (default </span><span class="si">%d</span><span class="s2">efault)&quot;</span><span class="p">)</span>
+<span class="n">parser</span><span class="o">.</span><span class="n">add_option</span><span class="p">(</span><span class="s2">&quot;-m&quot;</span><span class="p">,</span> <span class="s2">&quot;--messages&quot;</span><span class="p">,</span> <span class="nb">type</span><span class="o">=</span><span class="s2">&quot;int&quot;</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="mi">100</span><span class="p">,</span>
+                  <span class="n">help</span><span class="o">=</span><span class="s2">&quot;number of messages to receive; 0 receives indefinitely (default </span><span class="si">%d</span><span class="s2">efault)&quot;</span><span class="p">)</span>
+<span class="n">opts</span><span class="p">,</span> <span class="n">args</span> <span class="o">=</span> <span class="n">parser</span><span class="o">.</span><span class="n">parse_args</span><span class="p">()</span>
+
+<span class="k">try</span><span class="p">:</span>
+    <span class="n">Container</span><span class="p">(</span><span class="n">Recv</span><span class="p">(</span><span class="n">opts</span><span class="o">.</span><span class="n">address</span><span class="p">,</span> <span class="n">opts</span><span class="o">.</span><span class="n">messages</span><span class="p">))</span><span class="o">.</span><span class="n">run</span><span class="p">()</span>
+<span class="k">except</span> <span class="ne">KeyboardInterrupt</span><span class="p">:</span> <span class="k">pass</span>
+</pre></div>
+
+<p><a href="simple_recv.py">Download this file</a></p>

http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/input/releases/qpid-proton-0.13.0/proton/python/examples/simple_send.py
----------------------------------------------------------------------
diff --git a/input/releases/qpid-proton-0.13.0/proton/python/examples/simple_send.py b/input/releases/qpid-proton-0.13.0/proton/python/examples/simple_send.py
new file mode 100755
index 0000000..7717a16
--- /dev/null
+++ b/input/releases/qpid-proton-0.13.0/proton/python/examples/simple_send.py
@@ -0,0 +1,63 @@
+#!/usr/bin/env python
+#
+# 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.
+#
+
+from __future__ import print_function, unicode_literals
+import optparse
+from proton import Message
+from proton.handlers import MessagingHandler
+from proton.reactor import Container
+
+class Send(MessagingHandler):
+    def __init__(self, url, messages):
+        super(Send, self).__init__()
+        self.url = url
+        self.sent = 0
+        self.confirmed = 0
+        self.total = messages
+
+    def on_start(self, event):
+        event.container.create_sender(self.url)
+
+    def on_sendable(self, event):
+        while event.sender.credit and self.sent < self.total:
+            msg = Message(id=(self.sent+1), body={'sequence':(self.sent+1)})
+            event.sender.send(msg)
+            self.sent += 1
+
+    def on_accepted(self, event):
+        self.confirmed += 1
+        if self.confirmed == self.total:
+            print("all messages confirmed")
+            event.connection.close()
+
+    def on_disconnected(self, event):
+        self.sent = self.confirmed
+
+parser = optparse.OptionParser(usage="usage: %prog [options]",
+                               description="Send messages to the supplied address.")
+parser.add_option("-a", "--address", default="localhost:5672/examples",
+                  help="address to which messages are sent (default %default)")
+parser.add_option("-m", "--messages", type="int", default=100,
+                  help="number of messages to send (default %default)")
+opts, args = parser.parse_args()
+
+try:
+    Container(Send(opts.address, opts.messages)).run()
+except KeyboardInterrupt: pass

http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/input/releases/qpid-proton-0.13.0/proton/python/examples/simple_send.py.html.in
----------------------------------------------------------------------
diff --git a/input/releases/qpid-proton-0.13.0/proton/python/examples/simple_send.py.html.in b/input/releases/qpid-proton-0.13.0/proton/python/examples/simple_send.py.html.in
new file mode 100644
index 0000000..aa03913
--- /dev/null
+++ b/input/releases/qpid-proton-0.13.0/proton/python/examples/simple_send.py.html.in
@@ -0,0 +1,48 @@
+
+<h1>simple_send.py</h1>
+<div class="highlight"><pre><span></span><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>
+<span class="kn">from</span> <span class="nn">proton</span> <span class="kn">import</span> <span class="n">Message</span>
+<span class="kn">from</span> <span class="nn">proton.handlers</span> <span class="kn">import</span> <span class="n">MessagingHandler</span>
+<span class="kn">from</span> <span class="nn">proton.reactor</span> <span class="kn">import</span> <span class="n">Container</span>
+
+<span class="k">class</span> <span class="nc">Send</span><span class="p">(</span><span class="n">MessagingHandler</span><span class="p">):</span>
+    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">url</span><span class="p">,</span> <span class="n">messages</span><span class="p">):</span>
+        <span class="nb">super</span><span class="p">(</span><span class="n">Send</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">__init__</span><span class="p">()</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">url</span> <span class="o">=</span> <span class="n">url</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">sent</span> <span class="o">=</span> <span class="mi">0</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">confirmed</span> <span class="o">=</span> <span class="mi">0</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">total</span> <span class="o">=</span> <span class="n">messages</span>
+
+    <span class="k">def</span> <span class="nf">on_start</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="n">event</span><span class="o">.</span><span class="n">container</span><span class="o">.</span><span class="n">create_sender</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">url</span><span class="p">)</span>
+
+    <span class="k">def</span> <span class="nf">on_sendable</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="k">while</span> <span class="n">event</span><span class="o">.</span><span class="n">sender</span><span class="o">.</span><span class="n">credit</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">sent</span> <span class="o">&lt;</span> <span class="bp">self</span><span class="o">.</span><span class="n">total</span><span class="p">:</span>
+            <span class="n">msg</span> <span class="o">=</span> <span class="n">Message</span><span class="p">(</span><span class="nb">id</span><span class="o">=</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">sent</span><span class="o">+</span><span class="mi">1</span><span class="p">),</span> <span class="n">body</span><span class="o">=</span><span class="p">{</span><span class="s1">&#39;sequence&#39;</span><span class="p">:(</span><span class="bp">self</span><span class="o">.</span><span class="n">sent</span><span class="o">+</span><span class="mi">1</span><span class="p">)})</span>
+            <span class="n">event</span><span class="o">.</span><span class="n">sender</span><span class="o">.</span><span class="n">send</span><span class="p">(</span><span class="n">msg</span><span class="p">)</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">sent</span> <span class="o">+=</span> <span class="mi">1</span>
+
+    <span class="k">def</span> <span class="nf">on_accepted</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">confirmed</span> <span class="o">+=</span> <span class="mi">1</span>
+        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">confirmed</span> <span class="o">==</span> <span class="bp">self</span><span class="o">.</span><span class="n">total</span><span class="p">:</span>
+            <span class="k">print</span><span class="p">(</span><span class="s2">&quot;all messages confirmed&quot;</span><span class="p">)</span>
+            <span class="n">event</span><span class="o">.</span><span class="n">connection</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
+
+    <span class="k">def</span> <span class="nf">on_disconnected</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">sent</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">confirmed</span>
+
+<span class="n">parser</span> <span class="o">=</span> <span class="n">optparse</span><span class="o">.</span><span class="n">OptionParser</span><span class="p">(</span><span class="n">usage</span><span class="o">=</span><span class="s2">&quot;usage: %prog [options]&quot;</span><span class="p">,</span>
+                               <span class="n">description</span><span class="o">=</span><span class="s2">&quot;Send messages to the supplied address.&quot;</span><span class="p">)</span>
+<span class="n">parser</span><span class="o">.</span><span class="n">add_option</span><span class="p">(</span><span class="s2">&quot;-a&quot;</span><span class="p">,</span> <span class="s2">&quot;--address&quot;</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="s2">&quot;localhost:5672/examples&quot;</span><span class="p">,</span>
+                  <span class="n">help</span><span class="o">=</span><span class="s2">&quot;address to which messages are sent (default </span><span class="si">%d</span><span class="s2">efault)&quot;</span><span class="p">)</span>
+<span class="n">parser</span><span class="o">.</span><span class="n">add_option</span><span class="p">(</span><span class="s2">&quot;-m&quot;</span><span class="p">,</span> <span class="s2">&quot;--messages&quot;</span><span class="p">,</span> <span class="nb">type</span><span class="o">=</span><span class="s2">&quot;int&quot;</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="mi">100</span><span class="p">,</span>
+                  <span class="n">help</span><span class="o">=</span><span class="s2">&quot;number of messages to send (default </span><span class="si">%d</span><span class="s2">efault)&quot;</span><span class="p">)</span>
+<span class="n">opts</span><span class="p">,</span> <span class="n">args</span> <span class="o">=</span> <span class="n">parser</span><span class="o">.</span><span class="n">parse_args</span><span class="p">()</span>
+
+<span class="k">try</span><span class="p">:</span>
+    <span class="n">Container</span><span class="p">(</span><span class="n">Send</span><span class="p">(</span><span class="n">opts</span><span class="o">.</span><span class="n">address</span><span class="p">,</span> <span class="n">opts</span><span class="o">.</span><span class="n">messages</span><span class="p">))</span><span class="o">.</span><span class="n">run</span><span class="p">()</span>
+<span class="k">except</span> <span class="ne">KeyboardInterrupt</span><span class="p">:</span> <span class="k">pass</span>
+</pre></div>
+
+<p><a href="simple_send.py">Download this file</a></p>

http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/input/releases/qpid-proton-0.13.0/proton/python/examples/sync_client.py
----------------------------------------------------------------------
diff --git a/input/releases/qpid-proton-0.13.0/proton/python/examples/sync_client.py b/input/releases/qpid-proton-0.13.0/proton/python/examples/sync_client.py
new file mode 100755
index 0000000..95a5650
--- /dev/null
+++ b/input/releases/qpid-proton-0.13.0/proton/python/examples/sync_client.py
@@ -0,0 +1,55 @@
+#!/usr/bin/env python
+#
+# 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.
+#
+
+"""
+Demonstrates the client side of the synchronous request-response pattern
+(also known as RPC or Remote Procecure Call) using proton.
+
+"""
+from __future__ import print_function
+
+import optparse
+from proton import Message, Url, ConnectionException, Timeout
+from proton.utils import SyncRequestResponse, BlockingConnection
+from proton.handlers import IncomingMessageHandler
+import sys
+
+parser = optparse.OptionParser(usage="usage: %prog [options]",
+                               description="Send requests to the supplied address and print responses.")
+parser.add_option("-a", "--address", default="localhost:5672/examples",
+                  help="address to which messages are sent (default %default)")
+parser.add_option("-t", "--timeout", type="float", default=5,
+                  help="Give up after this time out (default %default)")
+opts, args = parser.parse_args()
+
+url = Url(opts.address)
+client = SyncRequestResponse(BlockingConnection(url, timeout=opts.timeout), url.path)
+
+try:
+    REQUESTS= ["Twas brillig, and the slithy toves",
+               "Did gire and gymble in the wabe.",
+               "All mimsy were the borogroves,",
+               "And the mome raths outgrabe."]
+    for request in REQUESTS:
+        response = client.call(Message(body=request))
+        print("%s => %s" % (request, response.body))
+finally:
+    client.connection.close()
+

http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/input/releases/qpid-proton-0.13.0/proton/python/examples/sync_client.py.html.in
----------------------------------------------------------------------
diff --git a/input/releases/qpid-proton-0.13.0/proton/python/examples/sync_client.py.html.in b/input/releases/qpid-proton-0.13.0/proton/python/examples/sync_client.py.html.in
new file mode 100644
index 0000000..c2f1637
--- /dev/null
+++ b/input/releases/qpid-proton-0.13.0/proton/python/examples/sync_client.py.html.in
@@ -0,0 +1,39 @@
+
+<h1>sync_client.py</h1>
+<div class="highlight"><pre><span></span><span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">Demonstrates the client side of the synchronous request-response pattern</span>
+<span class="sd">(also known as RPC or Remote Procecure Call) using proton.</span>
+
+<span class="sd">&quot;&quot;&quot;</span>
+<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">optparse</span>
+<span class="kn">from</span> <span class="nn">proton</span> <span class="kn">import</span> <span class="n">Message</span><span class="p">,</span> <span class="n">Url</span><span class="p">,</span> <span class="n">ConnectionException</span><span class="p">,</span> <span class="n">Timeout</span>
+<span class="kn">from</span> <span class="nn">proton.utils</span> <span class="kn">import</span> <span class="n">SyncRequestResponse</span><span class="p">,</span> <span class="n">BlockingConnection</span>
+<span class="kn">from</span> <span class="nn">proton.handlers</span> <span class="kn">import</span> <span class="n">IncomingMessageHandler</span>
+<span class="kn">import</span> <span class="nn">sys</span>
+
+<span class="n">parser</span> <span class="o">=</span> <span class="n">optparse</span><span class="o">.</span><span class="n">OptionParser</span><span class="p">(</span><span class="n">usage</span><span class="o">=</span><span class="s2">&quot;usage: %prog [options]&quot;</span><span class="p">,</span>
+                               <span class="n">description</span><span class="o">=</span><span class="s2">&quot;Send requests to the supplied address and print responses.&quot;</span><span class="p">)</span>
+<span class="n">parser</span><span class="o">.</span><span class="n">add_option</span><span class="p">(</span><span class="s2">&quot;-a&quot;</span><span class="p">,</span> <span class="s2">&quot;--address&quot;</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="s2">&quot;localhost:5672/examples&quot;</span><span class="p">,</span>
+                  <span class="n">help</span><span class="o">=</span><span class="s2">&quot;address to which messages are sent (default </span><span class="si">%d</span><span class="s2">efault)&quot;</span><span class="p">)</span>
+<span class="n">parser</span><span class="o">.</span><span class="n">add_option</span><span class="p">(</span><span class="s2">&quot;-t&quot;</span><span class="p">,</span> <span class="s2">&quot;--timeout&quot;</span><span class="p">,</span> <span class="nb">type</span><span class="o">=</span><span class="s2">&quot;float&quot;</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="mi">5</span><span class="p">,</span>
+                  <span class="n">help</span><span class="o">=</span><span class="s2">&quot;Give up after this time out (default </span><span class="si">%d</span><span class="s2">efault)&quot;</span><span class="p">)</span>
+<span class="n">opts</span><span class="p">,</span> <span class="n">args</span> <span class="o">=</span> <span class="n">parser</span><span class="o">.</span><span class="n">parse_args</span><span class="p">()</span>
+
+<span class="n">url</span> <span class="o">=</span> <span class="n">Url</span><span class="p">(</span><span class="n">opts</span><span class="o">.</span><span class="n">address</span><span class="p">)</span>
+<span class="n">client</span> <span class="o">=</span> <span class="n">SyncRequestResponse</span><span class="p">(</span><span class="n">BlockingConnection</span><span class="p">(</span><span class="n">url</span><span class="p">,</span> <span class="n">timeout</span><span class="o">=</span><span class="n">opts</span><span class="o">.</span><span class="n">timeout</span><span class="p">),</span> <span class="n">url</span><span class="o">.</span><span class="n">path</span><span class="p">)</span>
+
+<span class="k">try</span><span class="p">:</span>
+    <span class="n">REQUESTS</span><span class="o">=</span> <span class="p">[</span><span class="s2">&quot;Twas brillig, and the slithy toves&quot;</span><span class="p">,</span>
+               <span class="s2">&quot;Did gire and gymble in the wabe.&quot;</span><span class="p">,</span>
+               <span class="s2">&quot;All mimsy were the borogroves,&quot;</span><span class="p">,</span>
+               <span class="s2">&quot;And the mome raths outgrabe.&quot;</span><span class="p">]</span>
+    <span class="k">for</span> <span class="n">request</span> <span class="ow">in</span> <span class="n">REQUESTS</span><span class="p">:</span>
+        <span class="n">response</span> <span class="o">=</span> <span class="n">client</span><span class="o">.</span><span class="n">call</span><span class="p">(</span><span class="n">Message</span><span class="p">(</span><span class="n">body</span><span class="o">=</span><span class="n">request</span><span class="p">))</span>
+        <span class="k">print</span><span class="p">(</span><span class="s2">&quot;</span><span class="si">%s</span><span class="s2"> =&gt; </span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="n">response</span><span class="o">.</span><span class="n">body</span><span class="p">))</span>
+<span class="k">finally</span><span class="p">:</span>
+    <span class="n">client</span><span class="o">.</span><span class="n">connection</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
+</pre></div>
+
+<p><a href="sync_client.py">Download this file</a></p>

http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/input/releases/qpid-proton-0.13.0/proton/python/examples/test_examples.py
----------------------------------------------------------------------
diff --git a/input/releases/qpid-proton-0.13.0/proton/python/examples/test_examples.py b/input/releases/qpid-proton-0.13.0/proton/python/examples/test_examples.py
new file mode 100644
index 0000000..3d97b97
--- /dev/null
+++ b/input/releases/qpid-proton-0.13.0/proton/python/examples/test_examples.py
@@ -0,0 +1,151 @@
+#
+# 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.
+#
+
+import sys
+import subprocess
+import time
+import unittest
+
+if sys.version_info[0] == 2:
+    _unicode_prefix = 'u'
+else:
+    _unicode_prefix = ''
+
+
+class ExamplesTest(unittest.TestCase):
+    def test_helloworld(self, example="helloworld.py"):
+        p = subprocess.Popen([example], stderr=subprocess.STDOUT, stdout=subprocess.PIPE,
+                             universal_newlines=True)
+        p.wait()
+        output = [l.strip() for l in p.stdout]
+        self.assertEqual(output, ['Hello World!'])
+
+    def test_helloworld_direct(self):
+        self.test_helloworld('helloworld_direct.py')
+
+    def test_helloworld_blocking(self):
+        self.test_helloworld('helloworld_blocking.py')
+
+    def test_helloworld_tornado(self):
+        self.test_helloworld('helloworld_tornado.py')
+
+    def test_helloworld_direct_tornado(self):
+        self.test_helloworld('helloworld_direct_tornado.py')
+
+    def test_simple_send_recv(self, recv='simple_recv.py', send='simple_send.py'):
+        r = subprocess.Popen([recv], stderr=subprocess.STDOUT, stdout=subprocess.PIPE,
+                             universal_newlines=True)
+        s = subprocess.Popen([send], stderr=subprocess.STDOUT, stdout=subprocess.PIPE,
+                             universal_newlines=True)
+        s.wait()
+        r.wait()
+        actual = [l.strip() for l in r.stdout]
+        expected = ["{%s'sequence': %i}" % (_unicode_prefix, (i+1)) for i in range(100)]
+        self.assertEqual(actual, expected)
+
+    def test_client_server(self, client=['client.py'], server=['server.py'], sleep=0):
+        s = subprocess.Popen(server, stderr=subprocess.STDOUT, stdout=subprocess.PIPE,
+                             universal_newlines=True)
+        if sleep:
+            time.sleep(sleep)
+        c = subprocess.Popen(client, stderr=subprocess.STDOUT, stdout=subprocess.PIPE,
+                             universal_newlines=True)
+        c.wait()
+        s.terminate()
+        actual = [l.strip() for l in c.stdout]
+        inputs = ["Twas brillig, and the slithy toves",
+                    "Did gire and gymble in the wabe.",
+                    "All mimsy were the borogroves,",
+                    "And the mome raths outgrabe."]
+        expected = ["%s => %s" % (l, l.upper()) for l in inputs]
+        self.assertEqual(actual, expected)
+
+    def test_sync_client_server(self):
+        self.test_client_server(client=['sync_client.py'])
+
+    def test_client_server_tx(self):
+        self.test_client_server(server=['server_tx.py'])
+
+    def test_sync_client_server_tx(self):
+        self.test_client_server(client=['sync_client.py'], server=['server_tx.py'])
+
+    def test_client_server_direct(self):
+        self.test_client_server(client=['client.py', '-a', 'localhost:8888/examples'], server=['server_direct.py'], sleep=0.5)
+
+    def test_sync_client_server_direct(self):
+        self.test_client_server(client=['sync_client.py', '-a', 'localhost:8888/examples'], server=['server_direct.py'], sleep=0.5)
+
+    def test_db_send_recv(self):
+        self.maxDiff = None
+        # setup databases
+        subprocess.check_call(['db_ctrl.py', 'init', './src_db'])
+        subprocess.check_call(['db_ctrl.py', 'init', './dst_db'])
+        fill = subprocess.Popen(['db_ctrl.py', 'insert', './src_db'],
+                                stdin=subprocess.PIPE, stderr=subprocess.STDOUT, stdout=subprocess.PIPE,
+                                universal_newlines=True)
+        for i in range(100):
+            fill.stdin.write("Message-%i\n" % (i+1))
+        fill.stdin.close()
+        fill.wait()
+        # run send and recv
+        r = subprocess.Popen(['db_recv.py', '-m', '100'], stderr=subprocess.STDOUT, stdout=subprocess.PIPE,
+                             universal_newlines=True)
+        s = subprocess.Popen(['db_send.py', '-m', '100'], stderr=subprocess.STDOUT, stdout=subprocess.PIPE,
+                             universal_newlines=True)
+        s.wait()
+        r.wait()
+        # verify output of receive
+        actual = [l.strip() for l in r.stdout]
+        expected = ["inserted message %i" % (i+1) for i in range(100)]
+        self.assertEqual(actual, expected)
+        # verify state of databases
+        v = subprocess.Popen(['db_ctrl.py', 'list', './dst_db'], stderr=subprocess.STDOUT, stdout=subprocess.PIPE,
+                             universal_newlines=True)
+        v.wait()
+        expected = ["(%i, %s'Message-%i')" % ((i+1), _unicode_prefix, (i+1)) for i in range(100)]
+        actual = [l.strip() for l in v.stdout]
+        self.assertEqual(actual, expected)
+
+    def test_tx_send_tx_recv(self):
+        self.test_simple_send_recv(recv='tx_recv.py', send='tx_send.py')
+
+    def test_simple_send_direct_recv(self):
+        self.maxDiff = None
+        r = subprocess.Popen(['direct_recv.py', '-a', 'localhost:8888'], stderr=subprocess.STDOUT, stdout=subprocess.PIPE,
+                             universal_newlines=True)
+        time.sleep(0.5)
+        s = subprocess.Popen(['simple_send.py', '-a', 'localhost:8888'], stderr=subprocess.STDOUT, stdout=subprocess.PIPE,
+                             universal_newlines=True)
+        s.wait()
+        r.wait()
+        actual = [l.strip() for l in r.stdout]
+        expected = ["{%s'sequence': %i}" % (_unicode_prefix, (i+1)) for i in range(100)]
+        self.assertEqual(actual, expected)
+
+    def test_direct_send_simple_recv(self):
+        s = subprocess.Popen(['direct_send.py', '-a', 'localhost:8888'], stderr=subprocess.STDOUT, stdout=subprocess.PIPE,
+                             universal_newlines=True)
+        time.sleep(0.5)
+        r = subprocess.Popen(['simple_recv.py', '-a', 'localhost:8888'], stderr=subprocess.STDOUT, stdout=subprocess.PIPE,
+                             universal_newlines=True)
+        r.wait()
+        s.wait()
+        actual = [l.strip() for l in r.stdout]
+        expected = ["{%s'sequence': %i}" % (_unicode_prefix, (i+1)) for i in range(100)]
+        self.assertEqual(actual, expected)


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


[23/26] qpid-site git commit: QPID-7350: Examples that should have gone with the previous commit

Posted by jr...@apache.org.
http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/content/releases/qpid-proton-0.13.0/proton/cpp/examples/encode_decode.cpp.html
----------------------------------------------------------------------
diff --git a/content/releases/qpid-proton-0.13.0/proton/cpp/examples/encode_decode.cpp.html b/content/releases/qpid-proton-0.13.0/proton/cpp/examples/encode_decode.cpp.html
new file mode 100644
index 0000000..e7cf83a
--- /dev/null
+++ b/content/releases/qpid-proton-0.13.0/proton/cpp/examples/encode_decode.cpp.html
@@ -0,0 +1,382 @@
+<!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>encode_decode.cpp - 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/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;">
+        <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-proton-0.13.0/index.html">Qpid Proton 0.13.0</a></li><li><a href="/releases/qpid-proton-0.13.0/proton/cpp/examples/index.html">Proton C++ Examples</a></li><li>encode_decode.cpp</li></ul>
+
+        <div id="-middle-content">
+          
+<h1>encode_decode.cpp</h1>
+<div class="highlight"><pre><span></span><span class="cp">#include</span> <span class="cpf">&lt;proton/types.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/codec/encoder.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/codec/decoder.hpp&gt;</span><span class="cp"></span>
+
+<span class="cp">#include</span> <span class="cpf">&lt;algorithm&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;iostream&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;iterator&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;sstream&gt;</span><span class="cp"></span>
+
+<span class="c1">// Examples of how to use the encoder and decoder to create and examine AMQP values.</span>
+<span class="c1">//</span>
+
+<span class="c1">// Print is defined at the end as an example of how to query and extract complex</span>
+<span class="c1">// values from a decoder in terms of their simple components.</span>
+<span class="kt">void</span> <span class="nf">print</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">value</span><span class="o">&amp;</span><span class="p">);</span>
+
+<span class="c1">// Some helper templates to print map and std::vector results.</span>
+<span class="k">namespace</span> <span class="n">std</span> <span class="p">{</span>
+<span class="k">template</span><span class="o">&lt;</span><span class="k">class</span> <span class="nc">T</span><span class="p">,</span> <span class="k">class</span> <span class="nc">U</span><span class="o">&gt;</span> <span class="n">ostream</span><span class="o">&amp;</span> <span class="k">operator</span><span class="o">&lt;&lt;</span><span class="p">(</span><span class="n">ostream</span><span class="o">&amp;</span> <span class="n">o</span><span class="p">,</span> <span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">pair</span><span class="o">&lt;</span><span class="n">T</span><span class="p">,</span><span class="n">U</span><span class="o">&gt;&amp;</span> <span class="n">p</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">return</span> <span class="n">o</span> <span class="o">&lt;&lt;</span> <span class="n">p</span><span class="p">.</span><span class="n">first</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;:&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">p</span><span class="p">.</span><span class="n">second</span><span class="p">;</span>
+<span class="p">}</span>
+<span class="k">template</span><span class="o">&lt;</span><span class="k">class</span> <span class="nc">T</span><span class="o">&gt;</span> <span class="n">ostream</span><span class="o">&amp;</span> <span class="k">operator</span><span class="o">&lt;&lt;</span><span class="p">(</span><span class="n">ostream</span><span class="o">&amp;</span> <span class="n">o</span><span class="p">,</span> <span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">vector</span><span class="o">&lt;</span><span class="n">T</span><span class="o">&gt;&amp;</span> <span class="n">v</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">o</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;[ &quot;</span><span class="p">;</span>
+    <span class="n">ostream_iterator</span><span class="o">&lt;</span><span class="n">T</span><span class="o">&gt;</span> <span class="n">oi</span><span class="p">(</span><span class="n">o</span><span class="p">,</span> <span class="s">&quot; &quot;</span><span class="p">);</span>
+    <span class="n">copy</span><span class="p">(</span><span class="n">v</span><span class="p">.</span><span class="n">begin</span><span class="p">(),</span> <span class="n">v</span><span class="p">.</span><span class="n">end</span><span class="p">(),</span> <span class="n">oi</span><span class="p">);</span>
+    <span class="k">return</span> <span class="n">o</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;]&quot;</span><span class="p">;</span>
+<span class="p">}</span>
+<span class="k">template</span><span class="o">&lt;</span><span class="k">class</span> <span class="nc">T</span><span class="o">&gt;</span> <span class="n">ostream</span><span class="o">&amp;</span> <span class="k">operator</span><span class="o">&lt;&lt;</span><span class="p">(</span><span class="n">ostream</span><span class="o">&amp;</span> <span class="n">o</span><span class="p">,</span> <span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">list</span><span class="o">&lt;</span><span class="n">T</span><span class="o">&gt;&amp;</span> <span class="n">v</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">o</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;[ &quot;</span><span class="p">;</span>
+    <span class="n">ostream_iterator</span><span class="o">&lt;</span><span class="n">T</span><span class="o">&gt;</span> <span class="n">oi</span><span class="p">(</span><span class="n">o</span><span class="p">,</span> <span class="s">&quot; &quot;</span><span class="p">);</span>
+    <span class="n">copy</span><span class="p">(</span><span class="n">v</span><span class="p">.</span><span class="n">begin</span><span class="p">(),</span> <span class="n">v</span><span class="p">.</span><span class="n">end</span><span class="p">(),</span> <span class="n">oi</span><span class="p">);</span>
+    <span class="k">return</span> <span class="n">o</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;]&quot;</span><span class="p">;</span>
+<span class="p">}</span>
+<span class="k">template</span><span class="o">&lt;</span><span class="k">class</span> <span class="nc">K</span><span class="p">,</span> <span class="k">class</span> <span class="nc">T</span><span class="o">&gt;</span> <span class="n">ostream</span><span class="o">&amp;</span> <span class="k">operator</span><span class="o">&lt;&lt;</span><span class="p">(</span><span class="n">ostream</span><span class="o">&amp;</span> <span class="n">o</span><span class="p">,</span> <span class="k">const</span> <span class="n">map</span><span class="o">&lt;</span><span class="n">K</span><span class="p">,</span> <span class="n">T</span><span class="o">&gt;&amp;</span> <span class="n">m</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">o</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;{ &quot;</span><span class="p">;</span>
+    <span class="n">ostream_iterator</span><span class="o">&lt;</span><span class="n">std</span><span class="o">::</span><span class="n">pair</span><span class="o">&lt;</span><span class="n">K</span><span class="p">,</span><span class="n">T</span><span class="o">&gt;</span> <span class="o">&gt;</span> <span class="n">oi</span><span class="p">(</span><span class="n">o</span><span class="p">,</span> <span class="s">&quot; &quot;</span><span class="p">);</span>
+    <span class="n">copy</span><span class="p">(</span><span class="n">m</span><span class="p">.</span><span class="n">begin</span><span class="p">(),</span> <span class="n">m</span><span class="p">.</span><span class="n">end</span><span class="p">(),</span> <span class="n">oi</span><span class="p">);</span>
+    <span class="k">return</span> <span class="n">o</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;}&quot;</span><span class="p">;</span>
+<span class="p">}</span>
+<span class="p">}</span>
+
+<span class="c1">// Insert/extract native C++ containers with uniform type values.</span>
+<span class="k">static</span> <span class="kt">void</span> <span class="n">uniform_containers</span><span class="p">()</span> <span class="p">{</span>
+    <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;== Array, list and map of uniform type.&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+    <span class="n">proton</span><span class="o">::</span><span class="n">value</span> <span class="n">v</span><span class="p">;</span>
+
+    <span class="n">std</span><span class="o">::</span><span class="n">vector</span><span class="o">&lt;</span><span class="kt">int</span><span class="o">&gt;</span> <span class="n">a</span><span class="p">;</span>
+    <span class="n">a</span><span class="p">.</span><span class="n">push_back</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span>
+    <span class="n">a</span><span class="p">.</span><span class="n">push_back</span><span class="p">(</span><span class="mi">2</span><span class="p">);</span>
+    <span class="n">a</span><span class="p">.</span><span class="n">push_back</span><span class="p">(</span><span class="mi">3</span><span class="p">);</span>
+    <span class="c1">// By default a C++ container is encoded as an AMQP array.</span>
+    <span class="n">v</span> <span class="o">=</span> <span class="n">a</span><span class="p">;</span>
+    <span class="n">print</span><span class="p">(</span><span class="n">v</span><span class="p">);</span>
+    <span class="n">std</span><span class="o">::</span><span class="n">list</span><span class="o">&lt;</span><span class="kt">int</span><span class="o">&gt;</span> <span class="n">a1</span><span class="p">;</span>
+    <span class="n">proton</span><span class="o">::</span><span class="n">get</span><span class="p">(</span><span class="n">v</span><span class="p">,</span> <span class="n">a1</span><span class="p">);</span>
+    <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="n">a1</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+
+    <span class="c1">// You can specify that a container should be encoded as an AMQP list instead.</span>
+    <span class="n">v</span> <span class="o">=</span> <span class="n">proton</span><span class="o">::</span><span class="n">codec</span><span class="o">::</span><span class="n">encoder</span><span class="o">::</span><span class="n">list</span><span class="p">(</span><span class="n">a1</span><span class="p">);</span>
+    <span class="n">print</span><span class="p">(</span><span class="n">v</span><span class="p">);</span>
+    <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="n">proton</span><span class="o">::</span><span class="n">get</span><span class="o">&lt;</span><span class="n">std</span><span class="o">::</span><span class="n">vector</span><span class="o">&lt;</span><span class="kt">int</span><span class="o">&gt;</span> <span class="o">&gt;</span><span class="p">(</span><span class="n">v</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+
+    <span class="c1">// C++ map types (types with key_type, mapped_type) convert to an AMQP map by default.</span>
+    <span class="n">std</span><span class="o">::</span><span class="n">map</span><span class="o">&lt;</span><span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="p">,</span> <span class="kt">int</span><span class="o">&gt;</span> <span class="n">m</span><span class="p">;</span>
+    <span class="n">m</span><span class="p">[</span><span class="s">&quot;one&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+    <span class="n">m</span><span class="p">[</span><span class="s">&quot;two&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="mi">2</span><span class="p">;</span>
+    <span class="n">v</span> <span class="o">=</span> <span class="n">m</span><span class="p">;</span>
+    <span class="n">print</span><span class="p">(</span><span class="n">v</span><span class="p">);</span>
+    <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="n">proton</span><span class="o">::</span><span class="n">get</span><span class="o">&lt;</span><span class="n">std</span><span class="o">::</span><span class="n">map</span><span class="o">&lt;</span><span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="p">,</span> <span class="kt">int</span><span class="o">&gt;</span> <span class="o">&gt;</span><span class="p">(</span><span class="n">v</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+
+    <span class="c1">// A sequence of pairs encodes as an AMQP MAP, which lets you control the encoded order.</span>
+    <span class="n">std</span><span class="o">::</span><span class="n">vector</span><span class="o">&lt;</span><span class="n">std</span><span class="o">::</span><span class="n">pair</span><span class="o">&lt;</span><span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="p">,</span> <span class="kt">int</span><span class="o">&gt;</span> <span class="o">&gt;</span> <span class="n">pairs</span><span class="p">;</span>
+    <span class="n">pairs</span><span class="p">.</span><span class="n">push_back</span><span class="p">(</span><span class="n">std</span><span class="o">::</span><span class="n">make_pair</span><span class="p">(</span><span class="s">&quot;z&quot;</span><span class="p">,</span> <span class="mi">3</span><span class="p">));</span>
+    <span class="n">pairs</span><span class="p">.</span><span class="n">push_back</span><span class="p">(</span><span class="n">std</span><span class="o">::</span><span class="n">make_pair</span><span class="p">(</span><span class="s">&quot;a&quot;</span><span class="p">,</span> <span class="mi">4</span><span class="p">));</span>
+    <span class="n">v</span> <span class="o">=</span> <span class="n">pairs</span><span class="p">;</span>
+    <span class="n">print</span><span class="p">(</span><span class="n">v</span><span class="p">);</span>
+
+    <span class="c1">// You can also decode an AMQP map as a sequence of pairs to preserve encode order.</span>
+    <span class="n">std</span><span class="o">::</span><span class="n">vector</span><span class="o">&lt;</span><span class="n">std</span><span class="o">::</span><span class="n">pair</span><span class="o">&lt;</span><span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="p">,</span> <span class="kt">int</span><span class="o">&gt;</span> <span class="o">&gt;</span> <span class="n">pairs2</span><span class="p">;</span>
+    <span class="n">proton</span><span class="o">::</span><span class="n">codec</span><span class="o">::</span><span class="n">decoder</span> <span class="n">d</span><span class="p">(</span><span class="n">v</span><span class="p">);</span>
+    <span class="n">d</span> <span class="o">&gt;&gt;</span> <span class="n">pairs2</span><span class="p">;</span>
+    <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="n">pairs2</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+
+    <span class="c1">// A vector of proton::value is normally encoded as a mixed-type AMQP LIST,</span>
+    <span class="c1">// but you can encoded it as an array provided all the values match the array type.</span>
+    <span class="n">std</span><span class="o">::</span><span class="n">vector</span><span class="o">&lt;</span><span class="n">proton</span><span class="o">::</span><span class="n">value</span><span class="o">&gt;</span> <span class="n">vv</span><span class="p">;</span>
+    <span class="n">vv</span><span class="p">.</span><span class="n">push_back</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">value</span><span class="p">(</span><span class="s">&quot;a&quot;</span><span class="p">));</span>
+    <span class="n">vv</span><span class="p">.</span><span class="n">push_back</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">value</span><span class="p">(</span><span class="s">&quot;b&quot;</span><span class="p">));</span>
+    <span class="n">vv</span><span class="p">.</span><span class="n">push_back</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">value</span><span class="p">(</span><span class="s">&quot;c&quot;</span><span class="p">));</span>
+    <span class="n">v</span> <span class="o">=</span> <span class="n">vv</span><span class="p">;</span>
+    <span class="n">print</span><span class="p">(</span><span class="n">v</span><span class="p">);</span>
+<span class="p">}</span>
+
+<span class="c1">// Containers with mixed types use value to represent arbitrary AMQP types.</span>
+<span class="k">static</span> <span class="kt">void</span> <span class="n">mixed_containers</span><span class="p">()</span> <span class="p">{</span>
+    <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;== List and map of mixed type values.&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+    <span class="n">proton</span><span class="o">::</span><span class="n">value</span> <span class="n">v</span><span class="p">;</span>
+
+    <span class="n">std</span><span class="o">::</span><span class="n">vector</span><span class="o">&lt;</span><span class="n">proton</span><span class="o">::</span><span class="n">value</span><span class="o">&gt;</span> <span class="n">l</span><span class="p">;</span>
+    <span class="n">l</span><span class="p">.</span><span class="n">push_back</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">value</span><span class="p">(</span><span class="mi">42</span><span class="p">));</span>
+    <span class="n">l</span><span class="p">.</span><span class="n">push_back</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">value</span><span class="p">(</span><span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="p">(</span><span class="s">&quot;foo&quot;</span><span class="p">)));</span>
+    <span class="c1">// By default, a sequence of proton::value is treated as an AMQP list.</span>
+    <span class="n">v</span> <span class="o">=</span> <span class="n">l</span><span class="p">;</span>
+    <span class="n">print</span><span class="p">(</span><span class="n">v</span><span class="p">);</span>
+    <span class="n">std</span><span class="o">::</span><span class="n">vector</span><span class="o">&lt;</span><span class="n">proton</span><span class="o">::</span><span class="n">value</span><span class="o">&gt;</span> <span class="n">l2</span> <span class="o">=</span> <span class="n">proton</span><span class="o">::</span><span class="n">get</span><span class="o">&lt;</span><span class="n">std</span><span class="o">::</span><span class="n">vector</span><span class="o">&lt;</span><span class="n">proton</span><span class="o">::</span><span class="n">value</span><span class="o">&gt;</span> <span class="o">&gt;</span><span class="p">(</span><span class="n">v</span><span class="p">);</span>
+    <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="n">l2</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+
+    <span class="n">std</span><span class="o">::</span><span class="n">map</span><span class="o">&lt;</span><span class="n">proton</span><span class="o">::</span><span class="n">value</span><span class="p">,</span> <span class="n">proton</span><span class="o">::</span><span class="n">value</span><span class="o">&gt;</span> <span class="n">m</span><span class="p">;</span>
+    <span class="n">m</span><span class="p">[</span><span class="n">proton</span><span class="o">::</span><span class="n">value</span><span class="p">(</span><span class="s">&quot;five&quot;</span><span class="p">)]</span> <span class="o">=</span> <span class="n">proton</span><span class="o">::</span><span class="n">value</span><span class="p">(</span><span class="mi">5</span><span class="p">);</span>
+    <span class="n">m</span><span class="p">[</span><span class="n">proton</span><span class="o">::</span><span class="n">value</span><span class="p">(</span><span class="mi">4</span><span class="p">)]</span> <span class="o">=</span> <span class="n">proton</span><span class="o">::</span><span class="n">value</span><span class="p">(</span><span class="s">&quot;four&quot;</span><span class="p">);</span> <span class="n">v</span> <span class="o">=</span> <span class="n">m</span><span class="p">;</span>
+    <span class="n">print</span><span class="p">(</span><span class="n">v</span><span class="p">);</span>
+    <span class="k">typedef</span> <span class="n">std</span><span class="o">::</span><span class="n">map</span><span class="o">&lt;</span><span class="n">proton</span><span class="o">::</span><span class="n">value</span><span class="p">,</span> <span class="n">proton</span><span class="o">::</span><span class="n">value</span><span class="o">&gt;</span> <span class="n">value_map</span><span class="p">;</span>
+    <span class="n">value_map</span> <span class="nf">m2</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">get</span><span class="o">&lt;</span><span class="n">value_map</span><span class="o">&gt;</span><span class="p">(</span><span class="n">v</span><span class="p">));</span>
+    <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="n">m2</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+<span class="p">}</span>
+
+<span class="c1">// Insert using stream operators (see print_next for example of extracting with stream ops.)</span>
+<span class="k">static</span> <span class="kt">void</span> <span class="n">insert_stream_operators</span><span class="p">()</span> <span class="p">{</span>
+    <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;== Insert with stream operators.&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+    <span class="n">proton</span><span class="o">::</span><span class="n">value</span> <span class="n">v</span><span class="p">;</span>
+
+    <span class="c1">// Create an array of INT with values [1, 2, 3]</span>
+    <span class="n">proton</span><span class="o">::</span><span class="n">codec</span><span class="o">::</span><span class="n">encoder</span> <span class="n">e</span><span class="p">(</span><span class="n">v</span><span class="p">);</span>
+    <span class="n">e</span> <span class="o">&lt;&lt;</span> <span class="n">proton</span><span class="o">::</span><span class="n">codec</span><span class="o">::</span><span class="n">start</span><span class="o">::</span><span class="n">array</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">INT</span><span class="p">)</span>
+      <span class="o">&lt;&lt;</span> <span class="kt">int32_t</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="kt">int32_t</span><span class="p">(</span><span class="mi">2</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="kt">int32_t</span><span class="p">(</span><span class="mi">3</span><span class="p">)</span>
+      <span class="o">&lt;&lt;</span> <span class="n">proton</span><span class="o">::</span><span class="n">codec</span><span class="o">::</span><span class="n">finish</span><span class="p">();</span>
+    <span class="n">print</span><span class="p">(</span><span class="n">v</span><span class="p">);</span>
+
+    <span class="c1">// Create a mixed-type list of the values [42, false, &quot;x&quot;].</span>
+    <span class="n">proton</span><span class="o">::</span><span class="n">codec</span><span class="o">::</span><span class="n">encoder</span> <span class="n">e2</span><span class="p">(</span><span class="n">v</span><span class="p">);</span>
+    <span class="n">e2</span> <span class="o">&lt;&lt;</span> <span class="n">proton</span><span class="o">::</span><span class="n">codec</span><span class="o">::</span><span class="n">start</span><span class="o">::</span><span class="n">list</span><span class="p">()</span>
+       <span class="o">&lt;&lt;</span> <span class="kt">int32_t</span><span class="p">(</span><span class="mi">42</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="nb">false</span> <span class="o">&lt;&lt;</span> <span class="n">proton</span><span class="o">::</span><span class="n">symbol</span><span class="p">(</span><span class="s">&quot;x&quot;</span><span class="p">)</span>
+       <span class="o">&lt;&lt;</span> <span class="n">proton</span><span class="o">::</span><span class="n">codec</span><span class="o">::</span><span class="n">finish</span><span class="p">();</span>
+    <span class="n">print</span><span class="p">(</span><span class="n">v</span><span class="p">);</span>
+
+    <span class="c1">// Create a map { &quot;k1&quot;:42, &quot;k2&quot;: false }</span>
+    <span class="n">proton</span><span class="o">::</span><span class="n">codec</span><span class="o">::</span><span class="n">encoder</span> <span class="n">e3</span><span class="p">(</span><span class="n">v</span><span class="p">);</span>
+    <span class="n">e3</span> <span class="o">&lt;&lt;</span> <span class="n">proton</span><span class="o">::</span><span class="n">codec</span><span class="o">::</span><span class="n">start</span><span class="o">::</span><span class="n">map</span><span class="p">()</span>
+       <span class="o">&lt;&lt;</span> <span class="s">&quot;k1&quot;</span> <span class="o">&lt;&lt;</span> <span class="kt">int32_t</span><span class="p">(</span><span class="mi">42</span><span class="p">)</span>
+       <span class="o">&lt;&lt;</span> <span class="n">proton</span><span class="o">::</span><span class="n">symbol</span><span class="p">(</span><span class="s">&quot;k2&quot;</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="nb">false</span>
+       <span class="o">&lt;&lt;</span> <span class="n">proton</span><span class="o">::</span><span class="n">codec</span><span class="o">::</span><span class="n">finish</span><span class="p">();</span>
+    <span class="n">print</span><span class="p">(</span><span class="n">v</span><span class="p">);</span>
+<span class="p">}</span>
+
+<span class="kt">int</span> <span class="n">main</span><span class="p">(</span><span class="kt">int</span><span class="p">,</span> <span class="kt">char</span><span class="o">**</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">try</span> <span class="p">{</span>
+        <span class="n">uniform_containers</span><span class="p">();</span>
+        <span class="n">mixed_containers</span><span class="p">();</span>
+        <span class="n">insert_stream_operators</span><span class="p">();</span>
+        <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">catch</span> <span class="p">(</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">exception</span><span class="o">&amp;</span> <span class="n">e</span><span class="p">)</span> <span class="p">{</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">cerr</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;error: &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">e</span><span class="p">.</span><span class="n">what</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+    <span class="p">}</span>
+    <span class="k">return</span> <span class="mi">1</span><span class="p">;</span>
+<span class="p">}</span>
+
+<span class="c1">// print_next prints the next value from values by recursively descending into complex values.</span>
+<span class="c1">//</span>
+<span class="c1">// NOTE this is for example puroses only: There is a built in ostream operator&lt;&lt; for values.</span>
+<span class="c1">//</span>
+<span class="c1">//</span>
+<span class="k">static</span> <span class="kt">void</span> <span class="n">print_next</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">codec</span><span class="o">::</span><span class="n">decoder</span><span class="o">&amp;</span> <span class="n">d</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">proton</span><span class="o">::</span><span class="n">type_id</span> <span class="n">type</span> <span class="o">=</span> <span class="n">d</span><span class="p">.</span><span class="n">next_type</span><span class="p">();</span>
+    <span class="n">proton</span><span class="o">::</span><span class="n">codec</span><span class="o">::</span><span class="n">start</span> <span class="n">s</span><span class="p">;</span>
+    <span class="k">switch</span> <span class="p">(</span><span class="n">type</span><span class="p">)</span> <span class="p">{</span>
+      <span class="k">case</span> <span class="n">proton</span><span class="o">::</span><span class="nl">ARRAY</span><span class="p">:</span> <span class="p">{</span>
+          <span class="n">d</span> <span class="o">&gt;&gt;</span> <span class="n">s</span><span class="p">;</span>
+          <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;array&lt;&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">s</span><span class="p">.</span><span class="n">element</span><span class="p">;</span>
+          <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="p">.</span><span class="n">is_described</span><span class="p">)</span> <span class="p">{</span>
+              <span class="n">std</span><span class="o">::</span><span class="n">cout</span>  <span class="o">&lt;&lt;</span> <span class="s">&quot;, descriptor=&quot;</span><span class="p">;</span>
+              <span class="n">print_next</span><span class="p">(</span><span class="n">d</span><span class="p">);</span>
+          <span class="p">}</span>
+          <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;&gt;[&quot;</span><span class="p">;</span>
+          <span class="k">for</span> <span class="p">(</span><span class="kt">size_t</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">s</span><span class="p">.</span><span class="n">size</span><span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span> <span class="p">{</span>
+              <span class="k">if</span> <span class="p">(</span><span class="n">i</span><span class="p">)</span> <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;, &quot;</span><span class="p">;</span>
+              <span class="n">print_next</span><span class="p">(</span><span class="n">d</span><span class="p">);</span>
+          <span class="p">}</span>
+          <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;]&quot;</span><span class="p">;</span>
+          <span class="n">d</span> <span class="o">&gt;&gt;</span> <span class="n">proton</span><span class="o">::</span><span class="n">codec</span><span class="o">::</span><span class="n">finish</span><span class="p">();</span>
+          <span class="k">break</span><span class="p">;</span>
+      <span class="p">}</span>
+      <span class="k">case</span> <span class="n">proton</span><span class="o">::</span><span class="nl">LIST</span><span class="p">:</span> <span class="p">{</span>
+          <span class="n">d</span> <span class="o">&gt;&gt;</span> <span class="n">s</span><span class="p">;</span>
+          <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;list[&quot;</span><span class="p">;</span>
+          <span class="k">for</span> <span class="p">(</span><span class="kt">size_t</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">s</span><span class="p">.</span><span class="n">size</span><span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span> <span class="p">{</span>
+              <span class="k">if</span> <span class="p">(</span><span class="n">i</span><span class="p">)</span> <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;, &quot;</span><span class="p">;</span>
+              <span class="n">print_next</span><span class="p">(</span><span class="n">d</span><span class="p">);</span>
+          <span class="p">}</span>
+          <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;]&quot;</span><span class="p">;</span>
+          <span class="n">d</span> <span class="o">&gt;&gt;</span> <span class="n">proton</span><span class="o">::</span><span class="n">codec</span><span class="o">::</span><span class="n">finish</span><span class="p">();</span>
+          <span class="k">break</span><span class="p">;</span>
+      <span class="p">}</span>
+      <span class="k">case</span> <span class="n">proton</span><span class="o">::</span><span class="nl">MAP</span><span class="p">:</span> <span class="p">{</span>
+          <span class="n">d</span> <span class="o">&gt;&gt;</span> <span class="n">s</span><span class="p">;</span>
+          <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;map{&quot;</span><span class="p">;</span>
+          <span class="k">for</span> <span class="p">(</span><span class="kt">size_t</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">s</span><span class="p">.</span><span class="n">size</span><span class="o">/</span><span class="mi">2</span><span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span> <span class="p">{</span>
+              <span class="k">if</span> <span class="p">(</span><span class="n">i</span><span class="p">)</span> <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;, &quot;</span><span class="p">;</span>
+              <span class="n">print_next</span><span class="p">(</span><span class="n">d</span><span class="p">);</span>
+              <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;:&quot;</span><span class="p">;</span>        <span class="c1">// key:value</span>
+              <span class="n">print_next</span><span class="p">(</span><span class="n">d</span><span class="p">);</span>
+          <span class="p">}</span>
+          <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;}&quot;</span><span class="p">;</span>
+          <span class="n">d</span> <span class="o">&gt;&gt;</span> <span class="n">proton</span><span class="o">::</span><span class="n">codec</span><span class="o">::</span><span class="n">finish</span><span class="p">();</span>
+          <span class="k">break</span><span class="p">;</span>
+      <span class="p">}</span>
+      <span class="k">case</span> <span class="n">proton</span><span class="o">::</span><span class="nl">DESCRIBED</span><span class="p">:</span> <span class="p">{</span>
+          <span class="n">d</span> <span class="o">&gt;&gt;</span> <span class="n">s</span><span class="p">;</span>
+          <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;described(&quot;</span><span class="p">;</span>
+          <span class="n">print_next</span><span class="p">(</span><span class="n">d</span><span class="p">);</span>      <span class="c1">// Descriptor</span>
+          <span class="n">print_next</span><span class="p">(</span><span class="n">d</span><span class="p">);</span>      <span class="c1">// value</span>
+          <span class="n">d</span> <span class="o">&gt;&gt;</span> <span class="n">proton</span><span class="o">::</span><span class="n">codec</span><span class="o">::</span><span class="n">finish</span><span class="p">();</span>
+          <span class="k">break</span><span class="p">;</span>
+      <span class="p">}</span>
+      <span class="k">default</span><span class="o">:</span>
+        <span class="c1">// A simple type. We could continue the switch for all AMQP types but</span>
+        <span class="c1">// we will take a short cut and extract to another value and print that.</span>
+        <span class="n">proton</span><span class="o">::</span><span class="n">value</span> <span class="n">v2</span><span class="p">;</span>
+        <span class="n">d</span> <span class="o">&gt;&gt;</span> <span class="n">v2</span><span class="p">;</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="n">type</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;(&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">v2</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;)&quot;</span><span class="p">;</span>
+    <span class="p">}</span>
+<span class="p">}</span>
+
+<span class="c1">// Print a value, for example purposes. Normal code can use operator&lt;&lt;</span>
+<span class="kt">void</span> <span class="n">print</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">value</span><span class="o">&amp;</span> <span class="n">v</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">proton</span><span class="o">::</span><span class="n">codec</span><span class="o">::</span><span class="n">decoder</span> <span class="n">d</span><span class="p">(</span><span class="n">v</span><span class="p">);</span>
+    <span class="n">d</span><span class="p">.</span><span class="n">rewind</span><span class="p">();</span>
+    <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">boolalpha</span><span class="p">;</span> <span class="c1">// Print boolean as true/false.</span>
+    <span class="k">while</span> <span class="p">(</span><span class="n">d</span><span class="p">.</span><span class="n">more</span><span class="p">())</span> <span class="p">{</span>
+        <span class="n">print_next</span><span class="p">(</span><span class="n">d</span><span class="p">);</span>
+        <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="p">.</span><span class="n">more</span><span class="p">())</span> <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;, &quot;</span><span class="p">;</span>
+    <span class="p">}</span>
+    <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+<span class="p">}</span>
+</pre></div>
+
+<p><a href="encode_decode.cpp">Download this file</a></p>
+
+
+          <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/75ca8b14/content/releases/qpid-proton-0.13.0/proton/cpp/examples/fake_cpp11.hpp
----------------------------------------------------------------------
diff --git a/content/releases/qpid-proton-0.13.0/proton/cpp/examples/fake_cpp11.hpp b/content/releases/qpid-proton-0.13.0/proton/cpp/examples/fake_cpp11.hpp
new file mode 100755
index 0000000..03daa3b
--- /dev/null
+++ b/content/releases/qpid-proton-0.13.0/proton/cpp/examples/fake_cpp11.hpp
@@ -0,0 +1,34 @@
+#ifndef FAKE_CPP11_HPP
+#define FAKE_CPP11_HPP
+
+/*
+ * 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.
+ */
+
+/// These definitions allow us to use some new C++11 features in previous compilers
+///
+/// It is strongly recommended not to copy this - just use C++11/C++14 instead!
+
+#if __cplusplus < 201103L
+#define OVERRIDE
+#else
+#define OVERRIDE override
+#endif
+
+
+#endif // FAKE_CPP11_HPP

http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/content/releases/qpid-proton-0.13.0/proton/cpp/examples/fake_cpp11.hpp.html
----------------------------------------------------------------------
diff --git a/content/releases/qpid-proton-0.13.0/proton/cpp/examples/fake_cpp11.hpp.html b/content/releases/qpid-proton-0.13.0/proton/cpp/examples/fake_cpp11.hpp.html
new file mode 100644
index 0000000..a6862ab
--- /dev/null
+++ b/content/releases/qpid-proton-0.13.0/proton/cpp/examples/fake_cpp11.hpp.html
@@ -0,0 +1,166 @@
+<!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>fake_cpp11.hpp - 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/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;">
+        <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-proton-0.13.0/index.html">Qpid Proton 0.13.0</a></li><li><a href="/releases/qpid-proton-0.13.0/proton/cpp/examples/index.html">Proton C++ Examples</a></li><li>fake_cpp11.hpp</li></ul>
+
+        <div id="-middle-content">
+          
+<h1>fake_cpp11.hpp</h1>
+<div class="highlight"><pre><span></span><span class="cp">#ifndef FAKE_CPP11_HPP</span>
+<span class="cp">#define FAKE_CPP11_HPP</span>
+
+
+
+<span class="c1">/// These definitions allow us to use some new C++11 features in previous compilers</span>
+<span class="c1">///</span>
+<span class="c1">/// It is strongly recommended not to copy this - just use C++11/C++14 instead!</span>
+
+<span class="cp">#if __cplusplus &lt; 201103L</span>
+<span class="cp">#define OVERRIDE</span>
+<span class="cp">#else</span>
+<span class="cp">#define OVERRIDE override</span>
+<span class="cp">#endif</span>
+
+
+<span class="cp">#endif </span><span class="c1">// FAKE_CPP11_HPP</span>
+</pre></div>
+
+<p><a href="fake_cpp11.hpp">Download this file</a></p>
+
+
+          <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/75ca8b14/content/releases/qpid-proton-0.13.0/proton/cpp/examples/flow_control.cpp
----------------------------------------------------------------------
diff --git a/content/releases/qpid-proton-0.13.0/proton/cpp/examples/flow_control.cpp b/content/releases/qpid-proton-0.13.0/proton/cpp/examples/flow_control.cpp
new file mode 100755
index 0000000..2eedd65
--- /dev/null
+++ b/content/releases/qpid-proton-0.13.0/proton/cpp/examples/flow_control.cpp
@@ -0,0 +1,233 @@
+/*
+ *
+ * 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.
+ *
+ */
+
+#include <proton/listener.hpp>
+#include <proton/connection.hpp>
+#include <proton/connection_options.hpp>
+#include <proton/default_container.hpp>
+#include <proton/messaging_handler.hpp>
+#include <proton/sender.hpp>
+#include <proton/tracker.hpp>
+#include <proton/delivery.hpp>
+
+#include <iostream>
+#include <sstream>
+
+#include "fake_cpp11.hpp"
+
+namespace {
+
+bool verbose = true;
+
+void verify(bool success, const std::string &msg) {
+    if (!success)
+        throw std::runtime_error("example failure:" + msg);
+    else {
+        std::cout << "success: " << msg << std::endl;
+        if (verbose) std::cout << std::endl;
+    }
+}
+
+}
+
+// flow_sender manages the incoming connection and acts as the message sender.
+class flow_sender : public proton::messaging_handler {
+  private:
+    int available;  // Number of messages the sender may send assuming sufficient credit.
+    int sequence;
+
+  public:
+    flow_sender() : available(0), sequence(0) {}
+
+    void on_sendable(proton::sender &s) OVERRIDE {
+        if (verbose)
+            std::cout << "flow_sender in \"on_sendable\" with credit " << s.credit()
+                      << " and " << available << " available messages" << std::endl;
+        for (int i = sequence; available && s.credit() > 0; i++) {
+            std::ostringstream mbody;
+            mbody << "flow_sender message " << sequence++;
+            proton::message m(mbody.str());
+            s.send(m);
+            available--;
+        }
+    }
+
+    void on_sender_drain_start(proton::sender &s) OVERRIDE {
+        if (verbose)
+            std::cout << "flow_sender in \"on_drain_start\" with credit " << s.credit()
+                      << " making an internal call to \"on_sendble\"" << std::endl;
+        on_sendable(s); // send as many as we can
+        if (s.credit()) {
+            s.return_credit(); // return the rest
+        }
+    }
+
+    void set_available(int n) { available = n; }
+};
+
+class flow_receiver : public proton::messaging_handler {
+  public:
+    int stage;
+    int received;
+    flow_sender &sender;
+
+    flow_receiver(flow_sender &s) : stage(0), sender(s) {}
+
+    void example_setup(int n) {
+        received = 0;
+        sender.set_available(n);
+    }
+
+    void run_stage(proton::receiver &r, const std::string &caller) {
+        // Serialize the progression of the flow control examples.
+        switch (stage) {
+        case 0:
+            if (verbose) std::cout << "Example 1.  Simple use of credit." << std::endl;
+            // TODO: add timeout callbacks, show no messages until credit.
+            example_setup(2);
+            r.add_credit(2);
+            break;
+        case 1:
+            if (r.credit() > 0) return;
+            verify(received == 2, "Example 1: simple credit");
+
+            if (verbose) std::cout << "Example 2.   Use basic drain, sender has 3 \"immediate\" messages." << std::endl;
+            example_setup(3);
+            r.add_credit(5); // ask for up to 5
+            r.drain();       // but only use what's available
+            break;
+        case 2:
+            if (caller == "on_message") return;
+            if (caller == "on_receiver_drain_finish") {
+                // Note that unused credit of 2 at sender is returned and is now 0.
+                verify(received == 3 && r.credit() == 0, "Example 2: basic drain");
+
+                if (verbose) std::cout << "Example 3. Drain use with no credit." << std::endl;
+                example_setup(0);
+                r.drain();
+                break;
+            }
+            verify(false, "example 2 run_stage");
+            return;
+
+        case 3:
+            verify(caller == "on_receiver_drain_finish" && received == 0, "Example 3: drain without credit");
+
+            if (verbose) std::cout << "Example 4. Show using high(10)/low(3) watermark for 25 messages." << std::endl;
+            example_setup(25);
+            r.add_credit(10);
+            break;
+
+        case 4:
+            if (received < 25) {
+                // Top up credit as needed.
+                uint32_t credit = r.credit();
+                if (credit <= 3) {
+                    uint32_t new_credit = 10;
+                    uint32_t remaining = 25 - received;
+                    if (new_credit > remaining)
+                        new_credit = remaining;
+                    if (new_credit > credit) {
+                        r.add_credit(new_credit - credit);
+                        if (verbose)
+                            std::cout << "flow_receiver adding credit for " << new_credit - credit
+                                      << " messages" << std::endl;
+                    }
+                }
+                return;
+            }
+
+            verify(received == 25 && r.credit() == 0, "Exmaple 4: high/low watermark");
+            r.connection().close();
+            break;
+
+        default:
+            throw std::runtime_error("run_stage sequencing error");
+        }
+        stage++;
+    }
+
+    void on_receiver_open(proton::receiver &r) OVERRIDE {
+        run_stage(r, "on_receiver_open");
+    }
+
+    void on_message(proton::delivery &d, proton::message &m) OVERRIDE {
+        if (verbose)
+            std::cout << "flow_receiver in \"on_message\" with " << m.body() << std::endl;
+        proton::receiver r(d.receiver());
+        received++;
+        run_stage(r, "on_message");
+    }
+
+    void on_receiver_drain_finish(proton::receiver &r) OVERRIDE {
+        if (verbose)
+            std::cout << "flow_receiver in \"on_receiver_drain_finish\"" << std::endl;
+        run_stage(r, "on_receiver_drain_finish");
+    }
+};
+
+
+class flow_control : public proton::messaging_handler {
+  private:
+    std::string url;
+    proton::listener listener;
+    flow_sender send_handler;
+    flow_receiver receive_handler;
+
+  public:
+    flow_control(const std::string& u) : url(u), receive_handler(send_handler) {}
+
+    void on_container_start(proton::container &c) OVERRIDE {
+        listener = c.listen(url, proton::connection_options().handler(send_handler));
+        c.connect(url);
+    }
+
+    void on_connection_open(proton::connection &c) OVERRIDE {
+        if (c.active()) {
+            // outbound connection
+            c.open_receiver("flow_example", proton::receiver_options().handler(receive_handler).credit_window(0));
+        }
+    }
+
+    void on_connection_close(proton::connection &) OVERRIDE {
+        listener.stop();
+    }
+};
+
+int main(int argc, char **argv) {
+    std::string quiet_arg("-quiet");
+    if (argc > 2 && quiet_arg == argv[2])
+        verbose = false;
+    try {
+        // Pick an "unusual" port since we are going to be talking to
+        // ourselves, not a broker.
+        std::string url = argc > 1 ? argv[1] : "127.0.0.1:8888/examples";
+
+        flow_control fc(url);
+        proton::default_container(fc).run();
+
+        return 0;
+    } catch (const std::exception& e) {
+        std::cerr << e.what() << std::endl;
+    }
+
+    return 1;
+}


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


[06/26] qpid-site git commit: QPID-7350: Examples that should have gone with the previous commit

Posted by jr...@apache.org.
http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/input/releases/qpid-proton-0.13.0/proton/cpp/examples/simple_recv.cpp
----------------------------------------------------------------------
diff --git a/input/releases/qpid-proton-0.13.0/proton/cpp/examples/simple_recv.cpp b/input/releases/qpid-proton-0.13.0/proton/cpp/examples/simple_recv.cpp
new file mode 100644
index 0000000..7621941
--- /dev/null
+++ b/input/releases/qpid-proton-0.13.0/proton/cpp/examples/simple_recv.cpp
@@ -0,0 +1,92 @@
+/*
+ *
+ * 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.
+ *
+ */
+
+#include "options.hpp"
+
+#include <proton/connection.hpp>
+#include <proton/default_container.hpp>
+#include <proton/delivery.hpp>
+#include <proton/messaging_handler.hpp>
+#include <proton/link.hpp>
+#include <proton/message_id.hpp>
+#include <proton/value.hpp>
+
+#include <iostream>
+#include <map>
+
+#include "fake_cpp11.hpp"
+
+class simple_recv : public proton::messaging_handler {
+  private:
+    std::string url;
+    proton::receiver receiver;
+    uint64_t expected;
+    uint64_t received;
+
+  public:
+    simple_recv(const std::string &s, int c) : url(s), expected(c), received(0) {}
+
+    void on_container_start(proton::container &c) OVERRIDE {
+        receiver = c.open_receiver(url);
+        std::cout << "simple_recv listening on " << url << std::endl;
+    }
+
+    void on_message(proton::delivery &d, proton::message &msg) OVERRIDE {
+        if (proton::get<uint64_t>(msg.id()) < received) {
+            return; // Ignore duplicate
+        }
+
+        if (expected == 0 || received < expected) {
+            std::cout << msg.body() << std::endl;
+            received++;
+
+            if (received == expected) {
+                d.receiver().close();
+                d.connection().close();
+            }
+        }
+    }
+};
+
+int main(int argc, char **argv) {
+    std::string address("127.0.0.1:5672/examples");
+
+    int message_count = 100;
+    example::options opts(argc, argv);
+
+    opts.add_value(address, 'a', "address", "connect to and receive from URL", "URL");
+    opts.add_value(message_count, 'm', "messages", "receive COUNT messages", "COUNT");
+
+    try {
+        opts.parse();
+
+        simple_recv recv(address, message_count);
+        proton::default_container(recv).run();
+
+        return 0;
+    } catch (const example::bad_option& e) {
+        std::cout << opts << std::endl << e.what() << std::endl;
+    } catch (const std::exception& e) {
+        std::cerr << e.what() << std::endl;
+    }
+
+    return 1;
+}

http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/input/releases/qpid-proton-0.13.0/proton/cpp/examples/simple_recv.cpp.html.in
----------------------------------------------------------------------
diff --git a/input/releases/qpid-proton-0.13.0/proton/cpp/examples/simple_recv.cpp.html.in b/input/releases/qpid-proton-0.13.0/proton/cpp/examples/simple_recv.cpp.html.in
new file mode 100644
index 0000000..3bd8012
--- /dev/null
+++ b/input/releases/qpid-proton-0.13.0/proton/cpp/examples/simple_recv.cpp.html.in
@@ -0,0 +1,76 @@
+
+<h1>simple_recv.cpp</h1>
+<div class="highlight"><pre><span></span><span class="cp">#include</span> <span class="cpf">&quot;options.hpp&quot;</span><span class="cp"></span>
+
+<span class="cp">#include</span> <span class="cpf">&lt;proton/connection.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/default_container.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/delivery.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/messaging_handler.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/link.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/message_id.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/value.hpp&gt;</span><span class="cp"></span>
+
+<span class="cp">#include</span> <span class="cpf">&lt;iostream&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;map&gt;</span><span class="cp"></span>
+
+<span class="cp">#include</span> <span class="cpf">&quot;fake_cpp11.hpp&quot;</span><span class="cp"></span>
+
+<span class="k">class</span> <span class="nc">simple_recv</span> <span class="o">:</span> <span class="k">public</span> <span class="n">proton</span><span class="o">::</span><span class="n">messaging_handler</span> <span class="p">{</span>
+  <span class="k">private</span><span class="o">:</span>
+    <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">url</span><span class="p">;</span>
+    <span class="n">proton</span><span class="o">::</span><span class="n">receiver</span> <span class="n">receiver</span><span class="p">;</span>
+    <span class="kt">uint64_t</span> <span class="n">expected</span><span class="p">;</span>
+    <span class="kt">uint64_t</span> <span class="n">received</span><span class="p">;</span>
+
+  <span class="k">public</span><span class="o">:</span>
+    <span class="n">simple_recv</span><span class="p">(</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="o">&amp;</span><span class="n">s</span><span class="p">,</span> <span class="kt">int</span> <span class="n">c</span><span class="p">)</span> <span class="o">:</span> <span class="n">url</span><span class="p">(</span><span class="n">s</span><span class="p">),</span> <span class="n">expected</span><span class="p">(</span><span class="n">c</span><span class="p">),</span> <span class="n">received</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span> <span class="p">{}</span>
+
+    <span class="kt">void</span> <span class="n">on_container_start</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">container</span> <span class="o">&amp;</span><span class="n">c</span><span class="p">)</span> <span class="n">OVERRIDE</span> <span class="p">{</span>
+        <span class="n">receiver</span> <span class="o">=</span> <span class="n">c</span><span class="p">.</span><span class="n">open_receiver</span><span class="p">(</span><span class="n">url</span><span class="p">);</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;simple_recv listening on &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">url</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+    <span class="p">}</span>
+
+    <span class="kt">void</span> <span class="n">on_message</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">delivery</span> <span class="o">&amp;</span><span class="n">d</span><span class="p">,</span> <span class="n">proton</span><span class="o">::</span><span class="n">message</span> <span class="o">&amp;</span><span class="n">msg</span><span class="p">)</span> <span class="n">OVERRIDE</span> <span class="p">{</span>
+        <span class="k">if</span> <span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">get</span><span class="o">&lt;</span><span class="kt">uint64_t</span><span class="o">&gt;</span><span class="p">(</span><span class="n">msg</span><span class="p">.</span><span class="n">id</span><span class="p">())</span> <span class="o">&lt;</span> <span class="n">received</span><span class="p">)</span> <span class="p">{</span>
+            <span class="k">return</span><span class="p">;</span> <span class="c1">// Ignore duplicate</span>
+        <span class="p">}</span>
+
+        <span class="k">if</span> <span class="p">(</span><span class="n">expected</span> <span class="o">==</span> <span class="mi">0</span> <span class="o">||</span> <span class="n">received</span> <span class="o">&lt;</span> <span class="n">expected</span><span class="p">)</span> <span class="p">{</span>
+            <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="n">msg</span><span class="p">.</span><span class="n">body</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+            <span class="n">received</span><span class="o">++</span><span class="p">;</span>
+
+            <span class="k">if</span> <span class="p">(</span><span class="n">received</span> <span class="o">==</span> <span class="n">expected</span><span class="p">)</span> <span class="p">{</span>
+                <span class="n">d</span><span class="p">.</span><span class="n">receiver</span><span class="p">().</span><span class="n">close</span><span class="p">();</span>
+                <span class="n">d</span><span class="p">.</span><span class="n">connection</span><span class="p">().</span><span class="n">close</span><span class="p">();</span>
+            <span class="p">}</span>
+        <span class="p">}</span>
+    <span class="p">}</span>
+<span class="p">};</span>
+
+<span class="kt">int</span> <span class="nf">main</span><span class="p">(</span><span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">**</span><span class="n">argv</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">address</span><span class="p">(</span><span class="s">&quot;127.0.0.1:5672/examples&quot;</span><span class="p">);</span>
+
+    <span class="kt">int</span> <span class="n">message_count</span> <span class="o">=</span> <span class="mi">100</span><span class="p">;</span>
+    <span class="n">example</span><span class="o">::</span><span class="n">options</span> <span class="n">opts</span><span class="p">(</span><span class="n">argc</span><span class="p">,</span> <span class="n">argv</span><span class="p">);</span>
+
+    <span class="n">opts</span><span class="p">.</span><span class="n">add_value</span><span class="p">(</span><span class="n">address</span><span class="p">,</span> <span class="sc">&#39;a&#39;</span><span class="p">,</span> <span class="s">&quot;address&quot;</span><span class="p">,</span> <span class="s">&quot;connect to and receive from URL&quot;</span><span class="p">,</span> <span class="s">&quot;URL&quot;</span><span class="p">);</span>
+    <span class="n">opts</span><span class="p">.</span><span class="n">add_value</span><span class="p">(</span><span class="n">message_count</span><span class="p">,</span> <span class="sc">&#39;m&#39;</span><span class="p">,</span> <span class="s">&quot;messages&quot;</span><span class="p">,</span> <span class="s">&quot;receive COUNT messages&quot;</span><span class="p">,</span> <span class="s">&quot;COUNT&quot;</span><span class="p">);</span>
+
+    <span class="k">try</span> <span class="p">{</span>
+        <span class="n">opts</span><span class="p">.</span><span class="n">parse</span><span class="p">();</span>
+
+        <span class="n">simple_recv</span> <span class="n">recv</span><span class="p">(</span><span class="n">address</span><span class="p">,</span> <span class="n">message_count</span><span class="p">);</span>
+        <span class="n">proton</span><span class="o">::</span><span class="n">default_container</span><span class="p">(</span><span class="n">recv</span><span class="p">).</span><span class="n">run</span><span class="p">();</span>
+
+        <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">catch</span> <span class="p">(</span><span class="k">const</span> <span class="n">example</span><span class="o">::</span><span class="n">bad_option</span><span class="o">&amp;</span> <span class="n">e</span><span class="p">)</span> <span class="p">{</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="n">opts</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span> <span class="o">&lt;&lt;</span> <span class="n">e</span><span class="p">.</span><span class="n">what</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">catch</span> <span class="p">(</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">exception</span><span class="o">&amp;</span> <span class="n">e</span><span class="p">)</span> <span class="p">{</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">cerr</span> <span class="o">&lt;&lt;</span> <span class="n">e</span><span class="p">.</span><span class="n">what</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+    <span class="p">}</span>
+
+    <span class="k">return</span> <span class="mi">1</span><span class="p">;</span>
+<span class="p">}</span>
+</pre></div>
+
+<p><a href="simple_recv.cpp">Download this file</a></p>

http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/input/releases/qpid-proton-0.13.0/proton/cpp/examples/simple_send.cpp
----------------------------------------------------------------------
diff --git a/input/releases/qpid-proton-0.13.0/proton/cpp/examples/simple_send.cpp b/input/releases/qpid-proton-0.13.0/proton/cpp/examples/simple_send.cpp
new file mode 100644
index 0000000..3ce72b4
--- /dev/null
+++ b/input/releases/qpid-proton-0.13.0/proton/cpp/examples/simple_send.cpp
@@ -0,0 +1,100 @@
+/*
+ *
+ * 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.
+ *
+ */
+
+#include "options.hpp"
+
+#include <proton/connection.hpp>
+#include <proton/default_container.hpp>
+#include <proton/messaging_handler.hpp>
+#include <proton/tracker.hpp>
+#include <proton/value.hpp>
+
+#include <iostream>
+#include <map>
+
+#include "fake_cpp11.hpp"
+
+class simple_send : public proton::messaging_handler {
+  private:
+    std::string url;
+    proton::sender sender;
+    int sent;
+    int confirmed;
+    int total;
+
+  public:
+    simple_send(const std::string &s, int c) : url(s), sent(0), confirmed(0), total(c) {}
+
+    void on_container_start(proton::container &c) OVERRIDE {
+        sender = c.open_sender(url);
+    }
+
+    void on_sendable(proton::sender &s) OVERRIDE {
+        while (s.credit() && sent < total) {
+            proton::message msg;
+            std::map<std::string, int> m;
+            m["sequence"] = sent + 1;
+
+            msg.id(sent + 1);
+            msg.body(m);
+
+            s.send(msg);
+            sent++;
+        }
+    }
+
+    void on_tracker_accept(proton::tracker &t) OVERRIDE {
+        confirmed++;
+
+        if (confirmed == total) {
+            std::cout << "all messages confirmed" << std::endl;
+            t.connection().close();
+        }
+    }
+
+    void on_transport_close(proton::transport &) OVERRIDE {
+        sent = confirmed;
+    }
+};
+
+int main(int argc, char **argv) {
+    std::string address("127.0.0.1:5672/examples");
+    int message_count = 100;
+    example::options opts(argc, argv);
+
+    opts.add_value(address, 'a', "address", "connect and send to URL", "URL");
+    opts.add_value(message_count, 'm', "messages", "send COUNT messages", "COUNT");
+
+    try {
+        opts.parse();
+
+        simple_send send(address, message_count);
+        proton::default_container(send).run();
+
+        return 0;
+    } catch (const example::bad_option& e) {
+        std::cout << opts << std::endl << e.what() << std::endl;
+    } catch (const std::exception& e) {
+        std::cerr << e.what() << std::endl;
+    }
+
+    return 1;
+}

http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/input/releases/qpid-proton-0.13.0/proton/cpp/examples/simple_send.cpp.html.in
----------------------------------------------------------------------
diff --git a/input/releases/qpid-proton-0.13.0/proton/cpp/examples/simple_send.cpp.html.in b/input/releases/qpid-proton-0.13.0/proton/cpp/examples/simple_send.cpp.html.in
new file mode 100644
index 0000000..ea1805c
--- /dev/null
+++ b/input/releases/qpid-proton-0.13.0/proton/cpp/examples/simple_send.cpp.html.in
@@ -0,0 +1,84 @@
+
+<h1>simple_send.cpp</h1>
+<div class="highlight"><pre><span></span><span class="cp">#include</span> <span class="cpf">&quot;options.hpp&quot;</span><span class="cp"></span>
+
+<span class="cp">#include</span> <span class="cpf">&lt;proton/connection.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/default_container.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/messaging_handler.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/tracker.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/value.hpp&gt;</span><span class="cp"></span>
+
+<span class="cp">#include</span> <span class="cpf">&lt;iostream&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;map&gt;</span><span class="cp"></span>
+
+<span class="cp">#include</span> <span class="cpf">&quot;fake_cpp11.hpp&quot;</span><span class="cp"></span>
+
+<span class="k">class</span> <span class="nc">simple_send</span> <span class="o">:</span> <span class="k">public</span> <span class="n">proton</span><span class="o">::</span><span class="n">messaging_handler</span> <span class="p">{</span>
+  <span class="k">private</span><span class="o">:</span>
+    <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">url</span><span class="p">;</span>
+    <span class="n">proton</span><span class="o">::</span><span class="n">sender</span> <span class="n">sender</span><span class="p">;</span>
+    <span class="kt">int</span> <span class="n">sent</span><span class="p">;</span>
+    <span class="kt">int</span> <span class="n">confirmed</span><span class="p">;</span>
+    <span class="kt">int</span> <span class="n">total</span><span class="p">;</span>
+
+  <span class="k">public</span><span class="o">:</span>
+    <span class="n">simple_send</span><span class="p">(</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="o">&amp;</span><span class="n">s</span><span class="p">,</span> <span class="kt">int</span> <span class="n">c</span><span class="p">)</span> <span class="o">:</span> <span class="n">url</span><span class="p">(</span><span class="n">s</span><span class="p">),</span> <span class="n">sent</span><span class="p">(</span><span class="mi">0</span><span class="p">),</span> <span class="n">confirmed</span><span class="p">(</span><span class="mi">0</span><span class="p">),</span> <span class="n">total</span><span class="p">(</span><span class="n">c</span><span class="p">)</span> <span class="p">{}</span>
+
+    <span class="kt">void</span> <span class="n">on_container_start</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">container</span> <span class="o">&amp;</span><span class="n">c</span><span class="p">)</span> <span class="n">OVERRIDE</span> <span class="p">{</span>
+        <span class="n">sender</span> <span class="o">=</span> <span class="n">c</span><span class="p">.</span><span class="n">open_sender</span><span class="p">(</span><span class="n">url</span><span class="p">);</span>
+    <span class="p">}</span>
+
+    <span class="kt">void</span> <span class="n">on_sendable</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">sender</span> <span class="o">&amp;</span><span class="n">s</span><span class="p">)</span> <span class="n">OVERRIDE</span> <span class="p">{</span>
+        <span class="k">while</span> <span class="p">(</span><span class="n">s</span><span class="p">.</span><span class="n">credit</span><span class="p">()</span> <span class="o">&amp;&amp;</span> <span class="n">sent</span> <span class="o">&lt;</span> <span class="n">total</span><span class="p">)</span> <span class="p">{</span>
+            <span class="n">proton</span><span class="o">::</span><span class="n">message</span> <span class="n">msg</span><span class="p">;</span>
+            <span class="n">std</span><span class="o">::</span><span class="n">map</span><span class="o">&lt;</span><span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="p">,</span> <span class="kt">int</span><span class="o">&gt;</span> <span class="n">m</span><span class="p">;</span>
+            <span class="n">m</span><span class="p">[</span><span class="s">&quot;sequence&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">sent</span> <span class="o">+</span> <span class="mi">1</span><span class="p">;</span>
+
+            <span class="n">msg</span><span class="p">.</span><span class="n">id</span><span class="p">(</span><span class="n">sent</span> <span class="o">+</span> <span class="mi">1</span><span class="p">);</span>
+            <span class="n">msg</span><span class="p">.</span><span class="n">body</span><span class="p">(</span><span class="n">m</span><span class="p">);</span>
+
+            <span class="n">s</span><span class="p">.</span><span class="n">send</span><span class="p">(</span><span class="n">msg</span><span class="p">);</span>
+            <span class="n">sent</span><span class="o">++</span><span class="p">;</span>
+        <span class="p">}</span>
+    <span class="p">}</span>
+
+    <span class="kt">void</span> <span class="n">on_tracker_accept</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">tracker</span> <span class="o">&amp;</span><span class="n">t</span><span class="p">)</span> <span class="n">OVERRIDE</span> <span class="p">{</span>
+        <span class="n">confirmed</span><span class="o">++</span><span class="p">;</span>
+
+        <span class="k">if</span> <span class="p">(</span><span class="n">confirmed</span> <span class="o">==</span> <span class="n">total</span><span class="p">)</span> <span class="p">{</span>
+            <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;all messages confirmed&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+            <span class="n">t</span><span class="p">.</span><span class="n">connection</span><span class="p">().</span><span class="n">close</span><span class="p">();</span>
+        <span class="p">}</span>
+    <span class="p">}</span>
+
+    <span class="kt">void</span> <span class="n">on_transport_close</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">transport</span> <span class="o">&amp;</span><span class="p">)</span> <span class="n">OVERRIDE</span> <span class="p">{</span>
+        <span class="n">sent</span> <span class="o">=</span> <span class="n">confirmed</span><span class="p">;</span>
+    <span class="p">}</span>
+<span class="p">};</span>
+
+<span class="kt">int</span> <span class="nf">main</span><span class="p">(</span><span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">**</span><span class="n">argv</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">address</span><span class="p">(</span><span class="s">&quot;127.0.0.1:5672/examples&quot;</span><span class="p">);</span>
+    <span class="kt">int</span> <span class="n">message_count</span> <span class="o">=</span> <span class="mi">100</span><span class="p">;</span>
+    <span class="n">example</span><span class="o">::</span><span class="n">options</span> <span class="n">opts</span><span class="p">(</span><span class="n">argc</span><span class="p">,</span> <span class="n">argv</span><span class="p">);</span>
+
+    <span class="n">opts</span><span class="p">.</span><span class="n">add_value</span><span class="p">(</span><span class="n">address</span><span class="p">,</span> <span class="sc">&#39;a&#39;</span><span class="p">,</span> <span class="s">&quot;address&quot;</span><span class="p">,</span> <span class="s">&quot;connect and send to URL&quot;</span><span class="p">,</span> <span class="s">&quot;URL&quot;</span><span class="p">);</span>
+    <span class="n">opts</span><span class="p">.</span><span class="n">add_value</span><span class="p">(</span><span class="n">message_count</span><span class="p">,</span> <span class="sc">&#39;m&#39;</span><span class="p">,</span> <span class="s">&quot;messages&quot;</span><span class="p">,</span> <span class="s">&quot;send COUNT messages&quot;</span><span class="p">,</span> <span class="s">&quot;COUNT&quot;</span><span class="p">);</span>
+
+    <span class="k">try</span> <span class="p">{</span>
+        <span class="n">opts</span><span class="p">.</span><span class="n">parse</span><span class="p">();</span>
+
+        <span class="n">simple_send</span> <span class="n">send</span><span class="p">(</span><span class="n">address</span><span class="p">,</span> <span class="n">message_count</span><span class="p">);</span>
+        <span class="n">proton</span><span class="o">::</span><span class="n">default_container</span><span class="p">(</span><span class="n">send</span><span class="p">).</span><span class="n">run</span><span class="p">();</span>
+
+        <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">catch</span> <span class="p">(</span><span class="k">const</span> <span class="n">example</span><span class="o">::</span><span class="n">bad_option</span><span class="o">&amp;</span> <span class="n">e</span><span class="p">)</span> <span class="p">{</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="n">opts</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span> <span class="o">&lt;&lt;</span> <span class="n">e</span><span class="p">.</span><span class="n">what</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">catch</span> <span class="p">(</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">exception</span><span class="o">&amp;</span> <span class="n">e</span><span class="p">)</span> <span class="p">{</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">cerr</span> <span class="o">&lt;&lt;</span> <span class="n">e</span><span class="p">.</span><span class="n">what</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+    <span class="p">}</span>
+
+    <span class="k">return</span> <span class="mi">1</span><span class="p">;</span>
+<span class="p">}</span>
+</pre></div>
+
+<p><a href="simple_send.cpp">Download this file</a></p>

http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/input/releases/qpid-proton-0.13.0/proton/cpp/examples/ssl.cpp
----------------------------------------------------------------------
diff --git a/input/releases/qpid-proton-0.13.0/proton/cpp/examples/ssl.cpp b/input/releases/qpid-proton-0.13.0/proton/cpp/examples/ssl.cpp
new file mode 100644
index 0000000..91a4230
--- /dev/null
+++ b/input/releases/qpid-proton-0.13.0/proton/cpp/examples/ssl.cpp
@@ -0,0 +1,179 @@
+/*
+ *
+ * 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.
+ *
+ */
+
+#include <proton/connection_options.hpp>
+#include <proton/connection.hpp>
+#include <proton/default_container.hpp>
+#include <proton/messaging_handler.hpp>
+#include <proton/ssl.hpp>
+#include <proton/tracker.hpp>
+#include <proton/transport.hpp>
+
+#include <iostream>
+
+#include "fake_cpp11.hpp"
+
+using proton::connection_options;
+using proton::ssl_client_options;
+using proton::ssl_server_options;
+using proton::ssl_certificate;
+
+// Helper functions defined below.
+bool using_OpenSSL();
+std::string platform_CA(const std::string &base_name);
+ssl_certificate platform_certificate(const std::string &base_name, const std::string &passwd);
+static std::string cert_directory;
+std::string find_CN(const std::string &);
+
+
+struct server_handler : public proton::messaging_handler {
+    std::string url;
+
+    void on_connection_open(proton::connection &c) OVERRIDE {
+        std::cout << "Inbound server connection connected via SSL.  Protocol: " <<
+            c.transport().ssl().protocol() << std::endl;
+        c.container().stop_listening(url);
+    }
+
+    void on_message(proton::delivery &, proton::message &m) OVERRIDE {
+        std::cout << m.body() << std::endl;
+    }
+};
+
+
+class hello_world_direct : public proton::messaging_handler {
+  private:
+    std::string url;
+    server_handler s_handler;
+
+  public:
+    hello_world_direct(const std::string& u) : url(u) {}
+
+    void on_container_start(proton::container &c) OVERRIDE {
+        // Configure listener.  Details vary by platform.
+        ssl_certificate server_cert = platform_certificate("tserver", "tserverpw");
+        ssl_server_options ssl_srv(server_cert);
+        connection_options server_opts;
+        server_opts.ssl_server_options(ssl_srv).handler(s_handler);
+        c.server_connection_options(server_opts);
+
+        // Configure client with a Certificate Authority database populated with the server's self signed certificate.
+        // Since the test certifcate's credentials are unlikely to match this host's name, downgrade the verification
+        // from VERIFY_PEER_NAME to VERIFY_PEER.
+        connection_options client_opts;
+        ssl_client_options ssl_cli(platform_CA("tserver"), proton::ssl::VERIFY_PEER);
+        client_opts.ssl_client_options(ssl_cli);
+        c.client_connection_options(client_opts);
+
+        s_handler.url = url;
+        c.listen(url);
+        c.open_sender(url);
+    }
+
+    void on_connection_open(proton::connection &c) OVERRIDE {
+        std::string subject = c.transport().ssl().remote_subject();
+        std::cout << "Outgoing client connection connected via SSL.  Server certificate identity " <<
+            find_CN(subject) << std::endl;
+    }
+
+    void on_sendable(proton::sender &s) OVERRIDE {
+        proton::message m;
+        m.body("Hello World!");
+        s.send(m);
+        s.close();
+    }
+
+    void on_tracker_accept(proton::tracker &t) OVERRIDE {
+        // All done.
+        t.connection().close();
+    }
+};
+
+int main(int argc, char **argv) {
+    try {
+        // Pick an "unusual" port since we are going to be talking to ourselves, not a broker.
+        // Note the use of "amqps" as the URL scheme to denote a TLS/SSL connection.
+        std::string url = argc > 1 ? argv[1] : "amqps://127.0.0.1:8888/examples";
+        // Location of certificates and private key information:
+        if (argc > 2) {
+            cert_directory = argv[2];
+            size_t sz = cert_directory.size();
+            if (sz && cert_directory[sz -1] != '/')
+                cert_directory.append("/");
+        }
+        else cert_directory = "ssl_certs/";
+
+        hello_world_direct hwd(url);
+        proton::default_container(hwd).run();
+        return 0;
+    } catch (const std::exception& e) {
+        std::cerr << e.what() << std::endl;
+    }
+    return 1;
+}
+
+
+bool using_OpenSSL() {
+    // Current defaults.
+#if defined(WIN32)
+    return false;
+#else
+    return true;
+#endif
+}
+
+ssl_certificate platform_certificate(const std::string &base_name, const std::string &passwd) {
+    if (using_OpenSSL()) {
+        // The first argument will be the name of the file containing the public certificate, the
+        // second argument will be the name of the file containing the private key.
+        return ssl_certificate(cert_directory + base_name + "-certificate.pem",
+                               cert_directory + base_name + "-private-key.pem", passwd);
+    }
+    else {
+        // Windows SChannel
+        // The first argument will be the database or store that contains one or more complete certificates
+        // (public and private data).  The second will be an optional name of the certificate in the store
+        // (not used in this example with one certificate per store).
+        return ssl_certificate(cert_directory + base_name + "-full.p12", "", passwd);
+    }
+}
+
+std::string platform_CA(const std::string &base_name) {
+    if (using_OpenSSL()) {
+        // In this simple example with self-signed certificates, the peer's certificate is the CA database.
+        return cert_directory + base_name + "-certificate.pem";
+    }
+    else {
+        // Windows SChannel.  Use a pkcs#12 file with just the peer's public certificate information.
+        return cert_directory + base_name + "-certificate.p12";
+    }
+}
+
+std::string find_CN(const std::string &subject) {
+    // The subject string is returned with different whitespace and component ordering between platforms.
+    // Here we just return the common name by searching for "CN=...." in the subject, knowing that
+    // the test certificates do not contain any escaped characters.
+    size_t pos = subject.find("CN=");
+    if (pos == std::string::npos) throw std::runtime_error("No common name in certificate subject");
+    std::string cn = subject.substr(pos);
+    pos = cn.find(',');
+    return pos == std::string::npos ? cn : cn.substr(0, pos);
+}

http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/input/releases/qpid-proton-0.13.0/proton/cpp/examples/ssl.cpp.html.in
----------------------------------------------------------------------
diff --git a/input/releases/qpid-proton-0.13.0/proton/cpp/examples/ssl.cpp.html.in b/input/releases/qpid-proton-0.13.0/proton/cpp/examples/ssl.cpp.html.in
new file mode 100644
index 0000000..a3eba3c
--- /dev/null
+++ b/input/releases/qpid-proton-0.13.0/proton/cpp/examples/ssl.cpp.html.in
@@ -0,0 +1,163 @@
+
+<h1>ssl.cpp</h1>
+<div class="highlight"><pre><span></span><span class="cp">#include</span> <span class="cpf">&lt;proton/connection_options.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/connection.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/default_container.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/messaging_handler.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/ssl.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/tracker.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/transport.hpp&gt;</span><span class="cp"></span>
+
+<span class="cp">#include</span> <span class="cpf">&lt;iostream&gt;</span><span class="cp"></span>
+
+<span class="cp">#include</span> <span class="cpf">&quot;fake_cpp11.hpp&quot;</span><span class="cp"></span>
+
+<span class="k">using</span> <span class="n">proton</span><span class="o">::</span><span class="n">connection_options</span><span class="p">;</span>
+<span class="k">using</span> <span class="n">proton</span><span class="o">::</span><span class="n">ssl_client_options</span><span class="p">;</span>
+<span class="k">using</span> <span class="n">proton</span><span class="o">::</span><span class="n">ssl_server_options</span><span class="p">;</span>
+<span class="k">using</span> <span class="n">proton</span><span class="o">::</span><span class="n">ssl_certificate</span><span class="p">;</span>
+
+<span class="c1">// Helper functions defined below.</span>
+<span class="kt">bool</span> <span class="nf">using_OpenSSL</span><span class="p">();</span>
+<span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">platform_CA</span><span class="p">(</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="o">&amp;</span><span class="n">base_name</span><span class="p">);</span>
+<span class="n">ssl_certificate</span> <span class="nf">platform_certificate</span><span class="p">(</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="o">&amp;</span><span class="n">base_name</span><span class="p">,</span> <span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="o">&amp;</span><span class="n">passwd</span><span class="p">);</span>
+<span class="k">static</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">cert_directory</span><span class="p">;</span>
+<span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">find_CN</span><span class="p">(</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="o">&amp;</span><span class="p">);</span>
+
+
+<span class="k">struct</span> <span class="nl">server_handler</span> <span class="p">:</span> <span class="k">public</span> <span class="n">proton</span><span class="o">::</span><span class="n">messaging_handler</span> <span class="p">{</span>
+    <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">url</span><span class="p">;</span>
+
+    <span class="kt">void</span> <span class="nf">on_connection_open</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">connection</span> <span class="o">&amp;</span><span class="n">c</span><span class="p">)</span> <span class="n">OVERRIDE</span> <span class="p">{</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Inbound server connection connected via SSL.  Protocol: &quot;</span> <span class="o">&lt;&lt;</span>
+            <span class="n">c</span><span class="p">.</span><span class="n">transport</span><span class="p">().</span><span class="n">ssl</span><span class="p">().</span><span class="n">protocol</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+        <span class="n">c</span><span class="p">.</span><span class="n">container</span><span class="p">().</span><span class="n">stop_listening</span><span class="p">(</span><span class="n">url</span><span class="p">);</span>
+    <span class="p">}</span>
+
+    <span class="kt">void</span> <span class="nf">on_message</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">delivery</span> <span class="o">&amp;</span><span class="p">,</span> <span class="n">proton</span><span class="o">::</span><span class="n">message</span> <span class="o">&amp;</span><span class="n">m</span><span class="p">)</span> <span class="n">OVERRIDE</span> <span class="p">{</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="n">m</span><span class="p">.</span><span class="n">body</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+    <span class="p">}</span>
+<span class="p">};</span>
+
+
+<span class="k">class</span> <span class="nc">hello_world_direct</span> <span class="o">:</span> <span class="k">public</span> <span class="n">proton</span><span class="o">::</span><span class="n">messaging_handler</span> <span class="p">{</span>
+  <span class="k">private</span><span class="o">:</span>
+    <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">url</span><span class="p">;</span>
+    <span class="n">server_handler</span> <span class="n">s_handler</span><span class="p">;</span>
+
+  <span class="k">public</span><span class="o">:</span>
+    <span class="n">hello_world_direct</span><span class="p">(</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="o">&amp;</span> <span class="n">u</span><span class="p">)</span> <span class="o">:</span> <span class="n">url</span><span class="p">(</span><span class="n">u</span><span class="p">)</span> <span class="p">{}</span>
+
+    <span class="kt">void</span> <span class="n">on_container_start</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">container</span> <span class="o">&amp;</span><span class="n">c</span><span class="p">)</span> <span class="n">OVERRIDE</span> <span class="p">{</span>
+        <span class="c1">// Configure listener.  Details vary by platform.</span>
+        <span class="n">ssl_certificate</span> <span class="n">server_cert</span> <span class="o">=</span> <span class="n">platform_certificate</span><span class="p">(</span><span class="s">&quot;tserver&quot;</span><span class="p">,</span> <span class="s">&quot;tserverpw&quot;</span><span class="p">);</span>
+        <span class="n">ssl_server_options</span> <span class="nf">ssl_srv</span><span class="p">(</span><span class="n">server_cert</span><span class="p">);</span>
+        <span class="n">connection_options</span> <span class="n">server_opts</span><span class="p">;</span>
+        <span class="n">server_opts</span><span class="p">.</span><span class="n">ssl_server_options</span><span class="p">(</span><span class="n">ssl_srv</span><span class="p">).</span><span class="n">handler</span><span class="p">(</span><span class="n">s_handler</span><span class="p">);</span>
+        <span class="n">c</span><span class="p">.</span><span class="n">server_connection_options</span><span class="p">(</span><span class="n">server_opts</span><span class="p">);</span>
+
+        <span class="c1">// Configure client with a Certificate Authority database populated with the server&#39;s self signed certificate.</span>
+        <span class="c1">// Since the test certifcate&#39;s credentials are unlikely to match this host&#39;s name, downgrade the verification</span>
+        <span class="c1">// from VERIFY_PEER_NAME to VERIFY_PEER.</span>
+        <span class="n">connection_options</span> <span class="n">client_opts</span><span class="p">;</span>
+        <span class="n">ssl_client_options</span> <span class="nf">ssl_cli</span><span class="p">(</span><span class="n">platform_CA</span><span class="p">(</span><span class="s">&quot;tserver&quot;</span><span class="p">),</span> <span class="n">proton</span><span class="o">::</span><span class="n">ssl</span><span class="o">::</span><span class="n">VERIFY_PEER</span><span class="p">);</span>
+        <span class="n">client_opts</span><span class="p">.</span><span class="n">ssl_client_options</span><span class="p">(</span><span class="n">ssl_cli</span><span class="p">);</span>
+        <span class="n">c</span><span class="p">.</span><span class="n">client_connection_options</span><span class="p">(</span><span class="n">client_opts</span><span class="p">);</span>
+
+        <span class="n">s_handler</span><span class="p">.</span><span class="n">url</span> <span class="o">=</span> <span class="n">url</span><span class="p">;</span>
+        <span class="n">c</span><span class="p">.</span><span class="n">listen</span><span class="p">(</span><span class="n">url</span><span class="p">);</span>
+        <span class="n">c</span><span class="p">.</span><span class="n">open_sender</span><span class="p">(</span><span class="n">url</span><span class="p">);</span>
+    <span class="p">}</span>
+
+    <span class="kt">void</span> <span class="n">on_connection_open</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">connection</span> <span class="o">&amp;</span><span class="n">c</span><span class="p">)</span> <span class="n">OVERRIDE</span> <span class="p">{</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">subject</span> <span class="o">=</span> <span class="n">c</span><span class="p">.</span><span class="n">transport</span><span class="p">().</span><span class="n">ssl</span><span class="p">().</span><span class="n">remote_subject</span><span class="p">();</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Outgoing client connection connected via SSL.  Server certificate identity &quot;</span> <span class="o">&lt;&lt;</span>
+            <span class="n">find_CN</span><span class="p">(</span><span class="n">subject</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+    <span class="p">}</span>
+
+    <span class="kt">void</span> <span class="n">on_sendable</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">sender</span> <span class="o">&amp;</span><span class="n">s</span><span class="p">)</span> <span class="n">OVERRIDE</span> <span class="p">{</span>
+        <span class="n">proton</span><span class="o">::</span><span class="n">message</span> <span class="n">m</span><span class="p">;</span>
+        <span class="n">m</span><span class="p">.</span><span class="n">body</span><span class="p">(</span><span class="s">&quot;Hello World!&quot;</span><span class="p">);</span>
+        <span class="n">s</span><span class="p">.</span><span class="n">send</span><span class="p">(</span><span class="n">m</span><span class="p">);</span>
+        <span class="n">s</span><span class="p">.</span><span class="n">close</span><span class="p">();</span>
+    <span class="p">}</span>
+
+    <span class="kt">void</span> <span class="n">on_tracker_accept</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">tracker</span> <span class="o">&amp;</span><span class="n">t</span><span class="p">)</span> <span class="n">OVERRIDE</span> <span class="p">{</span>
+        <span class="c1">// All done.</span>
+        <span class="n">t</span><span class="p">.</span><span class="n">connection</span><span class="p">().</span><span class="n">close</span><span class="p">();</span>
+    <span class="p">}</span>
+<span class="p">};</span>
+
+<span class="kt">int</span> <span class="nf">main</span><span class="p">(</span><span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">**</span><span class="n">argv</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">try</span> <span class="p">{</span>
+        <span class="c1">// Pick an &quot;unusual&quot; port since we are going to be talking to ourselves, not a broker.</span>
+        <span class="c1">// Note the use of &quot;amqps&quot; as the URL scheme to denote a TLS/SSL connection.</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">url</span> <span class="o">=</span> <span class="n">argc</span> <span class="o">&gt;</span> <span class="mi">1</span> <span class="o">?</span> <span class="n">argv</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">:</span> <span class="s">&quot;amqps://127.0.0.1:8888/examples&quot;</span><span class="p">;</span>
+        <span class="c1">// Location of certificates and private key information:</span>
+        <span class="k">if</span> <span class="p">(</span><span class="n">argc</span> <span class="o">&gt;</span> <span class="mi">2</span><span class="p">)</span> <span class="p">{</span>
+            <span class="n">cert_directory</span> <span class="o">=</span> <span class="n">argv</span><span class="p">[</span><span class="mi">2</span><span class="p">];</span>
+            <span class="kt">size_t</span> <span class="n">sz</span> <span class="o">=</span> <span class="n">cert_directory</span><span class="p">.</span><span class="n">size</span><span class="p">();</span>
+            <span class="k">if</span> <span class="p">(</span><span class="n">sz</span> <span class="o">&amp;&amp;</span> <span class="n">cert_directory</span><span class="p">[</span><span class="n">sz</span> <span class="o">-</span><span class="mi">1</span><span class="p">]</span> <span class="o">!=</span> <span class="sc">&#39;/&#39;</span><span class="p">)</span>
+                <span class="n">cert_directory</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="s">&quot;/&quot;</span><span class="p">);</span>
+        <span class="p">}</span>
+        <span class="k">else</span> <span class="n">cert_directory</span> <span class="o">=</span> <span class="s">&quot;ssl_certs/&quot;</span><span class="p">;</span>
+
+        <span class="n">hello_world_direct</span> <span class="n">hwd</span><span class="p">(</span><span class="n">url</span><span class="p">);</span>
+        <span class="n">proton</span><span class="o">::</span><span class="n">default_container</span><span class="p">(</span><span class="n">hwd</span><span class="p">).</span><span class="n">run</span><span class="p">();</span>
+        <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">catch</span> <span class="p">(</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">exception</span><span class="o">&amp;</span> <span class="n">e</span><span class="p">)</span> <span class="p">{</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">cerr</span> <span class="o">&lt;&lt;</span> <span class="n">e</span><span class="p">.</span><span class="n">what</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+    <span class="p">}</span>
+    <span class="k">return</span> <span class="mi">1</span><span class="p">;</span>
+<span class="p">}</span>
+
+
+<span class="kt">bool</span> <span class="nf">using_OpenSSL</span><span class="p">()</span> <span class="p">{</span>
+    <span class="c1">// Current defaults.</span>
+<span class="cp">#if defined(WIN32)</span>
+    <span class="k">return</span> <span class="nb">false</span><span class="p">;</span>
+<span class="cp">#else</span>
+    <span class="k">return</span> <span class="nb">true</span><span class="p">;</span>
+<span class="cp">#endif</span>
+<span class="p">}</span>
+
+<span class="n">ssl_certificate</span> <span class="nf">platform_certificate</span><span class="p">(</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="o">&amp;</span><span class="n">base_name</span><span class="p">,</span> <span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="o">&amp;</span><span class="n">passwd</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">using_OpenSSL</span><span class="p">())</span> <span class="p">{</span>
+        <span class="c1">// The first argument will be the name of the file containing the public certificate, the</span>
+        <span class="c1">// second argument will be the name of the file containing the private key.</span>
+        <span class="k">return</span> <span class="n">ssl_certificate</span><span class="p">(</span><span class="n">cert_directory</span> <span class="o">+</span> <span class="n">base_name</span> <span class="o">+</span> <span class="s">&quot;-certificate.pem&quot;</span><span class="p">,</span>
+                               <span class="n">cert_directory</span> <span class="o">+</span> <span class="n">base_name</span> <span class="o">+</span> <span class="s">&quot;-private-key.pem&quot;</span><span class="p">,</span> <span class="n">passwd</span><span class="p">);</span>
+    <span class="p">}</span>
+    <span class="k">else</span> <span class="p">{</span>
+        <span class="c1">// Windows SChannel</span>
+        <span class="c1">// The first argument will be the database or store that contains one or more complete certificates</span>
+        <span class="c1">// (public and private data).  The second will be an optional name of the certificate in the store</span>
+        <span class="c1">// (not used in this example with one certificate per store).</span>
+        <span class="k">return</span> <span class="n">ssl_certificate</span><span class="p">(</span><span class="n">cert_directory</span> <span class="o">+</span> <span class="n">base_name</span> <span class="o">+</span> <span class="s">&quot;-full.p12&quot;</span><span class="p">,</span> <span class="s">&quot;&quot;</span><span class="p">,</span> <span class="n">passwd</span><span class="p">);</span>
+    <span class="p">}</span>
+<span class="p">}</span>
+
+<span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">platform_CA</span><span class="p">(</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="o">&amp;</span><span class="n">base_name</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">using_OpenSSL</span><span class="p">())</span> <span class="p">{</span>
+        <span class="c1">// In this simple example with self-signed certificates, the peer&#39;s certificate is the CA database.</span>
+        <span class="k">return</span> <span class="n">cert_directory</span> <span class="o">+</span> <span class="n">base_name</span> <span class="o">+</span> <span class="s">&quot;-certificate.pem&quot;</span><span class="p">;</span>
+    <span class="p">}</span>
+    <span class="k">else</span> <span class="p">{</span>
+        <span class="c1">// Windows SChannel.  Use a pkcs#12 file with just the peer&#39;s public certificate information.</span>
+        <span class="k">return</span> <span class="n">cert_directory</span> <span class="o">+</span> <span class="n">base_name</span> <span class="o">+</span> <span class="s">&quot;-certificate.p12&quot;</span><span class="p">;</span>
+    <span class="p">}</span>
+<span class="p">}</span>
+
+<span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">find_CN</span><span class="p">(</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="o">&amp;</span><span class="n">subject</span><span class="p">)</span> <span class="p">{</span>
+    <span class="c1">// The subject string is returned with different whitespace and component ordering between platforms.</span>
+    <span class="c1">// Here we just return the common name by searching for &quot;CN=....&quot; in the subject, knowing that</span>
+    <span class="c1">// the test certificates do not contain any escaped characters.</span>
+    <span class="kt">size_t</span> <span class="n">pos</span> <span class="o">=</span> <span class="n">subject</span><span class="p">.</span><span class="n">find</span><span class="p">(</span><span class="s">&quot;CN=&quot;</span><span class="p">);</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">pos</span> <span class="o">==</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="o">::</span><span class="n">npos</span><span class="p">)</span> <span class="k">throw</span> <span class="n">std</span><span class="o">::</span><span class="n">runtime_error</span><span class="p">(</span><span class="s">&quot;No common name in certificate subject&quot;</span><span class="p">);</span>
+    <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">cn</span> <span class="o">=</span> <span class="n">subject</span><span class="p">.</span><span class="n">substr</span><span class="p">(</span><span class="n">pos</span><span class="p">);</span>
+    <span class="n">pos</span> <span class="o">=</span> <span class="n">cn</span><span class="p">.</span><span class="n">find</span><span class="p">(</span><span class="sc">&#39;,&#39;</span><span class="p">);</span>
+    <span class="k">return</span> <span class="n">pos</span> <span class="o">==</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="o">::</span><span class="n">npos</span> <span class="o">?</span> <span class="nl">cn</span> <span class="p">:</span> <span class="n">cn</span><span class="p">.</span><span class="n">substr</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">pos</span><span class="p">);</span>
+<span class="p">}</span>
+</pre></div>
+
+<p><a href="ssl.cpp">Download this file</a></p>

http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/input/releases/qpid-proton-0.13.0/proton/cpp/examples/ssl_client_cert.cpp
----------------------------------------------------------------------
diff --git a/input/releases/qpid-proton-0.13.0/proton/cpp/examples/ssl_client_cert.cpp b/input/releases/qpid-proton-0.13.0/proton/cpp/examples/ssl_client_cert.cpp
new file mode 100644
index 0000000..42b6593
--- /dev/null
+++ b/input/releases/qpid-proton-0.13.0/proton/cpp/examples/ssl_client_cert.cpp
@@ -0,0 +1,193 @@
+/*
+ *
+ * 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.
+ *
+ */
+
+#include <proton/connection.hpp>
+#include <proton/connection_options.hpp>
+#include <proton/default_container.hpp>
+#include <proton/messaging_handler.hpp>
+#include <proton/sasl.hpp>
+#include <proton/ssl.hpp>
+#include <proton/tracker.hpp>
+#include <proton/transport.hpp>
+
+#include <iostream>
+
+#include "fake_cpp11.hpp"
+
+using proton::connection_options;
+using proton::ssl_client_options;
+using proton::ssl_server_options;
+using proton::ssl_certificate;
+using proton::sasl;
+
+// Helper functions defined below.
+bool using_OpenSSL();
+std::string platform_CA(const std::string &base_name);
+ssl_certificate platform_certificate(const std::string &base_name, const std::string &passwd);
+static std::string cert_directory;
+static std::string find_CN(const std::string &);
+
+
+struct server_handler : public proton::messaging_handler {
+    proton::listener listener;
+
+    void on_connection_open(proton::connection &c) OVERRIDE {
+        std::cout << "Inbound server connection connected via SSL.  Protocol: " <<
+            c.transport().ssl().protocol() << std::endl;
+        if (c.transport().sasl().outcome() == sasl::OK) {
+            std::string subject = c.transport().ssl().remote_subject();
+            std::cout << "Inbound client certificate identity " << find_CN(subject) << std::endl;
+        }
+        else {
+            std::cout << "Inbound client authentication failed" <<std::endl;
+            c.close();
+        }
+        listener.stop();
+    }
+
+    void on_message(proton::delivery &, proton::message &m) OVERRIDE {
+        std::cout << m.body() << std::endl;
+    }
+};
+
+
+class hello_world_direct : public proton::messaging_handler {
+  private:
+    std::string url;
+    server_handler s_handler;
+
+  public:
+    hello_world_direct(const std::string& u) : url(u) {}
+
+    void on_container_start(proton::container &c) OVERRIDE {
+        // Configure listener.  Details vary by platform.
+        ssl_certificate server_cert = platform_certificate("tserver", "tserverpw");
+        std::string client_CA = platform_CA("tclient");
+        // Specify an SSL domain with CA's for client certificate verification.
+        ssl_server_options srv_ssl(server_cert, client_CA);
+        connection_options server_opts;
+        server_opts.ssl_server_options(srv_ssl).handler(s_handler);
+        server_opts.sasl_allowed_mechs("EXTERNAL");
+        c.server_connection_options(server_opts);
+
+        // Configure client.
+        ssl_certificate client_cert = platform_certificate("tclient", "tclientpw");
+        std::string server_CA = platform_CA("tserver");
+        // Since the test certifcate's credentials are unlikely to match this host's name, downgrade the verification
+        // from VERIFY_PEER_NAME to VERIFY_PEER.
+        ssl_client_options ssl_cli(client_cert, server_CA, proton::ssl::VERIFY_PEER);
+        connection_options client_opts;
+        client_opts.ssl_client_options(ssl_cli).sasl_allowed_mechs("EXTERNAL");
+        c.client_connection_options(client_opts);
+
+        s_handler.listener = c.listen(url);
+        c.open_sender(url);
+    }
+
+    void on_connection_open(proton::connection &c) OVERRIDE {
+        std::string subject = c.transport().ssl().remote_subject();
+        std::cout << "Outgoing client connection connected via SSL.  Server certificate identity " <<
+            find_CN(subject) << std::endl;
+    }
+
+    void on_sendable(proton::sender &s) OVERRIDE {
+        proton::message m;
+        m.body("Hello World!");
+        s.send(m);
+        s.close();
+    }
+
+    void on_tracker_accept(proton::tracker &t) OVERRIDE {
+        // All done.
+        t.connection().close();
+    }
+};
+
+int main(int argc, char **argv) {
+    try {
+        // Pick an "unusual" port since we are going to be talking to ourselves, not a broker.
+        // Note the use of "amqps" as the URL scheme to denote a TLS/SSL connection.
+        std::string url = argc > 1 ? argv[1] : "amqps://127.0.0.1:8888/examples";
+        // Location of certificates and private key information:
+        if (argc > 2) {
+            cert_directory = argv[2];
+            size_t sz = cert_directory.size();
+            if (sz && cert_directory[sz -1] != '/')
+                cert_directory.append("/");
+        }
+        else cert_directory = "ssl_certs/";
+
+        hello_world_direct hwd(url);
+        proton::default_container(hwd).run();
+        return 0;
+    } catch (const std::exception& e) {
+        std::cerr << e.what() << std::endl;
+    }
+    return 1;
+}
+
+
+bool using_OpenSSL() {
+    // Current defaults.
+#if defined(WIN32)
+    return false;
+#else
+    return true;
+#endif
+}
+
+ssl_certificate platform_certificate(const std::string &base_name, const std::string &passwd) {
+    if (using_OpenSSL()) {
+        // The first argument will be the name of the file containing the public certificate, the
+        // second argument will be the name of the file containing the private key.
+        return ssl_certificate(cert_directory + base_name + "-certificate.pem",
+                               cert_directory + base_name + "-private-key.pem", passwd);
+    }
+    else {
+        // Windows SChannel
+        // The first argument will be the database or store that contains one or more complete certificates
+        // (public and private data).  The second will be an optional name of the certificate in the store
+        // (not used in this example with one certificate per store).
+        return ssl_certificate(cert_directory + base_name + "-full.p12", "", passwd);
+    }
+}
+
+std::string platform_CA(const std::string &base_name) {
+    if (using_OpenSSL()) {
+        // In this simple example with self-signed certificates, the peer's certificate is the CA database.
+        return cert_directory + base_name + "-certificate.pem";
+    }
+    else {
+        // Windows SChannel.  Use a pkcs#12 file with just the peer's public certificate information.
+        return cert_directory + base_name + "-certificate.p12";
+    }
+}
+
+std::string find_CN(const std::string &subject) {
+    // The subject string is returned with different whitespace and component ordering between platforms.
+    // Here we just return the common name by searching for "CN=...." in the subject, knowing that
+    // the test certificates do not contain any escaped characters.
+    size_t pos = subject.find("CN=");
+    if (pos == std::string::npos) throw std::runtime_error("No common name in certificate subject");
+    std::string cn = subject.substr(pos);
+    pos = cn.find(',');
+    return pos == std::string::npos ? cn : cn.substr(0, pos);
+}


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


[04/26] qpid-site git commit: QPID-7350: Examples that should have gone with the previous commit

Posted by jr...@apache.org.
http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/input/releases/qpid-proton-0.13.0/proton/python/examples/db_common.py
----------------------------------------------------------------------
diff --git a/input/releases/qpid-proton-0.13.0/proton/python/examples/db_common.py b/input/releases/qpid-proton-0.13.0/proton/python/examples/db_common.py
new file mode 100755
index 0000000..54af87b
--- /dev/null
+++ b/input/releases/qpid-proton-0.13.0/proton/python/examples/db_common.py
@@ -0,0 +1,118 @@
+#!/usr/bin/env python
+#
+# 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.
+#
+
+try:
+    import Queue
+except:
+    import queue as Queue
+
+import sqlite3
+import threading
+
+class Db(object):
+    def __init__(self, db, injector):
+        self.db = db
+        self.injector = injector
+        self.tasks = Queue.Queue()
+        self.position = None
+        self.pending_events = []
+        self.running = True
+        self.thread = threading.Thread(target=self._process)
+        self.thread.daemon=True
+        self.thread.start()
+
+    def close(self):
+        self.tasks.put(lambda conn: self._close())
+
+    def reset(self):
+        self.tasks.put(lambda conn: self._reset())
+
+    def load(self, records, event=None):
+        self.tasks.put(lambda conn: self._load(conn, records, event))
+
+    def get_id(self, event):
+        self.tasks.put(lambda conn: self._get_id(conn, event))
+
+    def insert(self, id, data, event=None):
+        self.tasks.put(lambda conn: self._insert(conn, id, data, event))
+
+    def delete(self, id, event=None):
+        self.tasks.put(lambda conn: self._delete(conn, id, event))
+
+    def _reset(self, ignored=None):
+        self.position = None
+
+    def _close(self, ignored=None):
+        self.running = False
+
+    def _get_id(self, conn, event):
+        cursor = conn.execute("SELECT * FROM records ORDER BY id DESC")
+        row = cursor.fetchone()
+        if event:
+            if row:
+                event.id = row['id']
+            else:
+                event.id = 0
+            self.injector.trigger(event)
+
+    def _load(self, conn, records, event):
+        if self.position:
+            cursor = conn.execute("SELECT * FROM records WHERE id > ? ORDER BY id", (self.position,))
+        else:
+            cursor = conn.execute("SELECT * FROM records ORDER BY id")
+        while not records.full():
+            row = cursor.fetchone()
+            if row:
+                self.position = row['id']
+                records.put(dict(row))
+            else:
+                break
+        if event:
+            self.injector.trigger(event)
+
+    def _insert(self, conn, id, data, event):
+        if id:
+            conn.execute("INSERT INTO records(id, description) VALUES (?, ?)", (id, data))
+        else:
+            conn.execute("INSERT INTO records(description) VALUES (?)", (data,))
+        if event:
+            self.pending_events.append(event)
+
+    def _delete(self, conn, id, event):
+        conn.execute("DELETE FROM records WHERE id=?", (id,))
+        if event:
+            self.pending_events.append(event)
+
+    def _process(self):
+        conn = sqlite3.connect(self.db)
+        conn.row_factory = sqlite3.Row
+        with conn:
+            while self.running:
+                f = self.tasks.get(True)
+                try:
+                    while True:
+                        f(conn)
+                        f = self.tasks.get(False)
+                except Queue.Empty: pass
+                conn.commit()
+                for event in self.pending_events:
+                    self.injector.trigger(event)
+                self.pending_events = []
+        self.injector.close()

http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/input/releases/qpid-proton-0.13.0/proton/python/examples/db_common.py.html.in
----------------------------------------------------------------------
diff --git a/input/releases/qpid-proton-0.13.0/proton/python/examples/db_common.py.html.in b/input/releases/qpid-proton-0.13.0/proton/python/examples/db_common.py.html.in
new file mode 100644
index 0000000..8dcc2ee
--- /dev/null
+++ b/input/releases/qpid-proton-0.13.0/proton/python/examples/db_common.py.html.in
@@ -0,0 +1,103 @@
+
+<h1>db_common.py</h1>
+<div class="highlight"><pre><span></span><span class="k">try</span><span class="p">:</span>
+    <span class="kn">import</span> <span class="nn">Queue</span>
+<span class="k">except</span><span class="p">:</span>
+    <span class="kn">import</span> <span class="nn">queue</span> <span class="kn">as</span> <span class="nn">Queue</span>
+
+<span class="kn">import</span> <span class="nn">sqlite3</span>
+<span class="kn">import</span> <span class="nn">threading</span>
+
+<span class="k">class</span> <span class="nc">Db</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
+    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">db</span><span class="p">,</span> <span class="n">injector</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">db</span> <span class="o">=</span> <span class="n">db</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">injector</span> <span class="o">=</span> <span class="n">injector</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">tasks</span> <span class="o">=</span> <span class="n">Queue</span><span class="o">.</span><span class="n">Queue</span><span class="p">()</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">position</span> <span class="o">=</span> <span class="bp">None</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">pending_events</span> <span class="o">=</span> <span class="p">[]</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">running</span> <span class="o">=</span> <span class="bp">True</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">thread</span> <span class="o">=</span> <span class="n">threading</span><span class="o">.</span><span class="n">Thread</span><span class="p">(</span><span class="n">target</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_process</span><span class="p">)</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">thread</span><span class="o">.</span><span class="n">daemon</span><span class="o">=</span><span class="bp">True</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">thread</span><span class="o">.</span><span class="n">start</span><span class="p">()</span>
+
+    <span class="k">def</span> <span class="nf">close</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">tasks</span><span class="o">.</span><span class="n">put</span><span class="p">(</span><span class="k">lambda</span> <span class="n">conn</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_close</span><span class="p">())</span>
+
+    <span class="k">def</span> <span class="nf">reset</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">tasks</span><span class="o">.</span><span class="n">put</span><span class="p">(</span><span class="k">lambda</span> <span class="n">conn</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_reset</span><span class="p">())</span>
+
+    <span class="k">def</span> <span class="nf">load</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">records</span><span class="p">,</span> <span class="n">event</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">tasks</span><span class="o">.</span><span class="n">put</span><span class="p">(</span><span class="k">lambda</span> <span class="n">conn</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_load</span><span class="p">(</span><span class="n">conn</span><span class="p">,</span> <span class="n">records</span><span class="p">,</span> <span class="n">event</span><span class="p">))</span>
+
+    <span class="k">def</span> <span class="nf">get_id</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">tasks</span><span class="o">.</span><span class="n">put</span><span class="p">(</span><span class="k">lambda</span> <span class="n">conn</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_get_id</span><span class="p">(</span><span class="n">conn</span><span class="p">,</span> <span class="n">event</span><span class="p">))</span>
+
+    <span class="k">def</span> <span class="nf">insert</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="nb">id</span><span class="p">,</span> <span class="n">data</span><span class="p">,</span> <span class="n">event</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">tasks</span><span class="o">.</span><span class="n">put</span><span class="p">(</span><span class="k">lambda</span> <span class="n">conn</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_insert</span><span class="p">(</span><span class="n">conn</span><span class="p">,</span> <span class="nb">id</span><span class="p">,</span> <span class="n">data</span><span class="p">,</span> <span class="n">event</span><span class="p">))</span>
+
+    <span class="k">def</span> <span class="nf">delete</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="nb">id</span><span class="p">,</span> <span class="n">event</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">tasks</span><span class="o">.</span><span class="n">put</span><span class="p">(</span><span class="k">lambda</span> <span class="n">conn</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_delete</span><span class="p">(</span><span class="n">conn</span><span class="p">,</span> <span class="nb">id</span><span class="p">,</span> <span class="n">event</span><span class="p">))</span>
+
+    <span class="k">def</span> <span class="nf">_reset</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">ignored</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">position</span> <span class="o">=</span> <span class="bp">None</span>
+
+    <span class="k">def</span> <span class="nf">_close</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">ignored</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">running</span> <span class="o">=</span> <span class="bp">False</span>
+
+    <span class="k">def</span> <span class="nf">_get_id</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">conn</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="n">cursor</span> <span class="o">=</span> <span class="n">conn</span><span class="o">.</span><span class="n">execute</span><span class="p">(</span><span class="s2">&quot;SELECT * FROM records ORDER BY id DESC&quot;</span><span class="p">)</span>
+        <span class="n">row</span> <span class="o">=</span> <span class="n">cursor</span><span class="o">.</span><span class="n">fetchone</span><span class="p">()</span>
+        <span class="k">if</span> <span class="n">event</span><span class="p">:</span>
+            <span class="k">if</span> <span class="n">row</span><span class="p">:</span>
+                <span class="n">event</span><span class="o">.</span><span class="n">id</span> <span class="o">=</span> <span class="n">row</span><span class="p">[</span><span class="s1">&#39;id&#39;</span><span class="p">]</span>
+            <span class="k">else</span><span class="p">:</span>
+                <span class="n">event</span><span class="o">.</span><span class="n">id</span> <span class="o">=</span> <span class="mi">0</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">injector</span><span class="o">.</span><span class="n">trigger</span><span class="p">(</span><span class="n">event</span><span class="p">)</span>
+
+    <span class="k">def</span> <span class="nf">_load</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">conn</span><span class="p">,</span> <span class="n">records</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">position</span><span class="p">:</span>
+            <span class="n">cursor</span> <span class="o">=</span> <span class="n">conn</span><span class="o">.</span><span class="n">execute</span><span class="p">(</span><span class="s2">&quot;SELECT * FROM records WHERE id &gt; ? ORDER BY id&quot;</span><span class="p">,</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">position</span><span class="p">,))</span>
+        <span class="k">else</span><span class="p">:</span>
+            <span class="n">cursor</span> <span class="o">=</span> <span class="n">conn</span><span class="o">.</span><span class="n">execute</span><span class="p">(</span><span class="s2">&quot;SELECT * FROM records ORDER BY id&quot;</span><span class="p">)</span>
+        <span class="k">while</span> <span class="ow">not</span> <span class="n">records</span><span class="o">.</span><span class="n">full</span><span class="p">():</span>
+            <span class="n">row</span> <span class="o">=</span> <span class="n">cursor</span><span class="o">.</span><span class="n">fetchone</span><span class="p">()</span>
+            <span class="k">if</span> <span class="n">row</span><span class="p">:</span>
+                <span class="bp">self</span><span class="o">.</span><span class="n">position</span> <span class="o">=</span> <span class="n">row</span><span class="p">[</span><span class="s1">&#39;id&#39;</span><span class="p">]</span>
+                <span class="n">records</span><span class="o">.</span><span class="n">put</span><span class="p">(</span><span class="nb">dict</span><span class="p">(</span><span class="n">row</span><span class="p">))</span>
+            <span class="k">else</span><span class="p">:</span>
+                <span class="k">break</span>
+        <span class="k">if</span> <span class="n">event</span><span class="p">:</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">injector</span><span class="o">.</span><span class="n">trigger</span><span class="p">(</span><span class="n">event</span><span class="p">)</span>
+
+    <span class="k">def</span> <span class="nf">_insert</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">conn</span><span class="p">,</span> <span class="nb">id</span><span class="p">,</span> <span class="n">data</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="k">if</span> <span class="nb">id</span><span class="p">:</span>
+            <span class="n">conn</span><span class="o">.</span><span class="n">execute</span><span class="p">(</span><span class="s2">&quot;INSERT INTO records(id, description) VALUES (?, ?)&quot;</span><span class="p">,</span> <span class="p">(</span><span class="nb">id</span><span class="p">,</span> <span class="n">data</span><span class="p">))</span>
+        <span class="k">else</span><span class="p">:</span>
+            <span class="n">conn</span><span class="o">.</span><span class="n">execute</span><span class="p">(</span><span class="s2">&quot;INSERT INTO records(description) VALUES (?)&quot;</span><span class="p">,</span> <span class="p">(</span><span class="n">data</span><span class="p">,))</span>
+        <span class="k">if</span> <span class="n">event</span><span class="p">:</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">pending_events</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">event</span><span class="p">)</span>
+
+    <span class="k">def</span> <span class="nf">_delete</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">conn</span><span class="p">,</span> <span class="nb">id</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="n">conn</span><span class="o">.</span><span class="n">execute</span><span class="p">(</span><span class="s2">&quot;DELETE FROM records WHERE id=?&quot;</span><span class="p">,</span> <span class="p">(</span><span class="nb">id</span><span class="p">,))</span>
+        <span class="k">if</span> <span class="n">event</span><span class="p">:</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">pending_events</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">event</span><span class="p">)</span>
+
+    <span class="k">def</span> <span class="nf">_process</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="n">conn</span> <span class="o">=</span> <span class="n">sqlite3</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">db</span><span class="p">)</span>
+        <span class="n">conn</span><span class="o">.</span><span class="n">row_factory</span> <span class="o">=</span> <span class="n">sqlite3</span><span class="o">.</span><span class="n">Row</span>
+        <span class="k">with</span> <span class="n">conn</span><span class="p">:</span>
+            <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">running</span><span class="p">:</span>
+                <span class="n">f</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">tasks</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="bp">True</span><span class="p">)</span>
+                <span class="k">try</span><span class="p">:</span>
+                    <span class="k">while</span> <span class="bp">True</span><span class="p">:</span>
+                        <span class="n">f</span><span class="p">(</span><span class="n">conn</span><span class="p">)</span>
+                        <span class="n">f</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">tasks</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="bp">False</span><span class="p">)</span>
+                <span class="k">except</span> <span class="n">Queue</span><span class="o">.</span><span class="n">Empty</span><span class="p">:</span> <span class="k">pass</span>
+                <span class="n">conn</span><span class="o">.</span><span class="n">commit</span><span class="p">()</span>
+                <span class="k">for</span> <span class="n">event</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">pending_events</span><span class="p">:</span>
+                    <span class="bp">self</span><span class="o">.</span><span class="n">injector</span><span class="o">.</span><span class="n">trigger</span><span class="p">(</span><span class="n">event</span><span class="p">)</span>
+                <span class="bp">self</span><span class="o">.</span><span class="n">pending_events</span> <span class="o">=</span> <span class="p">[]</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">injector</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
+</pre></div>
+
+<p><a href="db_common.py">Download this file</a></p>

http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/input/releases/qpid-proton-0.13.0/proton/python/examples/db_ctrl.py
----------------------------------------------------------------------
diff --git a/input/releases/qpid-proton-0.13.0/proton/python/examples/db_ctrl.py b/input/releases/qpid-proton-0.13.0/proton/python/examples/db_ctrl.py
new file mode 100755
index 0000000..04770ce
--- /dev/null
+++ b/input/releases/qpid-proton-0.13.0/proton/python/examples/db_ctrl.py
@@ -0,0 +1,47 @@
+#!/usr/bin/env python
+#
+# 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.
+#
+
+from __future__ import print_function
+import sqlite3
+import sys
+
+if len(sys.argv) < 3:
+    print("Usage: %s [init|insert|list] db" % sys.argv[0])
+else:
+    conn = sqlite3.connect(sys.argv[2])
+    with conn:
+        if sys.argv[1] == "init":
+            conn.execute("DROP TABLE IF EXISTS records")
+            conn.execute("CREATE TABLE records(id INTEGER PRIMARY KEY AUTOINCREMENT, description TEXT)")
+            conn.commit()
+        elif sys.argv[1] == "list":
+            cursor = conn.cursor()
+            cursor.execute("SELECT * FROM records")
+            rows = cursor.fetchall()
+            for r in rows:
+                print(r)
+        elif sys.argv[1] == "insert":
+            while True:
+                l = sys.stdin.readline()
+                if not l: break
+                conn.execute("INSERT INTO records(description) VALUES (?)", (l.rstrip(),))
+            conn.commit()
+        else:
+            print("Unrecognised command: %s" %  sys.argv[1])

http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/input/releases/qpid-proton-0.13.0/proton/python/examples/db_ctrl.py.html.in
----------------------------------------------------------------------
diff --git a/input/releases/qpid-proton-0.13.0/proton/python/examples/db_ctrl.py.html.in b/input/releases/qpid-proton-0.13.0/proton/python/examples/db_ctrl.py.html.in
new file mode 100644
index 0000000..a10bea8
--- /dev/null
+++ b/input/releases/qpid-proton-0.13.0/proton/python/examples/db_ctrl.py.html.in
@@ -0,0 +1,32 @@
+
+<h1>db_ctrl.py</h1>
+<div class="highlight"><pre><span></span><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">sqlite3</span>
+<span class="kn">import</span> <span class="nn">sys</span>
+
+<span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">sys</span><span class="o">.</span><span class="n">argv</span><span class="p">)</span> <span class="o">&lt;</span> <span class="mi">3</span><span class="p">:</span>
+    <span class="k">print</span><span class="p">(</span><span class="s2">&quot;Usage: </span><span class="si">%s</span><span class="s2"> [init|insert|list] db&quot;</span> <span class="o">%</span> <span class="n">sys</span><span class="o">.</span><span class="n">argv</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
+<span class="k">else</span><span class="p">:</span>
+    <span class="n">conn</span> <span class="o">=</span> <span class="n">sqlite3</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="n">sys</span><span class="o">.</span><span class="n">argv</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span>
+    <span class="k">with</span> <span class="n">conn</span><span class="p">:</span>
+        <span class="k">if</span> <span class="n">sys</span><span class="o">.</span><span class="n">argv</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">==</span> <span class="s2">&quot;init&quot;</span><span class="p">:</span>
+            <span class="n">conn</span><span class="o">.</span><span class="n">execute</span><span class="p">(</span><span class="s2">&quot;DROP TABLE IF EXISTS records&quot;</span><span class="p">)</span>
+            <span class="n">conn</span><span class="o">.</span><span class="n">execute</span><span class="p">(</span><span class="s2">&quot;CREATE TABLE records(id INTEGER PRIMARY KEY AUTOINCREMENT, description TEXT)&quot;</span><span class="p">)</span>
+            <span class="n">conn</span><span class="o">.</span><span class="n">commit</span><span class="p">()</span>
+        <span class="k">elif</span> <span class="n">sys</span><span class="o">.</span><span class="n">argv</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">==</span> <span class="s2">&quot;list&quot;</span><span class="p">:</span>
+            <span class="n">cursor</span> <span class="o">=</span> <span class="n">conn</span><span class="o">.</span><span class="n">cursor</span><span class="p">()</span>
+            <span class="n">cursor</span><span class="o">.</span><span class="n">execute</span><span class="p">(</span><span class="s2">&quot;SELECT * FROM records&quot;</span><span class="p">)</span>
+            <span class="n">rows</span> <span class="o">=</span> <span class="n">cursor</span><span class="o">.</span><span class="n">fetchall</span><span class="p">()</span>
+            <span class="k">for</span> <span class="n">r</span> <span class="ow">in</span> <span class="n">rows</span><span class="p">:</span>
+                <span class="k">print</span><span class="p">(</span><span class="n">r</span><span class="p">)</span>
+        <span class="k">elif</span> <span class="n">sys</span><span class="o">.</span><span class="n">argv</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">==</span> <span class="s2">&quot;insert&quot;</span><span class="p">:</span>
+            <span class="k">while</span> <span class="bp">True</span><span class="p">:</span>
+                <span class="n">l</span> <span class="o">=</span> <span class="n">sys</span><span class="o">.</span><span class="n">stdin</span><span class="o">.</span><span class="n">readline</span><span class="p">()</span>
+                <span class="k">if</span> <span class="ow">not</span> <span class="n">l</span><span class="p">:</span> <span class="k">break</span>
+                <span class="n">conn</span><span class="o">.</span><span class="n">execute</span><span class="p">(</span><span class="s2">&quot;INSERT INTO records(description) VALUES (?)&quot;</span><span class="p">,</span> <span class="p">(</span><span class="n">l</span><span class="o">.</span><span class="n">rstrip</span><span class="p">(),))</span>
+            <span class="n">conn</span><span class="o">.</span><span class="n">commit</span><span class="p">()</span>
+        <span class="k">else</span><span class="p">:</span>
+            <span class="k">print</span><span class="p">(</span><span class="s2">&quot;Unrecognised command: </span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span>  <span class="n">sys</span><span class="o">.</span><span class="n">argv</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span>
+</pre></div>
+
+<p><a href="db_ctrl.py">Download this file</a></p>

http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/input/releases/qpid-proton-0.13.0/proton/python/examples/db_recv.py
----------------------------------------------------------------------
diff --git a/input/releases/qpid-proton-0.13.0/proton/python/examples/db_recv.py b/input/releases/qpid-proton-0.13.0/proton/python/examples/db_recv.py
new file mode 100755
index 0000000..8c79049
--- /dev/null
+++ b/input/releases/qpid-proton-0.13.0/proton/python/examples/db_recv.py
@@ -0,0 +1,80 @@
+#!/usr/bin/env python
+#
+# 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.
+#
+
+from __future__ import print_function
+import optparse
+from proton.handlers import MessagingHandler
+from proton.reactor import ApplicationEvent, Container, EventInjector
+from db_common import Db
+
+class Recv(MessagingHandler):
+    def __init__(self, url, count):
+        super(Recv, self).__init__(auto_accept=False)
+        self.url = url
+        self.delay = 0
+        self.last_id = None
+        self.expected = count
+        self.received = 0
+        self.accepted = 0
+        self.db = Db("dst_db", EventInjector())
+
+    def on_start(self, event):
+        event.container.selectable(self.db.injector)
+        e = ApplicationEvent("id_loaded")
+        e.container = event.container
+        self.db.get_id(e)
+
+    def on_id_loaded(self, event):
+        self.last_id = event.id
+        event.container.create_receiver(self.url)
+
+    def on_record_inserted(self, event):
+        self.accept(event.delivery)
+        self.accepted += 1
+        if self.accepted == self.expected:
+            event.connection.close()
+            self.db.close()
+
+    def on_message(self, event):
+        id = int(event.message.id)
+        if (not self.last_id) or id > self.last_id:
+            if self.received < self.expected:
+                self.received += 1
+                self.last_id = id
+                self.db.insert(id, event.message.body, ApplicationEvent("record_inserted", delivery=event.delivery))
+                print("inserted message %s" % id)
+            else:
+                self.release(event.delivery)
+        else:
+            self.accept(event.delivery)
+
+parser = optparse.OptionParser(usage="usage: %prog [options]")
+parser.add_option("-a", "--address", default="localhost:5672/examples",
+                  help="address from which messages are received (default %default)")
+parser.add_option("-m", "--messages", type="int", default=0,
+                  help="number of messages to receive; 0 receives indefinitely (default %default)")
+opts, args = parser.parse_args()
+
+try:
+    Container(Recv(opts.address, opts.messages)).run()
+except KeyboardInterrupt: pass
+
+
+

http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/input/releases/qpid-proton-0.13.0/proton/python/examples/db_recv.py.html.in
----------------------------------------------------------------------
diff --git a/input/releases/qpid-proton-0.13.0/proton/python/examples/db_recv.py.html.in b/input/releases/qpid-proton-0.13.0/proton/python/examples/db_recv.py.html.in
new file mode 100644
index 0000000..68da6be
--- /dev/null
+++ b/input/releases/qpid-proton-0.13.0/proton/python/examples/db_recv.py.html.in
@@ -0,0 +1,62 @@
+
+<h1>db_recv.py</h1>
+<div class="highlight"><pre><span></span><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">optparse</span>
+<span class="kn">from</span> <span class="nn">proton.handlers</span> <span class="kn">import</span> <span class="n">MessagingHandler</span>
+<span class="kn">from</span> <span class="nn">proton.reactor</span> <span class="kn">import</span> <span class="n">ApplicationEvent</span><span class="p">,</span> <span class="n">Container</span><span class="p">,</span> <span class="n">EventInjector</span>
+<span class="kn">from</span> <span class="nn">db_common</span> <span class="kn">import</span> <span class="n">Db</span>
+
+<span class="k">class</span> <span class="nc">Recv</span><span class="p">(</span><span class="n">MessagingHandler</span><span class="p">):</span>
+    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">url</span><span class="p">,</span> <span class="n">count</span><span class="p">):</span>
+        <span class="nb">super</span><span class="p">(</span><span class="n">Recv</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">__init__</span><span class="p">(</span><span class="n">auto_accept</span><span class="o">=</span><span class="bp">False</span><span class="p">)</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">url</span> <span class="o">=</span> <span class="n">url</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">delay</span> <span class="o">=</span> <span class="mi">0</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">last_id</span> <span class="o">=</span> <span class="bp">None</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">expected</span> <span class="o">=</span> <span class="n">count</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">received</span> <span class="o">=</span> <span class="mi">0</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">accepted</span> <span class="o">=</span> <span class="mi">0</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">db</span> <span class="o">=</span> <span class="n">Db</span><span class="p">(</span><span class="s2">&quot;dst_db&quot;</span><span class="p">,</span> <span class="n">EventInjector</span><span class="p">())</span>
+
+    <span class="k">def</span> <span class="nf">on_start</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="n">event</span><span class="o">.</span><span class="n">container</span><span class="o">.</span><span class="n">selectable</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">injector</span><span class="p">)</span>
+        <span class="n">e</span> <span class="o">=</span> <span class="n">ApplicationEvent</span><span class="p">(</span><span class="s2">&quot;id_loaded&quot;</span><span class="p">)</span>
+        <span class="n">e</span><span class="o">.</span><span class="n">container</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">container</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">get_id</span><span class="p">(</span><span class="n">e</span><span class="p">)</span>
+
+    <span class="k">def</span> <span class="nf">on_id_loaded</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">last_id</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">id</span>
+        <span class="n">event</span><span class="o">.</span><span class="n">container</span><span class="o">.</span><span class="n">create_receiver</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">url</span><span class="p">)</span>
+
+    <span class="k">def</span> <span class="nf">on_record_inserted</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">accept</span><span class="p">(</span><span class="n">event</span><span class="o">.</span><span class="n">delivery</span><span class="p">)</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">accepted</span> <span class="o">+=</span> <span class="mi">1</span>
+        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">accepted</span> <span class="o">==</span> <span class="bp">self</span><span class="o">.</span><span class="n">expected</span><span class="p">:</span>
+            <span class="n">event</span><span class="o">.</span><span class="n">connection</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
+
+    <span class="k">def</span> <span class="nf">on_message</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="nb">id</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">event</span><span class="o">.</span><span class="n">message</span><span class="o">.</span><span class="n">id</span><span class="p">)</span>
+        <span class="k">if</span> <span class="p">(</span><span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">last_id</span><span class="p">)</span> <span class="ow">or</span> <span class="nb">id</span> <span class="o">&gt;</span> <span class="bp">self</span><span class="o">.</span><span class="n">last_id</span><span class="p">:</span>
+            <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">received</span> <span class="o">&lt;</span> <span class="bp">self</span><span class="o">.</span><span class="n">expected</span><span class="p">:</span>
+                <span class="bp">self</span><span class="o">.</span><span class="n">received</span> <span class="o">+=</span> <span class="mi">1</span>
+                <span class="bp">self</span><span class="o">.</span><span class="n">last_id</span> <span class="o">=</span> <span class="nb">id</span>
+                <span class="bp">self</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">insert</span><span class="p">(</span><span class="nb">id</span><span class="p">,</span> <span class="n">event</span><span class="o">.</span><span class="n">message</span><span class="o">.</span><span class="n">body</span><span class="p">,</span> <span class="n">ApplicationEvent</span><span class="p">(</span><span class="s2">&quot;record_inserted&quot;</span><span class="p">,</span> <span class="n">delivery</span><span class="o">=</span><span class="n">event</span><span class="o">.</span><span class="n">delivery</span><span class="p">))</span>
+                <span class="k">print</span><span class="p">(</span><span class="s2">&quot;inserted message </span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="nb">id</span><span class="p">)</span>
+            <span class="k">else</span><span class="p">:</span>
+                <span class="bp">self</span><span class="o">.</span><span class="n">release</span><span class="p">(</span><span class="n">event</span><span class="o">.</span><span class="n">delivery</span><span class="p">)</span>
+        <span class="k">else</span><span class="p">:</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">accept</span><span class="p">(</span><span class="n">event</span><span class="o">.</span><span class="n">delivery</span><span class="p">)</span>
+
+<span class="n">parser</span> <span class="o">=</span> <span class="n">optparse</span><span class="o">.</span><span class="n">OptionParser</span><span class="p">(</span><span class="n">usage</span><span class="o">=</span><span class="s2">&quot;usage: %prog [options]&quot;</span><span class="p">)</span>
+<span class="n">parser</span><span class="o">.</span><span class="n">add_option</span><span class="p">(</span><span class="s2">&quot;-a&quot;</span><span class="p">,</span> <span class="s2">&quot;--address&quot;</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="s2">&quot;localhost:5672/examples&quot;</span><span class="p">,</span>
+                  <span class="n">help</span><span class="o">=</span><span class="s2">&quot;address from which messages are received (default </span><span class="si">%d</span><span class="s2">efault)&quot;</span><span class="p">)</span>
+<span class="n">parser</span><span class="o">.</span><span class="n">add_option</span><span class="p">(</span><span class="s2">&quot;-m&quot;</span><span class="p">,</span> <span class="s2">&quot;--messages&quot;</span><span class="p">,</span> <span class="nb">type</span><span class="o">=</span><span class="s2">&quot;int&quot;</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span>
+                  <span class="n">help</span><span class="o">=</span><span class="s2">&quot;number of messages to receive; 0 receives indefinitely (default </span><span class="si">%d</span><span class="s2">efault)&quot;</span><span class="p">)</span>
+<span class="n">opts</span><span class="p">,</span> <span class="n">args</span> <span class="o">=</span> <span class="n">parser</span><span class="o">.</span><span class="n">parse_args</span><span class="p">()</span>
+
+<span class="k">try</span><span class="p">:</span>
+    <span class="n">Container</span><span class="p">(</span><span class="n">Recv</span><span class="p">(</span><span class="n">opts</span><span class="o">.</span><span class="n">address</span><span class="p">,</span> <span class="n">opts</span><span class="o">.</span><span class="n">messages</span><span class="p">))</span><span class="o">.</span><span class="n">run</span><span class="p">()</span>
+<span class="k">except</span> <span class="ne">KeyboardInterrupt</span><span class="p">:</span> <span class="k">pass</span>
+</pre></div>
+
+<p><a href="db_recv.py">Download this file</a></p>

http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/input/releases/qpid-proton-0.13.0/proton/python/examples/db_send.py
----------------------------------------------------------------------
diff --git a/input/releases/qpid-proton-0.13.0/proton/python/examples/db_send.py b/input/releases/qpid-proton-0.13.0/proton/python/examples/db_send.py
new file mode 100755
index 0000000..c07dcc0
--- /dev/null
+++ b/input/releases/qpid-proton-0.13.0/proton/python/examples/db_send.py
@@ -0,0 +1,111 @@
+#!/usr/bin/env python
+#
+# 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.
+#
+
+from __future__ import print_function, unicode_literals
+import optparse
+import time
+try:
+    import Queue
+except:
+    import queue as Queue
+
+
+from proton import Message
+from proton.handlers import MessagingHandler
+from proton.reactor import ApplicationEvent, Container, EventInjector
+from db_common import Db
+
+class Send(MessagingHandler):
+    def __init__(self, url, count):
+        super(Send, self).__init__()
+        self.url = url
+        self.delay = 0
+        self.sent = 0
+        self.confirmed = 0
+        self.load_count = 0
+        self.records = Queue.Queue(maxsize=50)
+        self.target = count
+        self.db = Db("src_db", EventInjector())
+
+    def keep_sending(self):
+        return self.target == 0 or self.sent < self.target
+
+    def on_start(self, event):
+        self.container = event.container
+        self.container.selectable(self.db.injector)
+        self.sender = self.container.create_sender(self.url)
+
+    def on_records_loaded(self, event):
+        if self.records.empty():
+            if event.subject == self.load_count:
+                print("Exhausted available data, waiting to recheck...")
+                # check for new data after 5 seconds
+                self.container.schedule(5, self)
+        else:
+            self.send()
+
+    def request_records(self):
+        if not self.records.full():
+            print("loading records...")
+            self.load_count += 1
+            self.db.load(self.records, event=ApplicationEvent("records_loaded", link=self.sender, subject=self.load_count))
+
+    def on_sendable(self, event):
+        self.send()
+
+    def send(self):
+        while self.sender.credit and not self.records.empty():
+            if not self.keep_sending(): return
+            record = self.records.get(False)
+            id = record['id']
+            self.sender.send(Message(id=id, durable=True, body=record['description']), tag=str(id))
+            self.sent += 1
+            print("sent message %s" % id)
+        self.request_records()
+
+    def on_settled(self, event):
+        id = int(event.delivery.tag)
+        self.db.delete(id)
+        print("settled message %s" % id)
+        self.confirmed += 1
+        if self.confirmed == self.target:
+            event.connection.close()
+            self.db.close()
+
+    def on_disconnected(self, event):
+        self.db.reset()
+        self.sent = self.confirmed
+
+    def on_timer_task(self, event):
+        print("Rechecking for data...")
+        self.request_records()
+
+parser = optparse.OptionParser(usage="usage: %prog [options]",
+                               description="Send messages to the supplied address.")
+parser.add_option("-a", "--address", default="localhost:5672/examples",
+                  help="address to which messages are sent (default %default)")
+parser.add_option("-m", "--messages", type="int", default=0,
+                  help="number of messages to send; 0 sends indefinitely (default %default)")
+opts, args = parser.parse_args()
+
+try:
+    Container(Send(opts.address, opts.messages)).run()
+except KeyboardInterrupt: pass
+

http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/input/releases/qpid-proton-0.13.0/proton/python/examples/db_send.py.html.in
----------------------------------------------------------------------
diff --git a/input/releases/qpid-proton-0.13.0/proton/python/examples/db_send.py.html.in b/input/releases/qpid-proton-0.13.0/proton/python/examples/db_send.py.html.in
new file mode 100644
index 0000000..5cd4962
--- /dev/null
+++ b/input/releases/qpid-proton-0.13.0/proton/python/examples/db_send.py.html.in
@@ -0,0 +1,95 @@
+
+<h1>db_send.py</h1>
+<div class="highlight"><pre><span></span><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>
+<span class="kn">import</span> <span class="nn">time</span>
+<span class="k">try</span><span class="p">:</span>
+    <span class="kn">import</span> <span class="nn">Queue</span>
+<span class="k">except</span><span class="p">:</span>
+    <span class="kn">import</span> <span class="nn">queue</span> <span class="kn">as</span> <span class="nn">Queue</span>
+
+
+<span class="kn">from</span> <span class="nn">proton</span> <span class="kn">import</span> <span class="n">Message</span>
+<span class="kn">from</span> <span class="nn">proton.handlers</span> <span class="kn">import</span> <span class="n">MessagingHandler</span>
+<span class="kn">from</span> <span class="nn">proton.reactor</span> <span class="kn">import</span> <span class="n">ApplicationEvent</span><span class="p">,</span> <span class="n">Container</span><span class="p">,</span> <span class="n">EventInjector</span>
+<span class="kn">from</span> <span class="nn">db_common</span> <span class="kn">import</span> <span class="n">Db</span>
+
+<span class="k">class</span> <span class="nc">Send</span><span class="p">(</span><span class="n">MessagingHandler</span><span class="p">):</span>
+    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">url</span><span class="p">,</span> <span class="n">count</span><span class="p">):</span>
+        <span class="nb">super</span><span class="p">(</span><span class="n">Send</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">__init__</span><span class="p">()</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">url</span> <span class="o">=</span> <span class="n">url</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">delay</span> <span class="o">=</span> <span class="mi">0</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">sent</span> <span class="o">=</span> <span class="mi">0</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">confirmed</span> <span class="o">=</span> <span class="mi">0</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">load_count</span> <span class="o">=</span> <span class="mi">0</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">records</span> <span class="o">=</span> <span class="n">Queue</span><span class="o">.</span><span class="n">Queue</span><span class="p">(</span><span class="n">maxsize</span><span class="o">=</span><span class="mi">50</span><span class="p">)</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">target</span> <span class="o">=</span> <span class="n">count</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">db</span> <span class="o">=</span> <span class="n">Db</span><span class="p">(</span><span class="s2">&quot;src_db&quot;</span><span class="p">,</span> <span class="n">EventInjector</span><span class="p">())</span>
+
+    <span class="k">def</span> <span class="nf">keep_sending</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">target</span> <span class="o">==</span> <span class="mi">0</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">sent</span> <span class="o">&lt;</span> <span class="bp">self</span><span class="o">.</span><span class="n">target</span>
+
+    <span class="k">def</span> <span class="nf">on_start</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">container</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">container</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">container</span><span class="o">.</span><span class="n">selectable</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">injector</span><span class="p">)</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">sender</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">container</span><span class="o">.</span><span class="n">create_sender</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">url</span><span class="p">)</span>
+
+    <span class="k">def</span> <span class="nf">on_records_loaded</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">records</span><span class="o">.</span><span class="n">empty</span><span class="p">():</span>
+            <span class="k">if</span> <span class="n">event</span><span class="o">.</span><span class="n">subject</span> <span class="o">==</span> <span class="bp">self</span><span class="o">.</span><span class="n">load_count</span><span class="p">:</span>
+                <span class="k">print</span><span class="p">(</span><span class="s2">&quot;Exhausted available data, waiting to recheck...&quot;</span><span class="p">)</span>
+                <span class="c1"># check for new data after 5 seconds</span>
+                <span class="bp">self</span><span class="o">.</span><span class="n">container</span><span class="o">.</span><span class="n">schedule</span><span class="p">(</span><span class="mi">5</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span>
+        <span class="k">else</span><span class="p">:</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">send</span><span class="p">()</span>
+
+    <span class="k">def</span> <span class="nf">request_records</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">records</span><span class="o">.</span><span class="n">full</span><span class="p">():</span>
+            <span class="k">print</span><span class="p">(</span><span class="s2">&quot;loading records...&quot;</span><span class="p">)</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">load_count</span> <span class="o">+=</span> <span class="mi">1</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">load</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">records</span><span class="p">,</span> <span class="n">event</span><span class="o">=</span><span class="n">ApplicationEvent</span><span class="p">(</span><span class="s2">&quot;records_loaded&quot;</span><span class="p">,</span> <span class="n">link</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">sender</span><span class="p">,</span> <span class="n">subject</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">load_count</span><span class="p">))</span>
+
+    <span class="k">def</span> <span class="nf">on_sendable</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">send</span><span class="p">()</span>
+
+    <span class="k">def</span> <span class="nf">send</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">sender</span><span class="o">.</span><span class="n">credit</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">records</span><span class="o">.</span><span class="n">empty</span><span class="p">():</span>
+            <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">keep_sending</span><span class="p">():</span> <span class="k">return</span>
+            <span class="n">record</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">records</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="bp">False</span><span class="p">)</span>
+            <span class="nb">id</span> <span class="o">=</span> <span class="n">record</span><span class="p">[</span><span class="s1">&#39;id&#39;</span><span class="p">]</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">sender</span><span class="o">.</span><span class="n">send</span><span class="p">(</span><span class="n">Message</span><span class="p">(</span><span class="nb">id</span><span class="o">=</span><span class="nb">id</span><span class="p">,</span> <span class="n">durable</span><span class="o">=</span><span class="bp">True</span><span class="p">,</span> <span class="n">body</span><span class="o">=</span><span class="n">record</span><span class="p">[</span><span class="s1">&#39;description&#39;</span><span class="p">]),</span> <span class="n">tag</span><span class="o">=</span><span class="nb">str</span><span class="p">(</span><span class="nb">id</span><span class="p">))</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">sent</span> <span class="o">+=</span> <span class="mi">1</span>
+            <span class="k">print</span><span class="p">(</span><span class="s2">&quot;sent message </span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="nb">id</span><span class="p">)</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">request_records</span><span class="p">()</span>
+
+    <span class="k">def</span> <span class="nf">on_settled</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="nb">id</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">event</span><span class="o">.</span><span class="n">delivery</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">delete</span><span class="p">(</span><span class="nb">id</span><span class="p">)</span>
+        <span class="k">print</span><span class="p">(</span><span class="s2">&quot;settled message </span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="nb">id</span><span class="p">)</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">confirmed</span> <span class="o">+=</span> <span class="mi">1</span>
+        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">confirmed</span> <span class="o">==</span> <span class="bp">self</span><span class="o">.</span><span class="n">target</span><span class="p">:</span>
+            <span class="n">event</span><span class="o">.</span><span class="n">connection</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
+
+    <span class="k">def</span> <span class="nf">on_disconnected</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">reset</span><span class="p">()</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">sent</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">confirmed</span>
+
+    <span class="k">def</span> <span class="nf">on_timer_task</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="k">print</span><span class="p">(</span><span class="s2">&quot;Rechecking for data...&quot;</span><span class="p">)</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">request_records</span><span class="p">()</span>
+
+<span class="n">parser</span> <span class="o">=</span> <span class="n">optparse</span><span class="o">.</span><span class="n">OptionParser</span><span class="p">(</span><span class="n">usage</span><span class="o">=</span><span class="s2">&quot;usage: %prog [options]&quot;</span><span class="p">,</span>
+                               <span class="n">description</span><span class="o">=</span><span class="s2">&quot;Send messages to the supplied address.&quot;</span><span class="p">)</span>
+<span class="n">parser</span><span class="o">.</span><span class="n">add_option</span><span class="p">(</span><span class="s2">&quot;-a&quot;</span><span class="p">,</span> <span class="s2">&quot;--address&quot;</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="s2">&quot;localhost:5672/examples&quot;</span><span class="p">,</span>
+                  <span class="n">help</span><span class="o">=</span><span class="s2">&quot;address to which messages are sent (default </span><span class="si">%d</span><span class="s2">efault)&quot;</span><span class="p">)</span>
+<span class="n">parser</span><span class="o">.</span><span class="n">add_option</span><span class="p">(</span><span class="s2">&quot;-m&quot;</span><span class="p">,</span> <span class="s2">&quot;--messages&quot;</span><span class="p">,</span> <span class="nb">type</span><span class="o">=</span><span class="s2">&quot;int&quot;</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span>
+                  <span class="n">help</span><span class="o">=</span><span class="s2">&quot;number of messages to send; 0 sends indefinitely (default </span><span class="si">%d</span><span class="s2">efault)&quot;</span><span class="p">)</span>
+<span class="n">opts</span><span class="p">,</span> <span class="n">args</span> <span class="o">=</span> <span class="n">parser</span><span class="o">.</span><span class="n">parse_args</span><span class="p">()</span>
+
+<span class="k">try</span><span class="p">:</span>
+    <span class="n">Container</span><span class="p">(</span><span class="n">Send</span><span class="p">(</span><span class="n">opts</span><span class="o">.</span><span class="n">address</span><span class="p">,</span> <span class="n">opts</span><span class="o">.</span><span class="n">messages</span><span class="p">))</span><span class="o">.</span><span class="n">run</span><span class="p">()</span>
+<span class="k">except</span> <span class="ne">KeyboardInterrupt</span><span class="p">:</span> <span class="k">pass</span>
+</pre></div>
+
+<p><a href="db_send.py">Download this file</a></p>

http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/input/releases/qpid-proton-0.13.0/proton/python/examples/direct_recv.py
----------------------------------------------------------------------
diff --git a/input/releases/qpid-proton-0.13.0/proton/python/examples/direct_recv.py b/input/releases/qpid-proton-0.13.0/proton/python/examples/direct_recv.py
new file mode 100755
index 0000000..1c6bf36
--- /dev/null
+++ b/input/releases/qpid-proton-0.13.0/proton/python/examples/direct_recv.py
@@ -0,0 +1,60 @@
+#!/usr/bin/env python
+#
+# 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.
+#
+
+from __future__ import print_function
+import optparse
+from proton.handlers import MessagingHandler
+from proton.reactor import Container
+
+class Recv(MessagingHandler):
+    def __init__(self, url, count):
+        super(Recv, self).__init__()
+        self.url = url
+        self.expected = count
+        self.received = 0
+
+    def on_start(self, event):
+        self.acceptor = event.container.listen(self.url)
+
+    def on_message(self, event):
+        if event.message.id and event.message.id < self.received:
+            # ignore duplicate message
+            return
+        if self.expected == 0 or self.received < self.expected:
+            print(event.message.body)
+            self.received += 1
+            if self.received == self.expected:
+                event.receiver.close()
+                event.connection.close()
+                self.acceptor.close()
+
+parser = optparse.OptionParser(usage="usage: %prog [options]")
+parser.add_option("-a", "--address", default="localhost:5672/examples",
+                  help="address from which messages are received (default %default)")
+parser.add_option("-m", "--messages", type="int", default=100,
+                  help="number of messages to receive; 0 receives indefinitely (default %default)")
+opts, args = parser.parse_args()
+
+try:
+    Container(Recv(opts.address, opts.messages)).run()
+except KeyboardInterrupt: pass
+
+
+

http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/input/releases/qpid-proton-0.13.0/proton/python/examples/direct_recv.py.html.in
----------------------------------------------------------------------
diff --git a/input/releases/qpid-proton-0.13.0/proton/python/examples/direct_recv.py.html.in b/input/releases/qpid-proton-0.13.0/proton/python/examples/direct_recv.py.html.in
new file mode 100644
index 0000000..c8be727
--- /dev/null
+++ b/input/releases/qpid-proton-0.13.0/proton/python/examples/direct_recv.py.html.in
@@ -0,0 +1,42 @@
+
+<h1>direct_recv.py</h1>
+<div class="highlight"><pre><span></span><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">optparse</span>
+<span class="kn">from</span> <span class="nn">proton.handlers</span> <span class="kn">import</span> <span class="n">MessagingHandler</span>
+<span class="kn">from</span> <span class="nn">proton.reactor</span> <span class="kn">import</span> <span class="n">Container</span>
+
+<span class="k">class</span> <span class="nc">Recv</span><span class="p">(</span><span class="n">MessagingHandler</span><span class="p">):</span>
+    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">url</span><span class="p">,</span> <span class="n">count</span><span class="p">):</span>
+        <span class="nb">super</span><span class="p">(</span><span class="n">Recv</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">__init__</span><span class="p">()</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">url</span> <span class="o">=</span> <span class="n">url</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">expected</span> <span class="o">=</span> <span class="n">count</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">received</span> <span class="o">=</span> <span class="mi">0</span>
+
+    <span class="k">def</span> <span class="nf">on_start</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">acceptor</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">container</span><span class="o">.</span><span class="n">listen</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">url</span><span class="p">)</span>
+
+    <span class="k">def</span> <span class="nf">on_message</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="k">if</span> <span class="n">event</span><span class="o">.</span><span class="n">message</span><span class="o">.</span><span class="n">id</span> <span class="ow">and</span> <span class="n">event</span><span class="o">.</span><span class="n">message</span><span class="o">.</span><span class="n">id</span> <span class="o">&lt;</span> <span class="bp">self</span><span class="o">.</span><span class="n">received</span><span class="p">:</span>
+            <span class="c1"># ignore duplicate message</span>
+            <span class="k">return</span>
+        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">expected</span> <span class="o">==</span> <span class="mi">0</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">received</span> <span class="o">&lt;</span> <span class="bp">self</span><span class="o">.</span><span class="n">expected</span><span class="p">:</span>
+            <span class="k">print</span><span class="p">(</span><span class="n">event</span><span class="o">.</span><span class="n">message</span><span class="o">.</span><span class="n">body</span><span class="p">)</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">received</span> <span class="o">+=</span> <span class="mi">1</span>
+            <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">received</span> <span class="o">==</span> <span class="bp">self</span><span class="o">.</span><span class="n">expected</span><span class="p">:</span>
+                <span class="n">event</span><span class="o">.</span><span class="n">receiver</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
+                <span class="n">event</span><span class="o">.</span><span class="n">connection</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
+                <span class="bp">self</span><span class="o">.</span><span class="n">acceptor</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
+
+<span class="n">parser</span> <span class="o">=</span> <span class="n">optparse</span><span class="o">.</span><span class="n">OptionParser</span><span class="p">(</span><span class="n">usage</span><span class="o">=</span><span class="s2">&quot;usage: %prog [options]&quot;</span><span class="p">)</span>
+<span class="n">parser</span><span class="o">.</span><span class="n">add_option</span><span class="p">(</span><span class="s2">&quot;-a&quot;</span><span class="p">,</span> <span class="s2">&quot;--address&quot;</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="s2">&quot;localhost:5672/examples&quot;</span><span class="p">,</span>
+                  <span class="n">help</span><span class="o">=</span><span class="s2">&quot;address from which messages are received (default </span><span class="si">%d</span><span class="s2">efault)&quot;</span><span class="p">)</span>
+<span class="n">parser</span><span class="o">.</span><span class="n">add_option</span><span class="p">(</span><span class="s2">&quot;-m&quot;</span><span class="p">,</span> <span class="s2">&quot;--messages&quot;</span><span class="p">,</span> <span class="nb">type</span><span class="o">=</span><span class="s2">&quot;int&quot;</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="mi">100</span><span class="p">,</span>
+                  <span class="n">help</span><span class="o">=</span><span class="s2">&quot;number of messages to receive; 0 receives indefinitely (default </span><span class="si">%d</span><span class="s2">efault)&quot;</span><span class="p">)</span>
+<span class="n">opts</span><span class="p">,</span> <span class="n">args</span> <span class="o">=</span> <span class="n">parser</span><span class="o">.</span><span class="n">parse_args</span><span class="p">()</span>
+
+<span class="k">try</span><span class="p">:</span>
+    <span class="n">Container</span><span class="p">(</span><span class="n">Recv</span><span class="p">(</span><span class="n">opts</span><span class="o">.</span><span class="n">address</span><span class="p">,</span> <span class="n">opts</span><span class="o">.</span><span class="n">messages</span><span class="p">))</span><span class="o">.</span><span class="n">run</span><span class="p">()</span>
+<span class="k">except</span> <span class="ne">KeyboardInterrupt</span><span class="p">:</span> <span class="k">pass</span>
+</pre></div>
+
+<p><a href="direct_recv.py">Download this file</a></p>

http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/input/releases/qpid-proton-0.13.0/proton/python/examples/direct_send.py
----------------------------------------------------------------------
diff --git a/input/releases/qpid-proton-0.13.0/proton/python/examples/direct_send.py b/input/releases/qpid-proton-0.13.0/proton/python/examples/direct_send.py
new file mode 100755
index 0000000..35bd2f5
--- /dev/null
+++ b/input/releases/qpid-proton-0.13.0/proton/python/examples/direct_send.py
@@ -0,0 +1,64 @@
+#!/usr/bin/env python
+#
+# 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.
+#
+
+from __future__ import print_function, unicode_literals
+import optparse
+from proton import Message
+from proton.handlers import MessagingHandler
+from proton.reactor import Container
+
+class Send(MessagingHandler):
+    def __init__(self, url, messages):
+        super(Send, self).__init__()
+        self.url = url
+        self.sent = 0
+        self.confirmed = 0
+        self.total = messages
+
+    def on_start(self, event):
+        self.acceptor = event.container.listen(self.url)
+
+    def on_sendable(self, event):
+        while event.sender.credit and self.sent < self.total:
+            msg = Message(id=(self.sent+1), body={'sequence':(self.sent+1)})
+            event.sender.send(msg)
+            self.sent += 1
+
+    def on_accepted(self, event):
+        self.confirmed += 1
+        if self.confirmed == self.total:
+            print("all messages confirmed")
+            event.connection.close()
+            self.acceptor.close()
+
+    def on_disconnected(self, event):
+        self.sent = self.confirmed
+
+parser = optparse.OptionParser(usage="usage: %prog [options]",
+                               description="Send messages to the supplied address.")
+parser.add_option("-a", "--address", default="localhost:5672/examples",
+                  help="address to which messages are sent (default %default)")
+parser.add_option("-m", "--messages", type="int", default=100,
+                  help="number of messages to send (default %default)")
+opts, args = parser.parse_args()
+
+try:
+    Container(Send(opts.address, opts.messages)).run()
+except KeyboardInterrupt: pass

http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/input/releases/qpid-proton-0.13.0/proton/python/examples/direct_send.py.html.in
----------------------------------------------------------------------
diff --git a/input/releases/qpid-proton-0.13.0/proton/python/examples/direct_send.py.html.in b/input/releases/qpid-proton-0.13.0/proton/python/examples/direct_send.py.html.in
new file mode 100644
index 0000000..19c506e
--- /dev/null
+++ b/input/releases/qpid-proton-0.13.0/proton/python/examples/direct_send.py.html.in
@@ -0,0 +1,49 @@
+
+<h1>direct_send.py</h1>
+<div class="highlight"><pre><span></span><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>
+<span class="kn">from</span> <span class="nn">proton</span> <span class="kn">import</span> <span class="n">Message</span>
+<span class="kn">from</span> <span class="nn">proton.handlers</span> <span class="kn">import</span> <span class="n">MessagingHandler</span>
+<span class="kn">from</span> <span class="nn">proton.reactor</span> <span class="kn">import</span> <span class="n">Container</span>
+
+<span class="k">class</span> <span class="nc">Send</span><span class="p">(</span><span class="n">MessagingHandler</span><span class="p">):</span>
+    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">url</span><span class="p">,</span> <span class="n">messages</span><span class="p">):</span>
+        <span class="nb">super</span><span class="p">(</span><span class="n">Send</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">__init__</span><span class="p">()</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">url</span> <span class="o">=</span> <span class="n">url</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">sent</span> <span class="o">=</span> <span class="mi">0</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">confirmed</span> <span class="o">=</span> <span class="mi">0</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">total</span> <span class="o">=</span> <span class="n">messages</span>
+
+    <span class="k">def</span> <span class="nf">on_start</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">acceptor</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">container</span><span class="o">.</span><span class="n">listen</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">url</span><span class="p">)</span>
+
+    <span class="k">def</span> <span class="nf">on_sendable</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="k">while</span> <span class="n">event</span><span class="o">.</span><span class="n">sender</span><span class="o">.</span><span class="n">credit</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">sent</span> <span class="o">&lt;</span> <span class="bp">self</span><span class="o">.</span><span class="n">total</span><span class="p">:</span>
+            <span class="n">msg</span> <span class="o">=</span> <span class="n">Message</span><span class="p">(</span><span class="nb">id</span><span class="o">=</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">sent</span><span class="o">+</span><span class="mi">1</span><span class="p">),</span> <span class="n">body</span><span class="o">=</span><span class="p">{</span><span class="s1">&#39;sequence&#39;</span><span class="p">:(</span><span class="bp">self</span><span class="o">.</span><span class="n">sent</span><span class="o">+</span><span class="mi">1</span><span class="p">)})</span>
+            <span class="n">event</span><span class="o">.</span><span class="n">sender</span><span class="o">.</span><span class="n">send</span><span class="p">(</span><span class="n">msg</span><span class="p">)</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">sent</span> <span class="o">+=</span> <span class="mi">1</span>
+
+    <span class="k">def</span> <span class="nf">on_accepted</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">confirmed</span> <span class="o">+=</span> <span class="mi">1</span>
+        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">confirmed</span> <span class="o">==</span> <span class="bp">self</span><span class="o">.</span><span class="n">total</span><span class="p">:</span>
+            <span class="k">print</span><span class="p">(</span><span class="s2">&quot;all messages confirmed&quot;</span><span class="p">)</span>
+            <span class="n">event</span><span class="o">.</span><span class="n">connection</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">acceptor</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
+
+    <span class="k">def</span> <span class="nf">on_disconnected</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">sent</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">confirmed</span>
+
+<span class="n">parser</span> <span class="o">=</span> <span class="n">optparse</span><span class="o">.</span><span class="n">OptionParser</span><span class="p">(</span><span class="n">usage</span><span class="o">=</span><span class="s2">&quot;usage: %prog [options]&quot;</span><span class="p">,</span>
+                               <span class="n">description</span><span class="o">=</span><span class="s2">&quot;Send messages to the supplied address.&quot;</span><span class="p">)</span>
+<span class="n">parser</span><span class="o">.</span><span class="n">add_option</span><span class="p">(</span><span class="s2">&quot;-a&quot;</span><span class="p">,</span> <span class="s2">&quot;--address&quot;</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="s2">&quot;localhost:5672/examples&quot;</span><span class="p">,</span>
+                  <span class="n">help</span><span class="o">=</span><span class="s2">&quot;address to which messages are sent (default </span><span class="si">%d</span><span class="s2">efault)&quot;</span><span class="p">)</span>
+<span class="n">parser</span><span class="o">.</span><span class="n">add_option</span><span class="p">(</span><span class="s2">&quot;-m&quot;</span><span class="p">,</span> <span class="s2">&quot;--messages&quot;</span><span class="p">,</span> <span class="nb">type</span><span class="o">=</span><span class="s2">&quot;int&quot;</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="mi">100</span><span class="p">,</span>
+                  <span class="n">help</span><span class="o">=</span><span class="s2">&quot;number of messages to send (default </span><span class="si">%d</span><span class="s2">efault)&quot;</span><span class="p">)</span>
+<span class="n">opts</span><span class="p">,</span> <span class="n">args</span> <span class="o">=</span> <span class="n">parser</span><span class="o">.</span><span class="n">parse_args</span><span class="p">()</span>
+
+<span class="k">try</span><span class="p">:</span>
+    <span class="n">Container</span><span class="p">(</span><span class="n">Send</span><span class="p">(</span><span class="n">opts</span><span class="o">.</span><span class="n">address</span><span class="p">,</span> <span class="n">opts</span><span class="o">.</span><span class="n">messages</span><span class="p">))</span><span class="o">.</span><span class="n">run</span><span class="p">()</span>
+<span class="k">except</span> <span class="ne">KeyboardInterrupt</span><span class="p">:</span> <span class="k">pass</span>
+</pre></div>
+
+<p><a href="direct_send.py">Download this file</a></p>


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


[25/26] qpid-site git commit: QPID-7350: Examples that should have gone with the previous commit

Posted by jr...@apache.org.
http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/content/releases/qpid-proton-0.13.0/proton/cpp/examples/broker.hpp.html
----------------------------------------------------------------------
diff --git a/content/releases/qpid-proton-0.13.0/proton/cpp/examples/broker.hpp.html b/content/releases/qpid-proton-0.13.0/proton/cpp/examples/broker.hpp.html
new file mode 100644
index 0000000..9a51743
--- /dev/null
+++ b/content/releases/qpid-proton-0.13.0/proton/cpp/examples/broker.hpp.html
@@ -0,0 +1,368 @@
+<!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>broker.hpp - 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/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;">
+        <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-proton-0.13.0/index.html">Qpid Proton 0.13.0</a></li><li><a href="/releases/qpid-proton-0.13.0/proton/cpp/examples/index.html">Proton C++ Examples</a></li><li>broker.hpp</li></ul>
+
+        <div id="-middle-content">
+          
+<h1>broker.hpp</h1>
+<div class="highlight"><pre><span></span><span class="cp">#ifndef BROKER_HPP</span>
+<span class="cp">#define BROKER_HPP</span>
+
+
+
+<span class="c1">/// @file</span>
+<span class="c1">///</span>
+<span class="c1">/// Common code used by different broker examples.</span>
+<span class="c1">///</span>
+<span class="c1">/// The examples add functionality as needed, this helps to make it</span>
+<span class="c1">/// easier to see the important differences between the examples.</span>
+
+<span class="cp">#include</span> <span class="cpf">&lt;proton/connection.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/delivery.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/messaging_handler.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/message.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/sasl.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/sender.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/tracker.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/transport.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/sender_options.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/receiver_options.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/source_options.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/target_options.hpp&gt;</span><span class="cp"></span>
+
+<span class="cp">#include</span> <span class="cpf">&lt;iostream&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;deque&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;map&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;list&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;sstream&gt;</span><span class="cp"></span>
+
+<span class="c1">/// A simple implementation of a queue.</span>
+<span class="k">class</span> <span class="nc">queue</span> <span class="p">{</span>
+  <span class="k">public</span><span class="o">:</span>
+    <span class="n">queue</span><span class="p">(</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="o">&amp;</span><span class="n">name</span><span class="p">,</span> <span class="kt">bool</span> <span class="n">dynamic</span> <span class="o">=</span> <span class="nb">false</span><span class="p">)</span> <span class="o">:</span> <span class="n">name_</span><span class="p">(</span><span class="n">name</span><span class="p">),</span> <span class="n">dynamic_</span><span class="p">(</span><span class="n">dynamic</span><span class="p">)</span> <span class="p">{}</span>
+
+    <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">name</span><span class="p">()</span> <span class="k">const</span> <span class="p">{</span> <span class="k">return</span> <span class="n">name_</span><span class="p">;</span> <span class="p">}</span>
+
+    <span class="kt">void</span> <span class="n">subscribe</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">sender</span> <span class="n">s</span><span class="p">)</span> <span class="p">{</span>
+        <span class="n">consumers_</span><span class="p">.</span><span class="n">push_back</span><span class="p">(</span><span class="n">s</span><span class="p">);</span>
+    <span class="p">}</span>
+
+    <span class="c1">// Return true if queue can be deleted.</span>
+    <span class="kt">bool</span> <span class="n">unsubscribe</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">sender</span> <span class="n">s</span><span class="p">)</span> <span class="p">{</span>
+        <span class="n">consumers_</span><span class="p">.</span><span class="n">remove</span><span class="p">(</span><span class="n">s</span><span class="p">);</span>
+        <span class="k">return</span> <span class="p">(</span><span class="n">consumers_</span><span class="p">.</span><span class="n">size</span><span class="p">()</span> <span class="o">==</span> <span class="mi">0</span> <span class="o">&amp;&amp;</span> <span class="p">(</span><span class="n">dynamic_</span> <span class="o">||</span> <span class="n">messages_</span><span class="p">.</span><span class="n">size</span><span class="p">()</span> <span class="o">==</span> <span class="mi">0</span><span class="p">));</span>
+    <span class="p">}</span>
+
+    <span class="kt">void</span> <span class="n">publish</span><span class="p">(</span><span class="k">const</span> <span class="n">proton</span><span class="o">::</span><span class="n">message</span> <span class="o">&amp;</span><span class="n">m</span><span class="p">)</span> <span class="p">{</span>
+        <span class="n">messages_</span><span class="p">.</span><span class="n">push_back</span><span class="p">(</span><span class="n">m</span><span class="p">);</span>
+        <span class="n">dispatch</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
+    <span class="p">}</span>
+
+    <span class="kt">void</span> <span class="n">dispatch</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">sender</span> <span class="o">*</span><span class="n">s</span><span class="p">)</span> <span class="p">{</span>
+        <span class="k">while</span> <span class="p">(</span><span class="n">deliver_to</span><span class="p">(</span><span class="n">s</span><span class="p">))</span> <span class="p">{}</span>
+    <span class="p">}</span>
+
+    <span class="kt">bool</span> <span class="n">deliver_to</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">sender</span> <span class="o">*</span><span class="n">s</span><span class="p">)</span> <span class="p">{</span>
+        <span class="c1">// Deliver to single sender if supplied, else all consumers</span>
+        <span class="kt">int</span> <span class="n">count</span> <span class="o">=</span> <span class="n">s</span> <span class="o">?</span> <span class="mi">1</span> <span class="o">:</span> <span class="n">consumers_</span><span class="p">.</span><span class="n">size</span><span class="p">();</span>
+
+        <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">count</span><span class="p">)</span> <span class="k">return</span> <span class="nb">false</span><span class="p">;</span>
+
+        <span class="kt">bool</span> <span class="n">result</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
+        <span class="n">sender_list</span><span class="o">::</span><span class="n">iterator</span> <span class="n">it</span> <span class="o">=</span> <span class="n">consumers_</span><span class="p">.</span><span class="n">begin</span><span class="p">();</span>
+
+        <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">s</span> <span class="o">&amp;&amp;</span> <span class="n">count</span><span class="p">)</span> <span class="p">{</span>
+            <span class="n">s</span> <span class="o">=</span> <span class="o">&amp;*</span><span class="n">it</span><span class="p">;</span>
+        <span class="p">}</span>
+
+        <span class="k">while</span> <span class="p">(</span><span class="n">messages_</span><span class="p">.</span><span class="n">size</span><span class="p">())</span> <span class="p">{</span>
+            <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">credit</span><span class="p">())</span> <span class="p">{</span>
+                <span class="k">const</span> <span class="n">proton</span><span class="o">::</span><span class="n">message</span><span class="o">&amp;</span> <span class="n">m</span> <span class="o">=</span> <span class="n">messages_</span><span class="p">.</span><span class="n">front</span><span class="p">();</span>
+
+                <span class="n">s</span><span class="o">-&gt;</span><span class="n">send</span><span class="p">(</span><span class="n">m</span><span class="p">);</span>
+                <span class="n">messages_</span><span class="p">.</span><span class="n">pop_front</span><span class="p">();</span>
+                <span class="n">result</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
+            <span class="p">}</span>
+
+            <span class="k">if</span> <span class="p">(</span><span class="o">--</span><span class="n">count</span><span class="p">)</span> <span class="p">{</span>
+                <span class="n">it</span><span class="o">++</span><span class="p">;</span>
+            <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
+                <span class="k">return</span> <span class="n">result</span><span class="p">;</span>
+            <span class="p">}</span>
+        <span class="p">}</span>
+
+        <span class="k">return</span> <span class="nb">false</span><span class="p">;</span>
+    <span class="p">}</span>
+
+  <span class="k">private</span><span class="o">:</span>
+    <span class="k">typedef</span> <span class="n">std</span><span class="o">::</span><span class="n">deque</span><span class="o">&lt;</span><span class="n">proton</span><span class="o">::</span><span class="n">message</span><span class="o">&gt;</span> <span class="n">message_queue</span><span class="p">;</span>
+    <span class="k">typedef</span> <span class="n">std</span><span class="o">::</span><span class="n">list</span><span class="o">&lt;</span><span class="n">proton</span><span class="o">::</span><span class="n">sender</span><span class="o">&gt;</span> <span class="n">sender_list</span><span class="p">;</span>
+
+    <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">name_</span><span class="p">;</span>
+    <span class="kt">bool</span> <span class="n">dynamic_</span><span class="p">;</span>
+    <span class="n">message_queue</span> <span class="n">messages_</span><span class="p">;</span>
+    <span class="n">sender_list</span> <span class="n">consumers_</span><span class="p">;</span>
+<span class="p">};</span>
+
+<span class="c1">/// A collection of queues and queue factory, used by a broker.</span>
+<span class="k">class</span> <span class="nc">queues</span> <span class="p">{</span>
+  <span class="k">public</span><span class="o">:</span>
+    <span class="n">queues</span><span class="p">()</span> <span class="o">:</span> <span class="n">next_id_</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span> <span class="p">{}</span>
+    <span class="k">virtual</span> <span class="o">~</span><span class="n">queues</span><span class="p">()</span> <span class="p">{}</span>
+
+    <span class="c1">// Get or create a queue.</span>
+    <span class="k">virtual</span> <span class="n">queue</span> <span class="o">&amp;</span><span class="n">get</span><span class="p">(</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="o">&amp;</span><span class="n">address</span> <span class="o">=</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="p">())</span> <span class="p">{</span>
+        <span class="k">if</span> <span class="p">(</span><span class="n">address</span><span class="p">.</span><span class="n">empty</span><span class="p">())</span> <span class="p">{</span>
+            <span class="k">throw</span> <span class="n">std</span><span class="o">::</span><span class="n">runtime_error</span><span class="p">(</span><span class="s">&quot;empty queue name&quot;</span><span class="p">);</span>
+        <span class="p">}</span>
+
+        <span class="n">queue</span><span class="o">*&amp;</span> <span class="n">q</span> <span class="o">=</span> <span class="n">queues_</span><span class="p">[</span><span class="n">address</span><span class="p">];</span>
+
+        <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">q</span><span class="p">)</span> <span class="n">q</span> <span class="o">=</span> <span class="k">new</span> <span class="n">queue</span><span class="p">(</span><span class="n">address</span><span class="p">);</span>
+
+        <span class="k">return</span> <span class="o">*</span><span class="n">q</span><span class="p">;</span>
+    <span class="p">}</span>
+
+    <span class="c1">// Create a dynamic queue with a unique name.</span>
+    <span class="k">virtual</span> <span class="n">queue</span> <span class="o">&amp;</span><span class="n">dynamic</span><span class="p">()</span> <span class="p">{</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">ostringstream</span> <span class="n">os</span><span class="p">;</span>
+        <span class="n">os</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;q&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">next_id_</span><span class="o">++</span><span class="p">;</span>
+        <span class="n">queue</span> <span class="o">*</span><span class="n">q</span> <span class="o">=</span> <span class="n">queues_</span><span class="p">[</span><span class="n">os</span><span class="p">.</span><span class="n">str</span><span class="p">()]</span> <span class="o">=</span> <span class="k">new</span> <span class="n">queue</span><span class="p">(</span><span class="n">os</span><span class="p">.</span><span class="n">str</span><span class="p">(),</span> <span class="nb">true</span><span class="p">);</span>
+
+        <span class="k">return</span> <span class="o">*</span><span class="n">q</span><span class="p">;</span>
+    <span class="p">}</span>
+
+    <span class="c1">// Delete the named queue</span>
+    <span class="k">virtual</span> <span class="kt">void</span> <span class="n">erase</span><span class="p">(</span><span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="o">&amp;</span><span class="n">name</span><span class="p">)</span> <span class="p">{</span>
+        <span class="k">delete</span> <span class="n">queues_</span><span class="p">[</span><span class="n">name</span><span class="p">];</span>
+        <span class="n">queues_</span><span class="p">.</span><span class="n">erase</span><span class="p">(</span><span class="n">name</span><span class="p">);</span>
+    <span class="p">}</span>
+
+  <span class="k">protected</span><span class="o">:</span>
+    <span class="k">typedef</span> <span class="n">std</span><span class="o">::</span><span class="n">map</span><span class="o">&lt;</span><span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="p">,</span> <span class="n">queue</span> <span class="o">*&gt;</span> <span class="n">queue_map</span><span class="p">;</span>
+    <span class="n">queue_map</span> <span class="n">queues_</span><span class="p">;</span>
+    <span class="kt">uint64_t</span> <span class="n">next_id_</span><span class="p">;</span> <span class="c1">// Use to generate unique queue IDs.</span>
+<span class="p">};</span>
+
+<span class="cp">#include</span> <span class="cpf">&lt;proton/config.hpp&gt;</span><span class="cp"></span>
+
+
+<span class="k">class</span> <span class="nc">broker_handler</span> <span class="o">:</span> <span class="k">public</span> <span class="n">proton</span><span class="o">::</span><span class="n">messaging_handler</span> <span class="p">{</span>
+  <span class="k">public</span><span class="o">:</span>
+    <span class="n">broker_handler</span><span class="p">(</span><span class="n">queues</span><span class="o">&amp;</span> <span class="n">qs</span><span class="p">)</span> <span class="o">:</span> <span class="n">queues_</span><span class="p">(</span><span class="n">qs</span><span class="p">)</span> <span class="p">{}</span>
+
+    <span class="kt">void</span> <span class="n">on_transport_open</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">transport</span> <span class="o">&amp;</span><span class="n">t</span><span class="p">)</span> <span class="n">OVERRIDE</span> <span class="p">{</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Connection from user: &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">t</span><span class="p">.</span><span class="n">sasl</span><span class="p">().</span><span class="n">user</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="s">&quot; (mechanism: &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">t</span><span class="p">.</span><span class="n">sasl</span><span class="p">().</span><span class="n">mech</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;)&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+    <span class="p">}</span>
+
+    <span class="kt">void</span> <span class="n">on_sender_open</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">sender</span> <span class="o">&amp;</span><span class="n">sender</span><span class="p">)</span> <span class="n">OVERRIDE</span> <span class="p">{</span>
+        <span class="n">proton</span><span class="o">::</span><span class="n">source</span> <span class="n">src</span><span class="p">(</span><span class="n">sender</span><span class="p">.</span><span class="n">source</span><span class="p">());</span>
+        <span class="n">queue</span> <span class="o">&amp;</span><span class="n">q</span> <span class="o">=</span> <span class="n">src</span><span class="p">.</span><span class="n">dynamic</span><span class="p">()</span> <span class="o">?</span>
+            <span class="n">queues_</span><span class="p">.</span><span class="n">dynamic</span><span class="p">()</span> <span class="o">:</span> <span class="n">queues_</span><span class="p">.</span><span class="n">get</span><span class="p">(</span><span class="n">src</span><span class="p">.</span><span class="n">address</span><span class="p">());</span>
+        <span class="n">sender</span><span class="p">.</span><span class="n">open</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">sender_options</span><span class="p">().</span><span class="n">source</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">source_options</span><span class="p">().</span><span class="n">address</span><span class="p">(</span><span class="n">q</span><span class="p">.</span><span class="n">name</span><span class="p">())));</span>
+        <span class="n">q</span><span class="p">.</span><span class="n">subscribe</span><span class="p">(</span><span class="n">sender</span><span class="p">);</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;broker outgoing link from &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">q</span><span class="p">.</span><span class="n">name</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+    <span class="p">}</span>
+
+    <span class="kt">void</span> <span class="n">on_receiver_open</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">receiver</span> <span class="o">&amp;</span><span class="n">receiver</span><span class="p">)</span> <span class="n">OVERRIDE</span> <span class="p">{</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">address</span> <span class="o">=</span> <span class="n">receiver</span><span class="p">.</span><span class="n">target</span><span class="p">().</span><span class="n">address</span><span class="p">();</span>
+        <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">address</span><span class="p">.</span><span class="n">empty</span><span class="p">())</span> <span class="p">{</span>
+            <span class="n">receiver</span><span class="p">.</span><span class="n">open</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">receiver_options</span><span class="p">().</span><span class="n">target</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">target_options</span><span class="p">().</span><span class="n">address</span><span class="p">(</span><span class="n">address</span><span class="p">)));</span>
+            <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;broker incoming link to &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">address</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+        <span class="p">}</span>
+    <span class="p">}</span>
+
+    <span class="kt">void</span> <span class="n">unsubscribe</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">sender</span> <span class="n">lnk</span><span class="p">)</span> <span class="p">{</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">address</span> <span class="o">=</span> <span class="n">lnk</span><span class="p">.</span><span class="n">source</span><span class="p">().</span><span class="n">address</span><span class="p">();</span>
+
+        <span class="k">if</span> <span class="p">(</span><span class="n">queues_</span><span class="p">.</span><span class="n">get</span><span class="p">(</span><span class="n">address</span><span class="p">).</span><span class="n">unsubscribe</span><span class="p">(</span><span class="n">lnk</span><span class="p">))</span> <span class="p">{</span>
+            <span class="n">queues_</span><span class="p">.</span><span class="n">erase</span><span class="p">(</span><span class="n">address</span><span class="p">);</span>
+        <span class="p">}</span>
+    <span class="p">}</span>
+
+    <span class="kt">void</span> <span class="n">on_sender_close</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">sender</span> <span class="o">&amp;</span><span class="n">sender</span><span class="p">)</span> <span class="n">OVERRIDE</span> <span class="p">{</span>
+        <span class="n">unsubscribe</span><span class="p">(</span><span class="n">sender</span><span class="p">);</span>
+    <span class="p">}</span>
+
+    <span class="kt">void</span> <span class="n">on_connection_close</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">connection</span> <span class="o">&amp;</span><span class="n">c</span><span class="p">)</span> <span class="n">OVERRIDE</span> <span class="p">{</span>
+        <span class="n">remove_stale_consumers</span><span class="p">(</span><span class="n">c</span><span class="p">);</span>
+    <span class="p">}</span>
+
+    <span class="kt">void</span> <span class="n">on_transport_close</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">transport</span> <span class="o">&amp;</span><span class="n">t</span><span class="p">)</span> <span class="n">OVERRIDE</span> <span class="p">{</span>
+        <span class="n">remove_stale_consumers</span><span class="p">(</span><span class="n">t</span><span class="p">.</span><span class="n">connection</span><span class="p">());</span>
+    <span class="p">}</span>
+
+    <span class="kt">void</span> <span class="n">on_transport_error</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">transport</span> <span class="o">&amp;</span><span class="n">t</span><span class="p">)</span> <span class="n">OVERRIDE</span> <span class="p">{</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;broker client disconnect: &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">t</span><span class="p">.</span><span class="n">error</span><span class="p">().</span><span class="n">what</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+    <span class="p">}</span>
+
+    <span class="kt">void</span> <span class="n">on_error</span><span class="p">(</span><span class="k">const</span> <span class="n">proton</span><span class="o">::</span><span class="n">error_condition</span> <span class="o">&amp;</span><span class="n">c</span><span class="p">)</span> <span class="n">OVERRIDE</span> <span class="p">{</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">cerr</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;broker error: &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">c</span><span class="p">.</span><span class="n">what</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+    <span class="p">}</span>
+
+    <span class="kt">void</span> <span class="n">remove_stale_consumers</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">connection</span> <span class="n">connection</span><span class="p">)</span> <span class="p">{</span>
+        <span class="n">proton</span><span class="o">::</span><span class="n">sender_range</span> <span class="n">sr</span> <span class="o">=</span> <span class="n">connection</span><span class="p">.</span><span class="n">senders</span><span class="p">();</span>
+        <span class="k">for</span> <span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">sender_iterator</span> <span class="n">i</span> <span class="o">=</span> <span class="n">sr</span><span class="p">.</span><span class="n">begin</span><span class="p">();</span> <span class="n">i</span> <span class="o">!=</span> <span class="n">sr</span><span class="p">.</span><span class="n">end</span><span class="p">();</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span> <span class="p">{</span>
+            <span class="k">if</span> <span class="p">(</span><span class="n">i</span><span class="o">-&gt;</span><span class="n">active</span><span class="p">())</span>
+                <span class="n">unsubscribe</span><span class="p">(</span><span class="o">*</span><span class="n">i</span><span class="p">);</span>
+        <span class="p">}</span>
+    <span class="p">}</span>
+
+    <span class="kt">void</span> <span class="n">on_sendable</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">sender</span> <span class="o">&amp;</span><span class="n">s</span><span class="p">)</span> <span class="n">OVERRIDE</span> <span class="p">{</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">address</span> <span class="o">=</span> <span class="n">s</span><span class="p">.</span><span class="n">source</span><span class="p">().</span><span class="n">address</span><span class="p">();</span>
+
+        <span class="n">queues_</span><span class="p">.</span><span class="n">get</span><span class="p">(</span><span class="n">address</span><span class="p">).</span><span class="n">dispatch</span><span class="p">(</span><span class="o">&amp;</span><span class="n">s</span><span class="p">);</span>
+    <span class="p">}</span>
+
+    <span class="kt">void</span> <span class="n">on_message</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">delivery</span> <span class="o">&amp;</span><span class="n">d</span><span class="p">,</span> <span class="n">proton</span><span class="o">::</span><span class="n">message</span> <span class="o">&amp;</span><span class="n">m</span><span class="p">)</span> <span class="n">OVERRIDE</span> <span class="p">{</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">address</span> <span class="o">=</span> <span class="n">d</span><span class="p">.</span><span class="n">receiver</span><span class="p">().</span><span class="n">target</span><span class="p">().</span><span class="n">address</span><span class="p">();</span>
+        <span class="n">queues_</span><span class="p">.</span><span class="n">get</span><span class="p">(</span><span class="n">address</span><span class="p">).</span><span class="n">publish</span><span class="p">(</span><span class="n">m</span><span class="p">);</span>
+    <span class="p">}</span>
+
+  <span class="k">protected</span><span class="o">:</span>
+    <span class="n">queues</span><span class="o">&amp;</span> <span class="n">queues_</span><span class="p">;</span>
+<span class="p">};</span>
+
+<span class="cp">#endif </span><span class="c1">// BROKER_HPP</span>
+</pre></div>
+
+<p><a href="broker.hpp">Download this file</a></p>
+
+
+          <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/75ca8b14/content/releases/qpid-proton-0.13.0/proton/cpp/examples/client.cpp
----------------------------------------------------------------------
diff --git a/content/releases/qpid-proton-0.13.0/proton/cpp/examples/client.cpp b/content/releases/qpid-proton-0.13.0/proton/cpp/examples/client.cpp
new file mode 100755
index 0000000..dd22ccd
--- /dev/null
+++ b/content/releases/qpid-proton-0.13.0/proton/cpp/examples/client.cpp
@@ -0,0 +1,107 @@
+/*
+ *
+ * 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.
+ *
+ */
+
+#include "options.hpp"
+#include <proton/default_container.hpp>
+#include <proton/delivery.hpp>
+#include <proton/messaging_handler.hpp>
+#include <proton/connection.hpp>
+#include <proton/tracker.hpp>
+#include <proton/source_options.hpp>
+
+#include <iostream>
+#include <vector>
+
+#include "fake_cpp11.hpp"
+
+using proton::receiver_options;
+using proton::source_options;
+
+class client : public proton::messaging_handler {
+  private:
+    std::string url;
+    std::vector<std::string> requests;
+    proton::sender sender;
+    proton::receiver receiver;
+
+  public:
+    client(const std::string &u, const std::vector<std::string>& r) : url(u), requests(r) {}
+
+    void on_container_start(proton::container &c) OVERRIDE {
+        sender = c.open_sender(url);
+        // Create a receiver requesting a dynamically created queue
+        // for the message source.
+        receiver_options opts = receiver_options().source(source_options().dynamic(true));
+        receiver = sender.connection().open_receiver("", opts);
+    }
+
+    void send_request() {
+        proton::message req;
+        req.body(requests.front());
+        req.reply_to(receiver.source().address());
+        sender.send(req);
+    }
+
+    void on_receiver_open(proton::receiver &) OVERRIDE {
+        send_request();
+    }
+
+    void on_message(proton::delivery &d, proton::message &response) OVERRIDE {
+        if (requests.empty()) return; // Spurious extra message!
+
+        std::cout << requests.front() << " => " << response.body() << std::endl;
+        requests.erase(requests.begin());
+
+        if (!requests.empty()) {
+            send_request();
+        } else {
+            d.connection().close();
+        }
+    }
+};
+
+int main(int argc, char **argv) {
+    std::string url("127.0.0.1:5672/examples");
+    example::options opts(argc, argv);
+
+    opts.add_value(url, 'a', "address", "connect and send to URL", "URL");
+
+    try {
+        opts.parse();
+
+        std::vector<std::string> requests;
+        requests.push_back("Twas brillig, and the slithy toves");
+        requests.push_back("Did gire and gymble in the wabe.");
+        requests.push_back("All mimsy were the borogroves,");
+        requests.push_back("And the mome raths outgrabe.");
+
+        client c(url, requests);
+        proton::default_container(c).run();
+
+        return 0;
+    } catch (const example::bad_option& e) {
+        std::cout << opts << std::endl << e.what() << std::endl;
+    } catch (const std::exception& e) {
+        std::cerr << e.what() << std::endl;
+    }
+
+    return 1;
+}

http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/content/releases/qpid-proton-0.13.0/proton/cpp/examples/client.cpp.html
----------------------------------------------------------------------
diff --git a/content/releases/qpid-proton-0.13.0/proton/cpp/examples/client.cpp.html b/content/releases/qpid-proton-0.13.0/proton/cpp/examples/client.cpp.html
new file mode 100644
index 0000000..8913fcb
--- /dev/null
+++ b/content/releases/qpid-proton-0.13.0/proton/cpp/examples/client.cpp.html
@@ -0,0 +1,235 @@
+<!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>client.cpp - 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/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;">
+        <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-proton-0.13.0/index.html">Qpid Proton 0.13.0</a></li><li><a href="/releases/qpid-proton-0.13.0/proton/cpp/examples/index.html">Proton C++ Examples</a></li><li>client.cpp</li></ul>
+
+        <div id="-middle-content">
+          
+<h1>client.cpp</h1>
+<div class="highlight"><pre><span></span><span class="cp">#include</span> <span class="cpf">&quot;options.hpp&quot;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/default_container.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/delivery.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/messaging_handler.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/connection.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/tracker.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/source_options.hpp&gt;</span><span class="cp"></span>
+
+<span class="cp">#include</span> <span class="cpf">&lt;iostream&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;vector&gt;</span><span class="cp"></span>
+
+<span class="cp">#include</span> <span class="cpf">&quot;fake_cpp11.hpp&quot;</span><span class="cp"></span>
+
+<span class="k">using</span> <span class="n">proton</span><span class="o">::</span><span class="n">receiver_options</span><span class="p">;</span>
+<span class="k">using</span> <span class="n">proton</span><span class="o">::</span><span class="n">source_options</span><span class="p">;</span>
+
+<span class="k">class</span> <span class="nc">client</span> <span class="o">:</span> <span class="k">public</span> <span class="n">proton</span><span class="o">::</span><span class="n">messaging_handler</span> <span class="p">{</span>
+  <span class="k">private</span><span class="o">:</span>
+    <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">url</span><span class="p">;</span>
+    <span class="n">std</span><span class="o">::</span><span class="n">vector</span><span class="o">&lt;</span><span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="o">&gt;</span> <span class="n">requests</span><span class="p">;</span>
+    <span class="n">proton</span><span class="o">::</span><span class="n">sender</span> <span class="n">sender</span><span class="p">;</span>
+    <span class="n">proton</span><span class="o">::</span><span class="n">receiver</span> <span class="n">receiver</span><span class="p">;</span>
+
+  <span class="k">public</span><span class="o">:</span>
+    <span class="n">client</span><span class="p">(</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="o">&amp;</span><span class="n">u</span><span class="p">,</span> <span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">vector</span><span class="o">&lt;</span><span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="o">&gt;&amp;</span> <span class="n">r</span><span class="p">)</span> <span class="o">:</span> <span class="n">url</span><span class="p">(</span><span class="n">u</span><span class="p">),</span> <span class="n">requests</span><span class="p">(</span><span class="n">r</span><span class="p">)</span> <span class="p">{}</span>
+
+    <span class="kt">void</span> <span class="n">on_container_start</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">container</span> <span class="o">&amp;</span><span class="n">c</span><span class="p">)</span> <span class="n">OVERRIDE</span> <span class="p">{</span>
+        <span class="n">sender</span> <span class="o">=</span> <span class="n">c</span><span class="p">.</span><span class="n">open_sender</span><span class="p">(</span><span class="n">url</span><span class="p">);</span>
+        <span class="c1">// Create a receiver requesting a dynamically created queue</span>
+        <span class="c1">// for the message source.</span>
+        <span class="n">receiver_options</span> <span class="n">opts</span> <span class="o">=</span> <span class="n">receiver_options</span><span class="p">().</span><span class="n">source</span><span class="p">(</span><span class="n">source_options</span><span class="p">().</span><span class="n">dynamic</span><span class="p">(</span><span class="nb">true</span><span class="p">));</span>
+        <span class="n">receiver</span> <span class="o">=</span> <span class="n">sender</span><span class="p">.</span><span class="n">connection</span><span class="p">().</span><span class="n">open_receiver</span><span class="p">(</span><span class="s">&quot;&quot;</span><span class="p">,</span> <span class="n">opts</span><span class="p">);</span>
+    <span class="p">}</span>
+
+    <span class="kt">void</span> <span class="n">send_request</span><span class="p">()</span> <span class="p">{</span>
+        <span class="n">proton</span><span class="o">::</span><span class="n">message</span> <span class="n">req</span><span class="p">;</span>
+        <span class="n">req</span><span class="p">.</span><span class="n">body</span><span class="p">(</span><span class="n">requests</span><span class="p">.</span><span class="n">front</span><span class="p">());</span>
+        <span class="n">req</span><span class="p">.</span><span class="n">reply_to</span><span class="p">(</span><span class="n">receiver</span><span class="p">.</span><span class="n">source</span><span class="p">().</span><span class="n">address</span><span class="p">());</span>
+        <span class="n">sender</span><span class="p">.</span><span class="n">send</span><span class="p">(</span><span class="n">req</span><span class="p">);</span>
+    <span class="p">}</span>
+
+    <span class="kt">void</span> <span class="n">on_receiver_open</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">receiver</span> <span class="o">&amp;</span><span class="p">)</span> <span class="n">OVERRIDE</span> <span class="p">{</span>
+        <span class="n">send_request</span><span class="p">();</span>
+    <span class="p">}</span>
+
+    <span class="kt">void</span> <span class="n">on_message</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">delivery</span> <span class="o">&amp;</span><span class="n">d</span><span class="p">,</span> <span class="n">proton</span><span class="o">::</span><span class="n">message</span> <span class="o">&amp;</span><span class="n">response</span><span class="p">)</span> <span class="n">OVERRIDE</span> <span class="p">{</span>
+        <span class="k">if</span> <span class="p">(</span><span class="n">requests</span><span class="p">.</span><span class="n">empty</span><span class="p">())</span> <span class="k">return</span><span class="p">;</span> <span class="c1">// Spurious extra message!</span>
+
+        <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="n">requests</span><span class="p">.</span><span class="n">front</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="s">&quot; =&gt; &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">response</span><span class="p">.</span><span class="n">body</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+        <span class="n">requests</span><span class="p">.</span><span class="n">erase</span><span class="p">(</span><span class="n">requests</span><span class="p">.</span><span class="n">begin</span><span class="p">());</span>
+
+        <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">requests</span><span class="p">.</span><span class="n">empty</span><span class="p">())</span> <span class="p">{</span>
+            <span class="n">send_request</span><span class="p">();</span>
+        <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
+            <span class="n">d</span><span class="p">.</span><span class="n">connection</span><span class="p">().</span><span class="n">close</span><span class="p">();</span>
+        <span class="p">}</span>
+    <span class="p">}</span>
+<span class="p">};</span>
+
+<span class="kt">int</span> <span class="nf">main</span><span class="p">(</span><span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">**</span><span class="n">argv</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">url</span><span class="p">(</span><span class="s">&quot;127.0.0.1:5672/examples&quot;</span><span class="p">);</span>
+    <span class="n">example</span><span class="o">::</span><span class="n">options</span> <span class="n">opts</span><span class="p">(</span><span class="n">argc</span><span class="p">,</span> <span class="n">argv</span><span class="p">);</span>
+
+    <span class="n">opts</span><span class="p">.</span><span class="n">add_value</span><span class="p">(</span><span class="n">url</span><span class="p">,</span> <span class="sc">&#39;a&#39;</span><span class="p">,</span> <span class="s">&quot;address&quot;</span><span class="p">,</span> <span class="s">&quot;connect and send to URL&quot;</span><span class="p">,</span> <span class="s">&quot;URL&quot;</span><span class="p">);</span>
+
+    <span class="k">try</span> <span class="p">{</span>
+        <span class="n">opts</span><span class="p">.</span><span class="n">parse</span><span class="p">();</span>
+
+        <span class="n">std</span><span class="o">::</span><span class="n">vector</span><span class="o">&lt;</span><span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="o">&gt;</span> <span class="n">requests</span><span class="p">;</span>
+        <span class="n">requests</span><span class="p">.</span><span class="n">push_back</span><span class="p">(</span><span class="s">&quot;Twas brillig, and the slithy toves&quot;</span><span class="p">);</span>
+        <span class="n">requests</span><span class="p">.</span><span class="n">push_back</span><span class="p">(</span><span class="s">&quot;Did gire and gymble in the wabe.&quot;</span><span class="p">);</span>
+        <span class="n">requests</span><span class="p">.</span><span class="n">push_back</span><span class="p">(</span><span class="s">&quot;All mimsy were the borogroves,&quot;</span><span class="p">);</span>
+        <span class="n">requests</span><span class="p">.</span><span class="n">push_back</span><span class="p">(</span><span class="s">&quot;And the mome raths outgrabe.&quot;</span><span class="p">);</span>
+
+        <span class="n">client</span> <span class="n">c</span><span class="p">(</span><span class="n">url</span><span class="p">,</span> <span class="n">requests</span><span class="p">);</span>
+        <span class="n">proton</span><span class="o">::</span><span class="n">default_container</span><span class="p">(</span><span class="n">c</span><span class="p">).</span><span class="n">run</span><span class="p">();</span>
+
+        <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">catch</span> <span class="p">(</span><span class="k">const</span> <span class="n">example</span><span class="o">::</span><span class="n">bad_option</span><span class="o">&amp;</span> <span class="n">e</span><span class="p">)</span> <span class="p">{</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="n">opts</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span> <span class="o">&lt;&lt;</span> <span class="n">e</span><span class="p">.</span><span class="n">what</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">catch</span> <span class="p">(</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">exception</span><span class="o">&amp;</span> <span class="n">e</span><span class="p">)</span> <span class="p">{</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">cerr</span> <span class="o">&lt;&lt;</span> <span class="n">e</span><span class="p">.</span><span class="n">what</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+    <span class="p">}</span>
+
+    <span class="k">return</span> <span class="mi">1</span><span class="p">;</span>
+<span class="p">}</span>
+</pre></div>
+
+<p><a href="client.cpp">Download this file</a></p>
+
+
+          <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/75ca8b14/content/releases/qpid-proton-0.13.0/proton/cpp/examples/connection_options.cpp
----------------------------------------------------------------------
diff --git a/content/releases/qpid-proton-0.13.0/proton/cpp/examples/connection_options.cpp b/content/releases/qpid-proton-0.13.0/proton/cpp/examples/connection_options.cpp
new file mode 100755
index 0000000..f9935a8
--- /dev/null
+++ b/content/releases/qpid-proton-0.13.0/proton/cpp/examples/connection_options.cpp
@@ -0,0 +1,76 @@
+/*
+ *
+ * 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.
+ *
+ */
+
+#include <proton/connection.hpp>
+#include <proton/connection_options.hpp>
+#include <proton/default_container.hpp>
+#include <proton/messaging_handler.hpp>
+#include <proton/transport.hpp>
+
+#include <iostream>
+
+using proton::connection_options;
+
+#include "fake_cpp11.hpp"
+
+class handler_2 : public proton::messaging_handler {
+    void on_connection_open(proton::connection &c) OVERRIDE {
+        std::cout << "connection events going to handler_2" << std::endl;
+        std::cout << "connection max_frame_size: " << c.max_frame_size() <<
+            ", idle timeout: " << c.idle_timeout() << std::endl;
+        c.close();
+    }
+};
+
+class main_handler : public proton::messaging_handler {
+  private:
+    std::string url;
+    handler_2 conn_handler;
+
+  public:
+    main_handler(const std::string& u) : url(u) {}
+
+    void on_container_start(proton::container &c) OVERRIDE {
+        // Connection options for this connection.  Merged with and overriding the container's
+        // client_connection_options() settings.
+        c.connect(url, connection_options().handler(conn_handler).max_frame_size(2468));
+    }
+
+    void on_connection_open(proton::connection &c) OVERRIDE {
+        std::cout << "unexpected connection event on main handler" << std::endl;
+        c.close();
+    }
+};
+
+int main(int argc, char **argv) {
+    try {
+        std::string url = argc > 1 ? argv[1] : "127.0.0.1:5672/examples";
+        main_handler handler(url);
+        proton::default_container container(handler);
+        // Global connection options for future connections on container.
+        container.client_connection_options(connection_options().max_frame_size(12345).idle_timeout(proton::duration(15000)));
+        container.run();
+        return 0;
+    } catch (const std::exception& e) {
+        std::cerr << e.what() << std::endl;
+    }
+    return 1;
+}

http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/content/releases/qpid-proton-0.13.0/proton/cpp/examples/connection_options.cpp.html
----------------------------------------------------------------------
diff --git a/content/releases/qpid-proton-0.13.0/proton/cpp/examples/connection_options.cpp.html b/content/releases/qpid-proton-0.13.0/proton/cpp/examples/connection_options.cpp.html
new file mode 100644
index 0000000..41adf25
--- /dev/null
+++ b/content/releases/qpid-proton-0.13.0/proton/cpp/examples/connection_options.cpp.html
@@ -0,0 +1,204 @@
+<!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>connection_options.cpp - 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/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;">
+        <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-proton-0.13.0/index.html">Qpid Proton 0.13.0</a></li><li><a href="/releases/qpid-proton-0.13.0/proton/cpp/examples/index.html">Proton C++ Examples</a></li><li>connection_options.cpp</li></ul>
+
+        <div id="-middle-content">
+          
+<h1>connection_options.cpp</h1>
+<div class="highlight"><pre><span></span><span class="cp">#include</span> <span class="cpf">&lt;proton/connection.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/connection_options.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/default_container.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/messaging_handler.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/transport.hpp&gt;</span><span class="cp"></span>
+
+<span class="cp">#include</span> <span class="cpf">&lt;iostream&gt;</span><span class="cp"></span>
+
+<span class="k">using</span> <span class="n">proton</span><span class="o">::</span><span class="n">connection_options</span><span class="p">;</span>
+
+<span class="cp">#include</span> <span class="cpf">&quot;fake_cpp11.hpp&quot;</span><span class="cp"></span>
+
+<span class="k">class</span> <span class="nc">handler_2</span> <span class="o">:</span> <span class="k">public</span> <span class="n">proton</span><span class="o">::</span><span class="n">messaging_handler</span> <span class="p">{</span>
+    <span class="kt">void</span> <span class="n">on_connection_open</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">connection</span> <span class="o">&amp;</span><span class="n">c</span><span class="p">)</span> <span class="n">OVERRIDE</span> <span class="p">{</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;connection events going to handler_2&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;connection max_frame_size: &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">c</span><span class="p">.</span><span class="n">max_frame_size</span><span class="p">()</span> <span class="o">&lt;&lt;</span>
+            <span class="s">&quot;, idle timeout: &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">c</span><span class="p">.</span><span class="n">idle_timeout</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+        <span class="n">c</span><span class="p">.</span><span class="n">close</span><span class="p">();</span>
+    <span class="p">}</span>
+<span class="p">};</span>
+
+<span class="k">class</span> <span class="nc">main_handler</span> <span class="o">:</span> <span class="k">public</span> <span class="n">proton</span><span class="o">::</span><span class="n">messaging_handler</span> <span class="p">{</span>
+  <span class="k">private</span><span class="o">:</span>
+    <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">url</span><span class="p">;</span>
+    <span class="n">handler_2</span> <span class="n">conn_handler</span><span class="p">;</span>
+
+  <span class="k">public</span><span class="o">:</span>
+    <span class="n">main_handler</span><span class="p">(</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="o">&amp;</span> <span class="n">u</span><span class="p">)</span> <span class="o">:</span> <span class="n">url</span><span class="p">(</span><span class="n">u</span><span class="p">)</span> <span class="p">{}</span>
+
+    <span class="kt">void</span> <span class="n">on_container_start</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">container</span> <span class="o">&amp;</span><span class="n">c</span><span class="p">)</span> <span class="n">OVERRIDE</span> <span class="p">{</span>
+        <span class="c1">// Connection options for this connection.  Merged with and overriding the container&#39;s</span>
+        <span class="c1">// client_connection_options() settings.</span>
+        <span class="n">c</span><span class="p">.</span><span class="n">connect</span><span class="p">(</span><span class="n">url</span><span class="p">,</span> <span class="n">connection_options</span><span class="p">().</span><span class="n">handler</span><span class="p">(</span><span class="n">conn_handler</span><span class="p">).</span><span class="n">max_frame_size</span><span class="p">(</span><span class="mi">2468</span><span class="p">));</span>
+    <span class="p">}</span>
+
+    <span class="kt">void</span> <span class="n">on_connection_open</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">connection</span> <span class="o">&amp;</span><span class="n">c</span><span class="p">)</span> <span class="n">OVERRIDE</span> <span class="p">{</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;unexpected connection event on main handler&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+        <span class="n">c</span><span class="p">.</span><span class="n">close</span><span class="p">();</span>
+    <span class="p">}</span>
+<span class="p">};</span>
+
+<span class="kt">int</span> <span class="nf">main</span><span class="p">(</span><span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">**</span><span class="n">argv</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">try</span> <span class="p">{</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">url</span> <span class="o">=</span> <span class="n">argc</span> <span class="o">&gt;</span> <span class="mi">1</span> <span class="o">?</span> <span class="n">argv</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">:</span> <span class="s">&quot;127.0.0.1:5672/examples&quot;</span><span class="p">;</span>
+        <span class="n">main_handler</span> <span class="n">handler</span><span class="p">(</span><span class="n">url</span><span class="p">);</span>
+        <span class="n">proton</span><span class="o">::</span><span class="n">default_container</span> <span class="n">container</span><span class="p">(</span><span class="n">handler</span><span class="p">);</span>
+        <span class="c1">// Global connection options for future connections on container.</span>
+        <span class="n">container</span><span class="p">.</span><span class="n">client_connection_options</span><span class="p">(</span><span class="n">connection_options</span><span class="p">().</span><span class="n">max_frame_size</span><span class="p">(</span><span class="mi">12345</span><span class="p">).</span><span class="n">idle_timeout</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">duration</span><span class="p">(</span><span class="mi">15000</span><span class="p">)));</span>
+        <span class="n">container</span><span class="p">.</span><span class="n">run</span><span class="p">();</span>
+        <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">catch</span> <span class="p">(</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">exception</span><span class="o">&amp;</span> <span class="n">e</span><span class="p">)</span> <span class="p">{</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">cerr</span> <span class="o">&lt;&lt;</span> <span class="n">e</span><span class="p">.</span><span class="n">what</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+    <span class="p">}</span>
+    <span class="k">return</span> <span class="mi">1</span><span class="p">;</span>
+<span class="p">}</span>
+</pre></div>
+
+<p><a href="connection_options.cpp">Download this file</a></p>
+
+
+          <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/75ca8b14/content/releases/qpid-proton-0.13.0/proton/cpp/examples/direct_recv.cpp
----------------------------------------------------------------------
diff --git a/content/releases/qpid-proton-0.13.0/proton/cpp/examples/direct_recv.cpp b/content/releases/qpid-proton-0.13.0/proton/cpp/examples/direct_recv.cpp
new file mode 100755
index 0000000..edbc8b6
--- /dev/null
+++ b/content/releases/qpid-proton-0.13.0/proton/cpp/examples/direct_recv.cpp
@@ -0,0 +1,91 @@
+/*
+ *
+ * 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.
+ *
+ */
+
+#include "options.hpp"
+
+#include <proton/connection.hpp>
+#include <proton/default_container.hpp>
+#include <proton/delivery.hpp>
+#include <proton/messaging_handler.hpp>
+#include <proton/link.hpp>
+#include <proton/value.hpp>
+
+#include <iostream>
+#include <map>
+
+#include "fake_cpp11.hpp"
+
+class direct_recv : public proton::messaging_handler {
+  private:
+    std::string url;
+    proton::listener listener;
+    uint64_t expected;
+    uint64_t received;
+
+  public:
+    direct_recv(const std::string &s, int c) : url(s), expected(c), received(0) {}
+
+    void on_container_start(proton::container &c) OVERRIDE {
+        listener = c.listen(url);
+        std::cout << "direct_recv listening on " << url << std::endl;
+    }
+
+    void on_message(proton::delivery &d, proton::message &msg) OVERRIDE {
+        if (proton::coerce<uint64_t>(msg.id()) < received) {
+            return; // Ignore duplicate
+        }
+
+        if (expected == 0 || received < expected) {
+            std::cout << msg.body() << std::endl;
+            received++;
+        }
+
+        if (received == expected) {
+            d.receiver().close();
+            d.connection().close();
+            listener.stop();
+        }
+    }
+};
+
+int main(int argc, char **argv) {
+    std::string address("127.0.0.1:5672/examples");
+    int message_count = 100;
+    example::options opts(argc, argv);
+
+    opts.add_value(address, 'a', "address", "listen and receive on URL", "URL");
+    opts.add_value(message_count, 'm', "messages", "receive COUNT messages", "COUNT");
+
+    try {
+        opts.parse();
+
+        direct_recv recv(address, message_count);
+        proton::default_container(recv).run();
+
+        return 0;
+    } catch (const example::bad_option& e) {
+        std::cout << opts << std::endl << e.what() << std::endl;
+    } catch (const std::exception& e) {
+        std::cerr << e.what() << std::endl;
+    }
+
+    return 1;
+}


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


[07/26] qpid-site git commit: QPID-7350: Examples that should have gone with the previous commit

Posted by jr...@apache.org.
http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/input/releases/qpid-proton-0.13.0/proton/cpp/examples/options.hpp.html.in
----------------------------------------------------------------------
diff --git a/input/releases/qpid-proton-0.13.0/proton/cpp/examples/options.hpp.html.in b/input/releases/qpid-proton-0.13.0/proton/cpp/examples/options.hpp.html.in
new file mode 100644
index 0000000..bf35557
--- /dev/null
+++ b/input/releases/qpid-proton-0.13.0/proton/cpp/examples/options.hpp.html.in
@@ -0,0 +1,161 @@
+
+<h1>options.hpp</h1>
+<div class="highlight"><pre><span></span><span class="cp">#ifndef OPTIONS_HPP</span>
+<span class="cp">#define OPTIONS_HPP</span>
+
+
+<span class="cp">#include</span> <span class="cpf">&lt;string&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;sstream&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;ostream&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;vector&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;stdexcept&gt;</span><span class="cp"></span>
+
+<span class="k">namespace</span> <span class="n">example</span> <span class="p">{</span>
+
+<span class="k">struct</span> <span class="nl">bad_option</span> <span class="p">:</span> <span class="k">public</span> <span class="n">std</span><span class="o">::</span><span class="n">runtime_error</span> <span class="p">{</span>
+    <span class="n">bad_option</span><span class="p">(</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="o">&amp;</span> <span class="n">s</span><span class="p">)</span> <span class="o">:</span> <span class="n">std</span><span class="o">::</span><span class="n">runtime_error</span><span class="p">(</span><span class="n">s</span><span class="p">)</span> <span class="p">{}</span>
+<span class="p">};</span>
+
+
+<span class="k">class</span> <span class="nc">options</span> <span class="p">{</span>
+  <span class="k">public</span><span class="o">:</span>
+
+    <span class="n">options</span><span class="p">(</span><span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="k">const</span> <span class="o">*</span> <span class="k">const</span> <span class="o">*</span> <span class="n">argv</span><span class="p">)</span> <span class="o">:</span> <span class="n">argc_</span><span class="p">(</span><span class="n">argc</span><span class="p">),</span> <span class="n">argv_</span><span class="p">(</span><span class="n">argv</span><span class="p">),</span> <span class="n">prog_</span><span class="p">(</span><span class="n">argv</span><span class="p">[</span><span class="mi">0</span><span class="p">]),</span> <span class="n">help_</span><span class="p">()</span> <span class="p">{</span>
+        <span class="kt">size_t</span> <span class="n">slash</span> <span class="o">=</span> <span class="n">prog_</span><span class="p">.</span><span class="n">find_last_of</span><span class="p">(</span><span class="s">&quot;/</span><span class="se">\\</span><span class="s">&quot;</span><span class="p">);</span>
+        <span class="k">if</span> <span class="p">(</span><span class="n">slash</span> <span class="o">!=</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="o">::</span><span class="n">npos</span><span class="p">)</span>
+            <span class="n">prog_</span> <span class="o">=</span> <span class="n">prog_</span><span class="p">.</span><span class="n">substr</span><span class="p">(</span><span class="n">slash</span><span class="o">+</span><span class="mi">1</span><span class="p">);</span> <span class="c1">// Extract prog name from path</span>
+        <span class="n">add_flag</span><span class="p">(</span><span class="n">help_</span><span class="p">,</span> <span class="sc">&#39;h&#39;</span><span class="p">,</span> <span class="s">&quot;help&quot;</span><span class="p">,</span> <span class="s">&quot;Print the help message&quot;</span><span class="p">);</span>
+    <span class="p">}</span>
+
+    <span class="o">~</span><span class="n">options</span><span class="p">()</span> <span class="p">{</span>
+        <span class="k">for</span> <span class="p">(</span><span class="n">opts</span><span class="o">::</span><span class="n">iterator</span> <span class="n">i</span> <span class="o">=</span> <span class="n">opts_</span><span class="p">.</span><span class="n">begin</span><span class="p">();</span> <span class="n">i</span> <span class="o">!=</span> <span class="n">opts_</span><span class="p">.</span><span class="n">end</span><span class="p">();</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span>
+            <span class="k">delete</span> <span class="o">*</span><span class="n">i</span><span class="p">;</span>
+    <span class="p">}</span>
+
+    
+    <span class="k">template</span><span class="o">&lt;</span><span class="k">class</span> <span class="nc">T</span><span class="o">&gt;</span>
+    <span class="kt">void</span> <span class="n">add_value</span><span class="p">(</span><span class="n">T</span><span class="o">&amp;</span> <span class="n">value</span><span class="p">,</span> <span class="kt">char</span> <span class="n">short_name</span><span class="p">,</span> <span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="o">&amp;</span> <span class="n">long_name</span><span class="p">,</span> <span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="o">&amp;</span> <span class="n">description</span><span class="p">,</span> <span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">var</span><span class="p">)</span> <span class="p">{</span>
+        <span class="n">opts_</span><span class="p">.</span><span class="n">push_back</span><span class="p">(</span><span class="k">new</span> <span class="n">option_value</span><span class="o">&lt;</span><span class="n">T</span><span class="o">&gt;</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="n">short_name</span><span class="p">,</span> <span class="n">long_name</span><span class="p">,</span> <span class="n">description</span><span class="p">,</span> <span class="n">var</span><span class="p">));</span>
+    <span class="p">}</span>
+
+    
+    <span class="kt">void</span> <span class="n">add_flag</span><span class="p">(</span><span class="kt">bool</span><span class="o">&amp;</span> <span class="n">flag</span><span class="p">,</span> <span class="kt">char</span> <span class="n">short_name</span><span class="p">,</span> <span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="o">&amp;</span> <span class="n">long_name</span><span class="p">,</span> <span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="o">&amp;</span> <span class="n">description</span><span class="p">)</span> <span class="p">{</span>
+        <span class="n">opts_</span><span class="p">.</span><span class="n">push_back</span><span class="p">(</span><span class="k">new</span> <span class="n">option_flag</span><span class="p">(</span><span class="n">flag</span><span class="p">,</span> <span class="n">short_name</span><span class="p">,</span> <span class="n">long_name</span><span class="p">,</span> <span class="n">description</span><span class="p">));</span>
+    <span class="p">}</span>
+
+    
+    <span class="kt">int</span> <span class="n">parse</span><span class="p">()</span> <span class="p">{</span>
+        <span class="kt">int</span> <span class="n">arg</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+        <span class="k">for</span> <span class="p">(;</span> <span class="n">arg</span> <span class="o">&lt;</span> <span class="n">argc_</span> <span class="o">&amp;&amp;</span> <span class="n">argv_</span><span class="p">[</span><span class="n">arg</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span> <span class="o">==</span> <span class="sc">&#39;-&#39;</span><span class="p">;</span> <span class="o">++</span><span class="n">arg</span><span class="p">)</span> <span class="p">{</span>
+            <span class="n">opts</span><span class="o">::</span><span class="n">iterator</span> <span class="n">i</span> <span class="o">=</span> <span class="n">opts_</span><span class="p">.</span><span class="n">begin</span><span class="p">();</span>
+            <span class="k">while</span> <span class="p">(</span><span class="n">i</span> <span class="o">!=</span> <span class="n">opts_</span><span class="p">.</span><span class="n">end</span><span class="p">()</span> <span class="o">&amp;&amp;</span> <span class="o">!</span><span class="p">(</span><span class="o">*</span><span class="n">i</span><span class="p">)</span><span class="o">-&gt;</span><span class="n">parse</span><span class="p">(</span><span class="n">argc_</span><span class="p">,</span> <span class="n">argv_</span><span class="p">,</span> <span class="n">arg</span><span class="p">))</span>
+                <span class="o">++</span><span class="n">i</span><span class="p">;</span>
+            <span class="k">if</span> <span class="p">(</span><span class="n">i</span> <span class="o">==</span> <span class="n">opts_</span><span class="p">.</span><span class="n">end</span><span class="p">())</span>
+                <span class="k">throw</span> <span class="n">bad_option</span><span class="p">(</span><span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="p">(</span><span class="s">&quot;unknown option &quot;</span><span class="p">)</span> <span class="o">+</span> <span class="n">argv_</span><span class="p">[</span><span class="n">arg</span><span class="p">]);</span>
+        <span class="p">}</span>
+        <span class="k">if</span> <span class="p">(</span><span class="n">help_</span><span class="p">)</span> <span class="k">throw</span> <span class="n">bad_option</span><span class="p">(</span><span class="s">&quot;&quot;</span><span class="p">);</span>
+        <span class="k">return</span> <span class="n">arg</span><span class="p">;</span>
+    <span class="p">}</span>
+
+    
+  <span class="k">friend</span> <span class="n">std</span><span class="o">::</span><span class="n">ostream</span><span class="o">&amp;</span> <span class="k">operator</span><span class="o">&lt;&lt;</span><span class="p">(</span><span class="n">std</span><span class="o">::</span><span class="n">ostream</span><span class="o">&amp;</span> <span class="n">os</span><span class="p">,</span> <span class="k">const</span> <span class="n">options</span><span class="o">&amp;</span> <span class="n">op</span><span class="p">)</span> <span class="p">{</span>
+      <span class="n">os</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;usage: &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">op</span><span class="p">.</span><span class="n">prog_</span> <span class="o">&lt;&lt;</span> <span class="s">&quot; [options]&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+      <span class="n">os</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;options:&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+      <span class="k">for</span> <span class="p">(</span><span class="n">opts</span><span class="o">::</span><span class="n">const_iterator</span> <span class="n">i</span> <span class="o">=</span> <span class="n">op</span><span class="p">.</span><span class="n">opts_</span><span class="p">.</span><span class="n">begin</span><span class="p">();</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">op</span><span class="p">.</span><span class="n">opts_</span><span class="p">.</span><span class="n">end</span><span class="p">();</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span>
+          <span class="n">os</span> <span class="o">&lt;&lt;</span> <span class="o">**</span><span class="n">i</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+      <span class="k">return</span> <span class="n">os</span><span class="p">;</span>
+  <span class="p">}</span>
+
+ <span class="k">private</span><span class="o">:</span>
+    <span class="k">class</span> <span class="nc">option</span> <span class="p">{</span>
+      <span class="k">public</span><span class="o">:</span>
+        <span class="n">option</span><span class="p">(</span><span class="kt">char</span> <span class="n">s</span><span class="p">,</span> <span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="o">&amp;</span> <span class="n">l</span><span class="p">,</span> <span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="o">&amp;</span> <span class="n">d</span><span class="p">,</span> <span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">v</span><span class="p">)</span> <span class="o">:</span>
+            <span class="n">short_</span><span class="p">(</span><span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="p">(</span><span class="s">&quot;-&quot;</span><span class="p">)</span> <span class="o">+</span> <span class="n">s</span><span class="p">),</span> <span class="n">long_</span><span class="p">(</span><span class="s">&quot;--&quot;</span> <span class="o">+</span> <span class="n">l</span><span class="p">),</span> <span class="n">desc_</span><span class="p">(</span><span class="n">d</span><span class="p">),</span> <span class="n">var_</span><span class="p">(</span><span class="n">v</span><span class="p">)</span> <span class="p">{}</span>
+        <span class="k">virtual</span> <span class="o">~</span><span class="n">option</span><span class="p">()</span> <span class="p">{}</span>
+
+        <span class="k">virtual</span> <span class="kt">bool</span> <span class="n">parse</span><span class="p">(</span><span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="k">const</span> <span class="o">*</span> <span class="k">const</span> <span class="o">*</span> <span class="n">argv</span><span class="p">,</span> <span class="kt">int</span> <span class="o">&amp;</span><span class="n">i</span><span class="p">)</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+        <span class="k">virtual</span> <span class="kt">void</span> <span class="nf">print_default</span><span class="p">(</span><span class="n">std</span><span class="o">::</span><span class="n">ostream</span><span class="o">&amp;</span><span class="p">)</span> <span class="k">const</span> <span class="p">{}</span>
+
+      <span class="k">friend</span> <span class="n">std</span><span class="o">::</span><span class="n">ostream</span><span class="o">&amp;</span> <span class="k">operator</span><span class="o">&lt;&lt;</span><span class="p">(</span><span class="n">std</span><span class="o">::</span><span class="n">ostream</span><span class="o">&amp;</span> <span class="n">os</span><span class="p">,</span> <span class="k">const</span> <span class="n">option</span><span class="o">&amp;</span> <span class="n">op</span><span class="p">)</span> <span class="p">{</span>
+          <span class="n">os</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;  &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">op</span><span class="p">.</span><span class="n">short_</span><span class="p">;</span>
+          <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">op</span><span class="p">.</span><span class="n">var_</span><span class="p">.</span><span class="n">empty</span><span class="p">())</span> <span class="n">os</span> <span class="o">&lt;&lt;</span> <span class="s">&quot; &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">op</span><span class="p">.</span><span class="n">var_</span><span class="p">;</span>
+          <span class="n">os</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;, &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">op</span><span class="p">.</span><span class="n">long_</span><span class="p">;</span>
+          <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">op</span><span class="p">.</span><span class="n">var_</span><span class="p">.</span><span class="n">empty</span><span class="p">())</span> <span class="n">os</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;=&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">op</span><span class="p">.</span><span class="n">var_</span><span class="p">;</span>
+          <span class="n">os</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;        &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">op</span><span class="p">.</span><span class="n">desc_</span><span class="p">;</span>
+          <span class="n">op</span><span class="p">.</span><span class="n">print_default</span><span class="p">(</span><span class="n">os</span><span class="p">);</span>
+          <span class="k">return</span> <span class="n">os</span><span class="p">;</span>
+      <span class="p">}</span>
+
+      <span class="k">protected</span><span class="o">:</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">short_</span><span class="p">,</span> <span class="n">long_</span><span class="p">,</span> <span class="n">desc_</span><span class="p">,</span> <span class="n">var_</span><span class="p">;</span>
+    <span class="p">};</span>
+
+    <span class="k">template</span> <span class="o">&lt;</span><span class="k">class</span> <span class="nc">T</span><span class="o">&gt;</span>
+    <span class="k">class</span> <span class="nc">option_value</span> <span class="o">:</span> <span class="k">public</span> <span class="n">option</span> <span class="p">{</span>
+      <span class="k">public</span><span class="o">:</span>
+        <span class="n">option_value</span><span class="p">(</span><span class="n">T</span><span class="o">&amp;</span> <span class="n">value</span><span class="p">,</span> <span class="kt">char</span> <span class="n">s</span><span class="p">,</span> <span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="o">&amp;</span> <span class="n">l</span><span class="p">,</span> <span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="o">&amp;</span> <span class="n">d</span><span class="p">,</span> <span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="o">&amp;</span> <span class="n">v</span><span class="p">)</span> <span class="o">:</span>
+            <span class="n">option</span><span class="p">(</span><span class="n">s</span><span class="p">,</span> <span class="n">l</span><span class="p">,</span> <span class="n">d</span><span class="p">,</span> <span class="n">v</span><span class="p">),</span> <span class="n">value_</span><span class="p">(</span><span class="n">value</span><span class="p">)</span> <span class="p">{}</span>
+
+        <span class="kt">bool</span> <span class="n">parse</span><span class="p">(</span><span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="k">const</span> <span class="o">*</span> <span class="k">const</span> <span class="o">*</span> <span class="n">argv</span><span class="p">,</span> <span class="kt">int</span> <span class="o">&amp;</span><span class="n">i</span><span class="p">)</span> <span class="p">{</span>
+            <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">arg</span><span class="p">(</span><span class="n">argv</span><span class="p">[</span><span class="n">i</span><span class="p">]);</span>
+            <span class="k">if</span> <span class="p">(</span><span class="n">arg</span> <span class="o">==</span> <span class="n">short_</span> <span class="o">||</span> <span class="n">arg</span> <span class="o">==</span> <span class="n">long_</span><span class="p">)</span> <span class="p">{</span>
+                <span class="k">if</span> <span class="p">(</span><span class="n">i</span> <span class="o">&lt;</span> <span class="n">argc</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span> <span class="p">{</span>
+                    <span class="n">set_value</span><span class="p">(</span><span class="n">arg</span><span class="p">,</span> <span class="n">argv</span><span class="p">[</span><span class="o">++</span><span class="n">i</span><span class="p">]);</span>
+                    <span class="k">return</span> <span class="nb">true</span><span class="p">;</span>
+                <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
+                    <span class="k">throw</span> <span class="n">bad_option</span><span class="p">(</span><span class="s">&quot;missing value for &quot;</span> <span class="o">+</span> <span class="n">arg</span><span class="p">);</span>
+                <span class="p">}</span>
+            <span class="p">}</span>
+            <span class="k">if</span> <span class="p">(</span><span class="n">arg</span><span class="p">.</span><span class="n">compare</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">long_</span><span class="p">.</span><span class="n">size</span><span class="p">(),</span> <span class="n">long_</span><span class="p">)</span> <span class="o">==</span> <span class="mi">0</span> <span class="o">&amp;&amp;</span> <span class="n">arg</span><span class="p">[</span><span class="n">long_</span><span class="p">.</span><span class="n">size</span><span class="p">()]</span> <span class="o">==</span> <span class="sc">&#39;=&#39;</span> <span class="p">)</span> <span class="p">{</span>
+                <span class="n">set_value</span><span class="p">(</span><span class="n">long_</span><span class="p">,</span> <span class="n">arg</span><span class="p">.</span><span class="n">substr</span><span class="p">(</span><span class="n">long_</span><span class="p">.</span><span class="n">size</span><span class="p">()</span><span class="o">+</span><span class="mi">1</span><span class="p">));</span>
+                <span class="k">return</span> <span class="nb">true</span><span class="p">;</span>
+            <span class="p">}</span>
+            <span class="k">return</span> <span class="nb">false</span><span class="p">;</span>
+        <span class="p">}</span>
+
+        <span class="k">virtual</span> <span class="kt">void</span> <span class="n">print_default</span><span class="p">(</span><span class="n">std</span><span class="o">::</span><span class="n">ostream</span><span class="o">&amp;</span> <span class="n">os</span><span class="p">)</span> <span class="k">const</span> <span class="p">{</span> <span class="n">os</span> <span class="o">&lt;&lt;</span> <span class="s">&quot; (default &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">value_</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;)&quot;</span><span class="p">;</span> <span class="p">}</span>
+
+        <span class="kt">void</span> <span class="n">set_value</span><span class="p">(</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="o">&amp;</span> <span class="n">opt</span><span class="p">,</span> <span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="o">&amp;</span> <span class="n">s</span><span class="p">)</span> <span class="p">{</span>
+            <span class="n">std</span><span class="o">::</span><span class="n">istringstream</span> <span class="n">is</span><span class="p">(</span><span class="n">s</span><span class="p">);</span>
+            <span class="n">is</span> <span class="o">&gt;&gt;</span> <span class="n">value_</span><span class="p">;</span>
+            <span class="k">if</span> <span class="p">(</span><span class="n">is</span><span class="p">.</span><span class="n">fail</span><span class="p">()</span> <span class="o">||</span> <span class="n">is</span><span class="p">.</span><span class="n">bad</span><span class="p">())</span>
+                <span class="k">throw</span> <span class="n">bad_option</span><span class="p">(</span><span class="s">&quot;bad value for &quot;</span> <span class="o">+</span> <span class="n">opt</span> <span class="o">+</span> <span class="s">&quot;: &quot;</span> <span class="o">+</span> <span class="n">s</span><span class="p">);</span>
+        <span class="p">}</span>
+
+      <span class="k">private</span><span class="o">:</span>
+        <span class="n">T</span><span class="o">&amp;</span> <span class="n">value_</span><span class="p">;</span>
+    <span class="p">};</span>
+
+    <span class="k">class</span> <span class="nc">option_flag</span><span class="o">:</span> <span class="k">public</span> <span class="n">option</span> <span class="p">{</span>
+      <span class="k">public</span><span class="o">:</span>
+        <span class="n">option_flag</span><span class="p">(</span><span class="kt">bool</span><span class="o">&amp;</span> <span class="n">flag</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="n">s</span><span class="p">,</span> <span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="o">&amp;</span> <span class="n">l</span><span class="p">,</span> <span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="o">&amp;</span> <span class="n">d</span><span class="p">)</span> <span class="o">:</span>
+            <span class="n">option</span><span class="p">(</span><span class="n">s</span><span class="p">,</span> <span class="n">l</span><span class="p">,</span> <span class="n">d</span><span class="p">,</span> <span class="s">&quot;&quot;</span><span class="p">),</span> <span class="n">flag_</span><span class="p">(</span><span class="n">flag</span><span class="p">)</span>
+        <span class="p">{</span> <span class="n">flag_</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span> <span class="p">}</span>
+
+        <span class="kt">bool</span> <span class="n">parse</span><span class="p">(</span><span class="kt">int</span> <span class="p">,</span> <span class="kt">char</span> <span class="k">const</span> <span class="o">*</span> <span class="k">const</span> <span class="o">*</span> <span class="n">argv</span><span class="p">,</span> <span class="kt">int</span> <span class="o">&amp;</span><span class="n">i</span><span class="p">)</span> <span class="p">{</span>
+            <span class="k">if</span> <span class="p">(</span><span class="n">argv</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">==</span> <span class="n">short_</span> <span class="o">||</span> <span class="n">argv</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">==</span> <span class="n">long_</span><span class="p">)</span> <span class="p">{</span>
+                <span class="n">flag_</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
+                <span class="k">return</span> <span class="nb">true</span><span class="p">;</span>
+            <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
+                <span class="k">return</span> <span class="nb">false</span><span class="p">;</span>
+            <span class="p">}</span>
+        <span class="p">}</span>
+
+      <span class="k">private</span><span class="o">:</span>
+        <span class="kt">bool</span> <span class="o">&amp;</span><span class="n">flag_</span><span class="p">;</span>
+    <span class="p">};</span>
+
+    <span class="k">typedef</span> <span class="n">std</span><span class="o">::</span><span class="n">vector</span><span class="o">&lt;</span><span class="n">option</span><span class="o">*&gt;</span> <span class="n">opts</span><span class="p">;</span>
+
+    <span class="kt">int</span> <span class="n">argc_</span><span class="p">;</span>
+    <span class="kt">char</span> <span class="k">const</span> <span class="o">*</span> <span class="k">const</span> <span class="o">*</span> <span class="n">argv_</span><span class="p">;</span>
+    <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">prog_</span><span class="p">;</span>
+    <span class="n">opts</span> <span class="n">opts_</span><span class="p">;</span>
+    <span class="kt">bool</span> <span class="n">help_</span><span class="p">;</span>
+<span class="p">};</span>
+<span class="p">}</span>
+
+<span class="cp">#endif </span><span class="c1">// OPTIONS_HPP</span>
+</pre></div>
+
+<p><a href="options.hpp">Download this file</a></p>

http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/input/releases/qpid-proton-0.13.0/proton/cpp/examples/queue_browser.cpp
----------------------------------------------------------------------
diff --git a/input/releases/qpid-proton-0.13.0/proton/cpp/examples/queue_browser.cpp b/input/releases/qpid-proton-0.13.0/proton/cpp/examples/queue_browser.cpp
new file mode 100644
index 0000000..649716b
--- /dev/null
+++ b/input/releases/qpid-proton-0.13.0/proton/cpp/examples/queue_browser.cpp
@@ -0,0 +1,67 @@
+/*
+ *
+ * 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.
+ *
+ */
+
+#include <proton/connection.hpp>
+#include <proton/default_container.hpp>
+#include <proton/delivery.hpp>
+#include <proton/messaging_handler.hpp>
+#include <proton/receiver_options.hpp>
+#include <proton/source_options.hpp>
+#include <proton/url.hpp>
+
+#include <iostream>
+
+#include "fake_cpp11.hpp"
+
+using proton::source_options;
+
+class browser : public proton::messaging_handler {
+  private:
+    proton::url url;
+
+  public:
+    browser(const std::string& u) : url(u) {}
+
+    void on_container_start(proton::container &c) OVERRIDE {
+        proton::connection conn = c.connect(url);
+        source_options browsing = source_options().distribution_mode(proton::source::COPY);
+        conn.open_receiver(url.path(), proton::receiver_options().source(browsing));
+    }
+
+    void on_message(proton::delivery &, proton::message &m) OVERRIDE {
+        std::cout << m.body() << std::endl;
+    }
+};
+
+int main(int argc, char **argv) {
+    try {
+        std::string url = argc > 1 ? argv[1] : "127.0.0.1:5672/examples";
+
+        browser b(url);
+        proton::default_container(b).run();
+
+        return 0;
+    } catch (const std::exception& e) {
+        std::cerr << e.what() << std::endl;
+    }
+
+    return 1;
+}

http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/input/releases/qpid-proton-0.13.0/proton/cpp/examples/queue_browser.cpp.html.in
----------------------------------------------------------------------
diff --git a/input/releases/qpid-proton-0.13.0/proton/cpp/examples/queue_browser.cpp.html.in b/input/releases/qpid-proton-0.13.0/proton/cpp/examples/queue_browser.cpp.html.in
new file mode 100644
index 0000000..8494ed4
--- /dev/null
+++ b/input/releases/qpid-proton-0.13.0/proton/cpp/examples/queue_browser.cpp.html.in
@@ -0,0 +1,51 @@
+
+<h1>queue_browser.cpp</h1>
+<div class="highlight"><pre><span></span><span class="cp">#include</span> <span class="cpf">&lt;proton/connection.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/default_container.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/delivery.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/messaging_handler.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/receiver_options.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/source_options.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/url.hpp&gt;</span><span class="cp"></span>
+
+<span class="cp">#include</span> <span class="cpf">&lt;iostream&gt;</span><span class="cp"></span>
+
+<span class="cp">#include</span> <span class="cpf">&quot;fake_cpp11.hpp&quot;</span><span class="cp"></span>
+
+<span class="k">using</span> <span class="n">proton</span><span class="o">::</span><span class="n">source_options</span><span class="p">;</span>
+
+<span class="k">class</span> <span class="nc">browser</span> <span class="o">:</span> <span class="k">public</span> <span class="n">proton</span><span class="o">::</span><span class="n">messaging_handler</span> <span class="p">{</span>
+  <span class="k">private</span><span class="o">:</span>
+    <span class="n">proton</span><span class="o">::</span><span class="n">url</span> <span class="n">url</span><span class="p">;</span>
+
+  <span class="k">public</span><span class="o">:</span>
+    <span class="n">browser</span><span class="p">(</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="o">&amp;</span> <span class="n">u</span><span class="p">)</span> <span class="o">:</span> <span class="n">url</span><span class="p">(</span><span class="n">u</span><span class="p">)</span> <span class="p">{}</span>
+
+    <span class="kt">void</span> <span class="n">on_container_start</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">container</span> <span class="o">&amp;</span><span class="n">c</span><span class="p">)</span> <span class="n">OVERRIDE</span> <span class="p">{</span>
+        <span class="n">proton</span><span class="o">::</span><span class="n">connection</span> <span class="n">conn</span> <span class="o">=</span> <span class="n">c</span><span class="p">.</span><span class="n">connect</span><span class="p">(</span><span class="n">url</span><span class="p">);</span>
+        <span class="n">source_options</span> <span class="n">browsing</span> <span class="o">=</span> <span class="n">source_options</span><span class="p">().</span><span class="n">distribution_mode</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">source</span><span class="o">::</span><span class="n">COPY</span><span class="p">);</span>
+        <span class="n">conn</span><span class="p">.</span><span class="n">open_receiver</span><span class="p">(</span><span class="n">url</span><span class="p">.</span><span class="n">path</span><span class="p">(),</span> <span class="n">proton</span><span class="o">::</span><span class="n">receiver_options</span><span class="p">().</span><span class="n">source</span><span class="p">(</span><span class="n">browsing</span><span class="p">));</span>
+    <span class="p">}</span>
+
+    <span class="kt">void</span> <span class="n">on_message</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">delivery</span> <span class="o">&amp;</span><span class="p">,</span> <span class="n">proton</span><span class="o">::</span><span class="n">message</span> <span class="o">&amp;</span><span class="n">m</span><span class="p">)</span> <span class="n">OVERRIDE</span> <span class="p">{</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="n">m</span><span class="p">.</span><span class="n">body</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+    <span class="p">}</span>
+<span class="p">};</span>
+
+<span class="kt">int</span> <span class="nf">main</span><span class="p">(</span><span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">**</span><span class="n">argv</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">try</span> <span class="p">{</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">url</span> <span class="o">=</span> <span class="n">argc</span> <span class="o">&gt;</span> <span class="mi">1</span> <span class="o">?</span> <span class="n">argv</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">:</span> <span class="s">&quot;127.0.0.1:5672/examples&quot;</span><span class="p">;</span>
+
+        <span class="n">browser</span> <span class="n">b</span><span class="p">(</span><span class="n">url</span><span class="p">);</span>
+        <span class="n">proton</span><span class="o">::</span><span class="n">default_container</span><span class="p">(</span><span class="n">b</span><span class="p">).</span><span class="n">run</span><span class="p">();</span>
+
+        <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">catch</span> <span class="p">(</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">exception</span><span class="o">&amp;</span> <span class="n">e</span><span class="p">)</span> <span class="p">{</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">cerr</span> <span class="o">&lt;&lt;</span> <span class="n">e</span><span class="p">.</span><span class="n">what</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+    <span class="p">}</span>
+
+    <span class="k">return</span> <span class="mi">1</span><span class="p">;</span>
+<span class="p">}</span>
+</pre></div>
+
+<p><a href="queue_browser.cpp">Download this file</a></p>

http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/input/releases/qpid-proton-0.13.0/proton/cpp/examples/selected_recv.cpp
----------------------------------------------------------------------
diff --git a/input/releases/qpid-proton-0.13.0/proton/cpp/examples/selected_recv.cpp b/input/releases/qpid-proton-0.13.0/proton/cpp/examples/selected_recv.cpp
new file mode 100644
index 0000000..c7a63d9
--- /dev/null
+++ b/input/releases/qpid-proton-0.13.0/proton/cpp/examples/selected_recv.cpp
@@ -0,0 +1,88 @@
+/*
+ *
+ * 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.
+ *
+ */
+
+#include <proton/connection.hpp>
+#include <proton/default_container.hpp>
+#include <proton/messaging_handler.hpp>
+#include <proton/receiver_options.hpp>
+#include <proton/source_options.hpp>
+#include <proton/url.hpp>
+
+#include <iostream>
+
+#include "fake_cpp11.hpp"
+
+namespace {
+
+    // Example custom function to configure an AMQP filter,
+    // specifically an APACHE.ORG:SELECTOR
+    // (http://www.amqp.org/specification/1.0/filters)
+
+    void set_filter(proton::source_options &opts, const std::string& selector_str) {
+        proton::source::filter_map map;
+        proton::symbol filter_key("selector");
+        proton::value filter_value;
+        // The value is a specific AMQP "described type": binary string with symbolic descriptor
+        proton::codec::encoder enc(filter_value);
+        enc << proton::codec::start::described()
+            << proton::symbol("apache.org:selector-filter:string")
+            << proton::binary(selector_str)
+            << proton::codec::finish();
+        // In our case, the map has this one element
+        map[filter_key] = filter_value;
+        opts.filters(map);
+    }
+}
+
+
+class selected_recv : public proton::messaging_handler {
+  private:
+    proton::url url;
+
+  public:
+    selected_recv(const std::string& u) : url(u) {}
+
+    void on_container_start(proton::container &c) OVERRIDE {
+        proton::source_options opts;
+        set_filter(opts, "colour = 'green'");
+        proton::connection conn = c.connect(url);
+        conn.open_receiver(url.path(), proton::receiver_options().source(opts));
+    }
+
+    void on_message(proton::delivery &, proton::message &m) OVERRIDE {
+        std::cout << m.body() << std::endl;
+    }
+};
+
+int main(int argc, char **argv) {
+    try {
+        std::string url = argc > 1 ? argv[1] : "127.0.0.1:5672/examples";
+
+        selected_recv recv(url);
+        proton::default_container(recv).run();
+
+        return 0;
+    } catch (const std::exception& e) {
+        std::cerr << e.what() << std::endl;
+    }
+
+    return 1;
+}

http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/input/releases/qpid-proton-0.13.0/proton/cpp/examples/selected_recv.cpp.html.in
----------------------------------------------------------------------
diff --git a/input/releases/qpid-proton-0.13.0/proton/cpp/examples/selected_recv.cpp.html.in b/input/releases/qpid-proton-0.13.0/proton/cpp/examples/selected_recv.cpp.html.in
new file mode 100644
index 0000000..e4585d0
--- /dev/null
+++ b/input/releases/qpid-proton-0.13.0/proton/cpp/examples/selected_recv.cpp.html.in
@@ -0,0 +1,72 @@
+
+<h1>selected_recv.cpp</h1>
+<div class="highlight"><pre><span></span><span class="cp">#include</span> <span class="cpf">&lt;proton/connection.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/default_container.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/messaging_handler.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/receiver_options.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/source_options.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/url.hpp&gt;</span><span class="cp"></span>
+
+<span class="cp">#include</span> <span class="cpf">&lt;iostream&gt;</span><span class="cp"></span>
+
+<span class="cp">#include</span> <span class="cpf">&quot;fake_cpp11.hpp&quot;</span><span class="cp"></span>
+
+<span class="k">namespace</span> <span class="p">{</span>
+
+    <span class="c1">// Example custom function to configure an AMQP filter,</span>
+    <span class="c1">// specifically an APACHE.ORG:SELECTOR</span>
+    <span class="c1">// (http://www.amqp.org/specification/1.0/filters)</span>
+
+    <span class="kt">void</span> <span class="n">set_filter</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">source_options</span> <span class="o">&amp;</span><span class="n">opts</span><span class="p">,</span> <span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="o">&amp;</span> <span class="n">selector_str</span><span class="p">)</span> <span class="p">{</span>
+        <span class="n">proton</span><span class="o">::</span><span class="n">source</span><span class="o">::</span><span class="n">filter_map</span> <span class="n">map</span><span class="p">;</span>
+        <span class="n">proton</span><span class="o">::</span><span class="n">symbol</span> <span class="n">filter_key</span><span class="p">(</span><span class="s">&quot;selector&quot;</span><span class="p">);</span>
+        <span class="n">proton</span><span class="o">::</span><span class="n">value</span> <span class="n">filter_value</span><span class="p">;</span>
+        <span class="c1">// The value is a specific AMQP &quot;described type&quot;: binary string with symbolic descriptor</span>
+        <span class="n">proton</span><span class="o">::</span><span class="n">codec</span><span class="o">::</span><span class="n">encoder</span> <span class="n">enc</span><span class="p">(</span><span class="n">filter_value</span><span class="p">);</span>
+        <span class="n">enc</span> <span class="o">&lt;&lt;</span> <span class="n">proton</span><span class="o">::</span><span class="n">codec</span><span class="o">::</span><span class="n">start</span><span class="o">::</span><span class="n">described</span><span class="p">()</span>
+            <span class="o">&lt;&lt;</span> <span class="n">proton</span><span class="o">::</span><span class="n">symbol</span><span class="p">(</span><span class="s">&quot;apache.org:selector-filter:string&quot;</span><span class="p">)</span>
+            <span class="o">&lt;&lt;</span> <span class="n">proton</span><span class="o">::</span><span class="n">binary</span><span class="p">(</span><span class="n">selector_str</span><span class="p">)</span>
+            <span class="o">&lt;&lt;</span> <span class="n">proton</span><span class="o">::</span><span class="n">codec</span><span class="o">::</span><span class="n">finish</span><span class="p">();</span>
+        <span class="c1">// In our case, the map has this one element</span>
+        <span class="n">map</span><span class="p">[</span><span class="n">filter_key</span><span class="p">]</span> <span class="o">=</span> <span class="n">filter_value</span><span class="p">;</span>
+        <span class="n">opts</span><span class="p">.</span><span class="n">filters</span><span class="p">(</span><span class="n">map</span><span class="p">);</span>
+    <span class="p">}</span>
+<span class="p">}</span>
+
+
+<span class="k">class</span> <span class="nc">selected_recv</span> <span class="o">:</span> <span class="k">public</span> <span class="n">proton</span><span class="o">::</span><span class="n">messaging_handler</span> <span class="p">{</span>
+  <span class="k">private</span><span class="o">:</span>
+    <span class="n">proton</span><span class="o">::</span><span class="n">url</span> <span class="n">url</span><span class="p">;</span>
+
+  <span class="k">public</span><span class="o">:</span>
+    <span class="n">selected_recv</span><span class="p">(</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="o">&amp;</span> <span class="n">u</span><span class="p">)</span> <span class="o">:</span> <span class="n">url</span><span class="p">(</span><span class="n">u</span><span class="p">)</span> <span class="p">{}</span>
+
+    <span class="kt">void</span> <span class="n">on_container_start</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">container</span> <span class="o">&amp;</span><span class="n">c</span><span class="p">)</span> <span class="n">OVERRIDE</span> <span class="p">{</span>
+        <span class="n">proton</span><span class="o">::</span><span class="n">source_options</span> <span class="n">opts</span><span class="p">;</span>
+        <span class="n">set_filter</span><span class="p">(</span><span class="n">opts</span><span class="p">,</span> <span class="s">&quot;colour = &#39;green&#39;&quot;</span><span class="p">);</span>
+        <span class="n">proton</span><span class="o">::</span><span class="n">connection</span> <span class="n">conn</span> <span class="o">=</span> <span class="n">c</span><span class="p">.</span><span class="n">connect</span><span class="p">(</span><span class="n">url</span><span class="p">);</span>
+        <span class="n">conn</span><span class="p">.</span><span class="n">open_receiver</span><span class="p">(</span><span class="n">url</span><span class="p">.</span><span class="n">path</span><span class="p">(),</span> <span class="n">proton</span><span class="o">::</span><span class="n">receiver_options</span><span class="p">().</span><span class="n">source</span><span class="p">(</span><span class="n">opts</span><span class="p">));</span>
+    <span class="p">}</span>
+
+    <span class="kt">void</span> <span class="n">on_message</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">delivery</span> <span class="o">&amp;</span><span class="p">,</span> <span class="n">proton</span><span class="o">::</span><span class="n">message</span> <span class="o">&amp;</span><span class="n">m</span><span class="p">)</span> <span class="n">OVERRIDE</span> <span class="p">{</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="n">m</span><span class="p">.</span><span class="n">body</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+    <span class="p">}</span>
+<span class="p">};</span>
+
+<span class="kt">int</span> <span class="nf">main</span><span class="p">(</span><span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">**</span><span class="n">argv</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">try</span> <span class="p">{</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">url</span> <span class="o">=</span> <span class="n">argc</span> <span class="o">&gt;</span> <span class="mi">1</span> <span class="o">?</span> <span class="n">argv</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">:</span> <span class="s">&quot;127.0.0.1:5672/examples&quot;</span><span class="p">;</span>
+
+        <span class="n">selected_recv</span> <span class="n">recv</span><span class="p">(</span><span class="n">url</span><span class="p">);</span>
+        <span class="n">proton</span><span class="o">::</span><span class="n">default_container</span><span class="p">(</span><span class="n">recv</span><span class="p">).</span><span class="n">run</span><span class="p">();</span>
+
+        <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">catch</span> <span class="p">(</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">exception</span><span class="o">&amp;</span> <span class="n">e</span><span class="p">)</span> <span class="p">{</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">cerr</span> <span class="o">&lt;&lt;</span> <span class="n">e</span><span class="p">.</span><span class="n">what</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+    <span class="p">}</span>
+
+    <span class="k">return</span> <span class="mi">1</span><span class="p">;</span>
+<span class="p">}</span>
+</pre></div>
+
+<p><a href="selected_recv.cpp">Download this file</a></p>

http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/input/releases/qpid-proton-0.13.0/proton/cpp/examples/server.cpp
----------------------------------------------------------------------
diff --git a/input/releases/qpid-proton-0.13.0/proton/cpp/examples/server.cpp b/input/releases/qpid-proton-0.13.0/proton/cpp/examples/server.cpp
new file mode 100644
index 0000000..ec24f9f
--- /dev/null
+++ b/input/releases/qpid-proton-0.13.0/proton/cpp/examples/server.cpp
@@ -0,0 +1,100 @@
+/*
+ *
+ * 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.
+ *
+ */
+
+#include "options.hpp"
+
+#include <proton/connection.hpp>
+#include <proton/default_container.hpp>
+#include <proton/messaging_handler.hpp>
+#include <proton/tracker.hpp>
+#include <proton/url.hpp>
+
+#include <iostream>
+#include <map>
+#include <string>
+#include <cctype>
+
+#include "fake_cpp11.hpp"
+
+class server : public proton::messaging_handler {
+  private:
+    typedef std::map<std::string, proton::sender> sender_map;
+    proton::url url;
+    proton::connection connection;
+    sender_map senders;
+
+  public:
+    server(const std::string &u) : url(u) {}
+
+    void on_container_start(proton::container &c) OVERRIDE {
+        connection = c.connect(url);
+        connection.open_receiver(url.path());
+
+        std::cout << "server connected to " << url << std::endl;
+    }
+
+    std::string to_upper(const std::string &s) {
+        std::string uc(s);
+        size_t l = uc.size();
+        for (size_t i=0; i<l; i++)
+            uc[i] = static_cast<char>(std::toupper(uc[i]));
+        return uc;
+    }
+
+    void on_message(proton::delivery &, proton::message &m) OVERRIDE {
+        std::cout << "Received " << m.body() << std::endl;
+
+        std::string reply_to = m.reply_to();
+        proton::message reply;
+
+        reply.to(reply_to);
+        reply.body(to_upper(proton::get<std::string>(m.body())));
+        reply.correlation_id(m.correlation_id());
+
+        if (!senders[reply_to]) {
+            senders[reply_to] = connection.open_sender(reply_to);
+        }
+
+        senders[reply_to].send(reply);
+    }
+};
+
+int main(int argc, char **argv) {
+    std::string address("amqp://0.0.0.0:5672/examples");
+    example::options opts(argc, argv);
+
+    opts.add_value(address, 'a', "address", "listen on URL", "URL");
+
+    try {
+        opts.parse();
+
+        server srv(address);
+        proton::default_container(srv).run();
+
+        return 0;
+    } catch (const example::bad_option& e) {
+        std::cout << opts << std::endl << e.what() << std::endl;
+    } catch (const std::exception& e) {
+        std::cerr << e.what() << std::endl;
+    }
+
+    return 1;
+}

http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/input/releases/qpid-proton-0.13.0/proton/cpp/examples/server.cpp.html.in
----------------------------------------------------------------------
diff --git a/input/releases/qpid-proton-0.13.0/proton/cpp/examples/server.cpp.html.in b/input/releases/qpid-proton-0.13.0/proton/cpp/examples/server.cpp.html.in
new file mode 100644
index 0000000..06f2825
--- /dev/null
+++ b/input/releases/qpid-proton-0.13.0/proton/cpp/examples/server.cpp.html.in
@@ -0,0 +1,84 @@
+
+<h1>server.cpp</h1>
+<div class="highlight"><pre><span></span><span class="cp">#include</span> <span class="cpf">&quot;options.hpp&quot;</span><span class="cp"></span>
+
+<span class="cp">#include</span> <span class="cpf">&lt;proton/connection.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/default_container.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/messaging_handler.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/tracker.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/url.hpp&gt;</span><span class="cp"></span>
+
+<span class="cp">#include</span> <span class="cpf">&lt;iostream&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;map&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;string&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;cctype&gt;</span><span class="cp"></span>
+
+<span class="cp">#include</span> <span class="cpf">&quot;fake_cpp11.hpp&quot;</span><span class="cp"></span>
+
+<span class="k">class</span> <span class="nc">server</span> <span class="o">:</span> <span class="k">public</span> <span class="n">proton</span><span class="o">::</span><span class="n">messaging_handler</span> <span class="p">{</span>
+  <span class="k">private</span><span class="o">:</span>
+    <span class="k">typedef</span> <span class="n">std</span><span class="o">::</span><span class="n">map</span><span class="o">&lt;</span><span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="p">,</span> <span class="n">proton</span><span class="o">::</span><span class="n">sender</span><span class="o">&gt;</span> <span class="n">sender_map</span><span class="p">;</span>
+    <span class="n">proton</span><span class="o">::</span><span class="n">url</span> <span class="n">url</span><span class="p">;</span>
+    <span class="n">proton</span><span class="o">::</span><span class="n">connection</span> <span class="n">connection</span><span class="p">;</span>
+    <span class="n">sender_map</span> <span class="n">senders</span><span class="p">;</span>
+
+  <span class="k">public</span><span class="o">:</span>
+    <span class="n">server</span><span class="p">(</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="o">&amp;</span><span class="n">u</span><span class="p">)</span> <span class="o">:</span> <span class="n">url</span><span class="p">(</span><span class="n">u</span><span class="p">)</span> <span class="p">{}</span>
+
+    <span class="kt">void</span> <span class="n">on_container_start</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">container</span> <span class="o">&amp;</span><span class="n">c</span><span class="p">)</span> <span class="n">OVERRIDE</span> <span class="p">{</span>
+        <span class="n">connection</span> <span class="o">=</span> <span class="n">c</span><span class="p">.</span><span class="n">connect</span><span class="p">(</span><span class="n">url</span><span class="p">);</span>
+        <span class="n">connection</span><span class="p">.</span><span class="n">open_receiver</span><span class="p">(</span><span class="n">url</span><span class="p">.</span><span class="n">path</span><span class="p">());</span>
+
+        <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;server connected to &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">url</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+    <span class="p">}</span>
+
+    <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">to_upper</span><span class="p">(</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="o">&amp;</span><span class="n">s</span><span class="p">)</span> <span class="p">{</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">uc</span><span class="p">(</span><span class="n">s</span><span class="p">);</span>
+        <span class="kt">size_t</span> <span class="n">l</span> <span class="o">=</span> <span class="n">uc</span><span class="p">.</span><span class="n">size</span><span class="p">();</span>
+        <span class="k">for</span> <span class="p">(</span><span class="kt">size_t</span> <span class="n">i</span><span class="o">=</span><span class="mi">0</span><span class="p">;</span> <span class="n">i</span><span class="o">&lt;</span><span class="n">l</span><span class="p">;</span> <span class="n">i</span><span class="o">++</span><span class="p">)</span>
+            <span class="n">uc</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="k">static_cast</span><span class="o">&lt;</span><span class="kt">char</span><span class="o">&gt;</span><span class="p">(</span><span class="n">std</span><span class="o">::</span><span class="n">toupper</span><span class="p">(</span><span class="n">uc</span><span class="p">[</span><span class="n">i</span><span class="p">]));</span>
+        <span class="k">return</span> <span class="n">uc</span><span class="p">;</span>
+    <span class="p">}</span>
+
+    <span class="kt">void</span> <span class="n">on_message</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">delivery</span> <span class="o">&amp;</span><span class="p">,</span> <span class="n">proton</span><span class="o">::</span><span class="n">message</span> <span class="o">&amp;</span><span class="n">m</span><span class="p">)</span> <span class="n">OVERRIDE</span> <span class="p">{</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Received &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">m</span><span class="p">.</span><span class="n">body</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+
+        <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">reply_to</span> <span class="o">=</span> <span class="n">m</span><span class="p">.</span><span class="n">reply_to</span><span class="p">();</span>
+        <span class="n">proton</span><span class="o">::</span><span class="n">message</span> <span class="n">reply</span><span class="p">;</span>
+
+        <span class="n">reply</span><span class="p">.</span><span class="n">to</span><span class="p">(</span><span class="n">reply_to</span><span class="p">);</span>
+        <span class="n">reply</span><span class="p">.</span><span class="n">body</span><span class="p">(</span><span class="n">to_upper</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">get</span><span class="o">&lt;</span><span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="o">&gt;</span><span class="p">(</span><span class="n">m</span><span class="p">.</span><span class="n">body</span><span class="p">())));</span>
+        <span class="n">reply</span><span class="p">.</span><span class="n">correlation_id</span><span class="p">(</span><span class="n">m</span><span class="p">.</span><span class="n">correlation_id</span><span class="p">());</span>
+
+        <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">senders</span><span class="p">[</span><span class="n">reply_to</span><span class="p">])</span> <span class="p">{</span>
+            <span class="n">senders</span><span class="p">[</span><span class="n">reply_to</span><span class="p">]</span> <span class="o">=</span> <span class="n">connection</span><span class="p">.</span><span class="n">open_sender</span><span class="p">(</span><span class="n">reply_to</span><span class="p">);</span>
+        <span class="p">}</span>
+
+        <span class="n">senders</span><span class="p">[</span><span class="n">reply_to</span><span class="p">].</span><span class="n">send</span><span class="p">(</span><span class="n">reply</span><span class="p">);</span>
+    <span class="p">}</span>
+<span class="p">};</span>
+
+<span class="kt">int</span> <span class="nf">main</span><span class="p">(</span><span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">**</span><span class="n">argv</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">address</span><span class="p">(</span><span class="s">&quot;amqp://0.0.0.0:5672/examples&quot;</span><span class="p">);</span>
+    <span class="n">example</span><span class="o">::</span><span class="n">options</span> <span class="n">opts</span><span class="p">(</span><span class="n">argc</span><span class="p">,</span> <span class="n">argv</span><span class="p">);</span>
+
+    <span class="n">opts</span><span class="p">.</span><span class="n">add_value</span><span class="p">(</span><span class="n">address</span><span class="p">,</span> <span class="sc">&#39;a&#39;</span><span class="p">,</span> <span class="s">&quot;address&quot;</span><span class="p">,</span> <span class="s">&quot;listen on URL&quot;</span><span class="p">,</span> <span class="s">&quot;URL&quot;</span><span class="p">);</span>
+
+    <span class="k">try</span> <span class="p">{</span>
+        <span class="n">opts</span><span class="p">.</span><span class="n">parse</span><span class="p">();</span>
+
+        <span class="n">server</span> <span class="n">srv</span><span class="p">(</span><span class="n">address</span><span class="p">);</span>
+        <span class="n">proton</span><span class="o">::</span><span class="n">default_container</span><span class="p">(</span><span class="n">srv</span><span class="p">).</span><span class="n">run</span><span class="p">();</span>
+
+        <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">catch</span> <span class="p">(</span><span class="k">const</span> <span class="n">example</span><span class="o">::</span><span class="n">bad_option</span><span class="o">&amp;</span> <span class="n">e</span><span class="p">)</span> <span class="p">{</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="n">opts</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span> <span class="o">&lt;&lt;</span> <span class="n">e</span><span class="p">.</span><span class="n">what</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">catch</span> <span class="p">(</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">exception</span><span class="o">&amp;</span> <span class="n">e</span><span class="p">)</span> <span class="p">{</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">cerr</span> <span class="o">&lt;&lt;</span> <span class="n">e</span><span class="p">.</span><span class="n">what</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+    <span class="p">}</span>
+
+    <span class="k">return</span> <span class="mi">1</span><span class="p">;</span>
+<span class="p">}</span>
+</pre></div>
+
+<p><a href="server.cpp">Download this file</a></p>

http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/input/releases/qpid-proton-0.13.0/proton/cpp/examples/server_direct.cpp
----------------------------------------------------------------------
diff --git a/input/releases/qpid-proton-0.13.0/proton/cpp/examples/server_direct.cpp b/input/releases/qpid-proton-0.13.0/proton/cpp/examples/server_direct.cpp
new file mode 100644
index 0000000..220934f
--- /dev/null
+++ b/input/releases/qpid-proton-0.13.0/proton/cpp/examples/server_direct.cpp
@@ -0,0 +1,119 @@
+/*
+ *
+ * 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.
+ *
+ */
+
+#include "options.hpp"
+
+#include <proton/default_container.hpp>
+#include <proton/messaging_handler.hpp>
+#include <proton/sender.hpp>
+#include <proton/source_options.hpp>
+#include <proton/tracker.hpp>
+
+#include <iostream>
+#include <map>
+#include <string>
+#include <sstream>
+#include <cctype>
+
+#include "fake_cpp11.hpp"
+
+class server : public proton::messaging_handler {
+  private:
+    typedef std::map<std::string, proton::sender> sender_map;
+    std::string url;
+    sender_map senders;
+    int address_counter;
+
+  public:
+    server(const std::string &u) : url(u), address_counter(0) {}
+
+    void on_container_start(proton::container &c) OVERRIDE {
+        c.listen(url);
+        std::cout << "server listening on " << url << std::endl;
+    }
+
+    std::string to_upper(const std::string &s) {
+        std::string uc(s);
+        size_t l = uc.size();
+
+        for (size_t i=0; i<l; i++)
+            uc[i] = static_cast<char>(std::toupper(uc[i]));
+
+        return uc;
+    }
+
+    std::string generate_address() {
+        std::ostringstream addr;
+        addr << "server" << address_counter++;
+
+        return addr.str();
+    }
+
+    void on_sender_open(proton::sender &sender) OVERRIDE {
+        if (sender.source().dynamic()) {
+            std::string addr = generate_address();
+            sender.open(proton::sender_options().source(proton::source_options().address(addr)));
+            senders[addr] = sender;
+        }
+    }
+
+    void on_message(proton::delivery &, proton::message &m) OVERRIDE {
+        std::cout << "Received " << m.body() << std::endl;
+
+        std::string reply_to = m.reply_to();
+        sender_map::iterator it = senders.find(reply_to);
+
+        if (it == senders.end()) {
+            std::cout << "No link for reply_to: " << reply_to << std::endl;
+        } else {
+            proton::sender sender = it->second;
+            proton::message reply;
+
+            reply.to(reply_to);
+            reply.body(to_upper(proton::get<std::string>(m.body())));
+            reply.correlation_id(m.correlation_id());
+
+            sender.send(reply);
+        }
+    }
+};
+
+int main(int argc, char **argv) {
+    std::string address("amqp://127.0.0.1:5672/examples");
+    example::options opts(argc, argv);
+
+    opts.add_value(address, 'a', "address", "listen on URL", "URL");
+
+    try {
+        opts.parse();
+
+        server srv(address);
+        proton::default_container(srv).run();
+
+        return 0;
+    } catch (const example::bad_option& e) {
+        std::cout << opts << std::endl << e.what() << std::endl;
+    } catch (const std::exception& e) {
+        std::cerr << e.what() << std::endl;
+    }
+
+    return 1;
+}

http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/input/releases/qpid-proton-0.13.0/proton/cpp/examples/server_direct.cpp.html.in
----------------------------------------------------------------------
diff --git a/input/releases/qpid-proton-0.13.0/proton/cpp/examples/server_direct.cpp.html.in b/input/releases/qpid-proton-0.13.0/proton/cpp/examples/server_direct.cpp.html.in
new file mode 100644
index 0000000..3a6203f
--- /dev/null
+++ b/input/releases/qpid-proton-0.13.0/proton/cpp/examples/server_direct.cpp.html.in
@@ -0,0 +1,103 @@
+
+<h1>server_direct.cpp</h1>
+<div class="highlight"><pre><span></span><span class="cp">#include</span> <span class="cpf">&quot;options.hpp&quot;</span><span class="cp"></span>
+
+<span class="cp">#include</span> <span class="cpf">&lt;proton/default_container.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/messaging_handler.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/sender.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/source_options.hpp&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;proton/tracker.hpp&gt;</span><span class="cp"></span>
+
+<span class="cp">#include</span> <span class="cpf">&lt;iostream&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;map&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;string&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;sstream&gt;</span><span class="cp"></span>
+<span class="cp">#include</span> <span class="cpf">&lt;cctype&gt;</span><span class="cp"></span>
+
+<span class="cp">#include</span> <span class="cpf">&quot;fake_cpp11.hpp&quot;</span><span class="cp"></span>
+
+<span class="k">class</span> <span class="nc">server</span> <span class="o">:</span> <span class="k">public</span> <span class="n">proton</span><span class="o">::</span><span class="n">messaging_handler</span> <span class="p">{</span>
+  <span class="k">private</span><span class="o">:</span>
+    <span class="k">typedef</span> <span class="n">std</span><span class="o">::</span><span class="n">map</span><span class="o">&lt;</span><span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="p">,</span> <span class="n">proton</span><span class="o">::</span><span class="n">sender</span><span class="o">&gt;</span> <span class="n">sender_map</span><span class="p">;</span>
+    <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">url</span><span class="p">;</span>
+    <span class="n">sender_map</span> <span class="n">senders</span><span class="p">;</span>
+    <span class="kt">int</span> <span class="n">address_counter</span><span class="p">;</span>
+
+  <span class="k">public</span><span class="o">:</span>
+    <span class="n">server</span><span class="p">(</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="o">&amp;</span><span class="n">u</span><span class="p">)</span> <span class="o">:</span> <span class="n">url</span><span class="p">(</span><span class="n">u</span><span class="p">),</span> <span class="n">address_counter</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span> <span class="p">{}</span>
+
+    <span class="kt">void</span> <span class="n">on_container_start</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">container</span> <span class="o">&amp;</span><span class="n">c</span><span class="p">)</span> <span class="n">OVERRIDE</span> <span class="p">{</span>
+        <span class="n">c</span><span class="p">.</span><span class="n">listen</span><span class="p">(</span><span class="n">url</span><span class="p">);</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;server listening on &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">url</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+    <span class="p">}</span>
+
+    <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">to_upper</span><span class="p">(</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="o">&amp;</span><span class="n">s</span><span class="p">)</span> <span class="p">{</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">uc</span><span class="p">(</span><span class="n">s</span><span class="p">);</span>
+        <span class="kt">size_t</span> <span class="n">l</span> <span class="o">=</span> <span class="n">uc</span><span class="p">.</span><span class="n">size</span><span class="p">();</span>
+
+        <span class="k">for</span> <span class="p">(</span><span class="kt">size_t</span> <span class="n">i</span><span class="o">=</span><span class="mi">0</span><span class="p">;</span> <span class="n">i</span><span class="o">&lt;</span><span class="n">l</span><span class="p">;</span> <span class="n">i</span><span class="o">++</span><span class="p">)</span>
+            <span class="n">uc</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="k">static_cast</span><span class="o">&lt;</span><span class="kt">char</span><span class="o">&gt;</span><span class="p">(</span><span class="n">std</span><span class="o">::</span><span class="n">toupper</span><span class="p">(</span><span class="n">uc</span><span class="p">[</span><span class="n">i</span><span class="p">]));</span>
+
+        <span class="k">return</span> <span class="n">uc</span><span class="p">;</span>
+    <span class="p">}</span>
+
+    <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">generate_address</span><span class="p">()</span> <span class="p">{</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">ostringstream</span> <span class="n">addr</span><span class="p">;</span>
+        <span class="n">addr</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;server&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">address_counter</span><span class="o">++</span><span class="p">;</span>
+
+        <span class="k">return</span> <span class="n">addr</span><span class="p">.</span><span class="n">str</span><span class="p">();</span>
+    <span class="p">}</span>
+
+    <span class="kt">void</span> <span class="n">on_sender_open</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">sender</span> <span class="o">&amp;</span><span class="n">sender</span><span class="p">)</span> <span class="n">OVERRIDE</span> <span class="p">{</span>
+        <span class="k">if</span> <span class="p">(</span><span class="n">sender</span><span class="p">.</span><span class="n">source</span><span class="p">().</span><span class="n">dynamic</span><span class="p">())</span> <span class="p">{</span>
+            <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">addr</span> <span class="o">=</span> <span class="n">generate_address</span><span class="p">();</span>
+            <span class="n">sender</span><span class="p">.</span><span class="n">open</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">sender_options</span><span class="p">().</span><span class="n">source</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">source_options</span><span class="p">().</span><span class="n">address</span><span class="p">(</span><span class="n">addr</span><span class="p">)));</span>
+            <span class="n">senders</span><span class="p">[</span><span class="n">addr</span><span class="p">]</span> <span class="o">=</span> <span class="n">sender</span><span class="p">;</span>
+        <span class="p">}</span>
+    <span class="p">}</span>
+
+    <span class="kt">void</span> <span class="n">on_message</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">delivery</span> <span class="o">&amp;</span><span class="p">,</span> <span class="n">proton</span><span class="o">::</span><span class="n">message</span> <span class="o">&amp;</span><span class="n">m</span><span class="p">)</span> <span class="n">OVERRIDE</span> <span class="p">{</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Received &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">m</span><span class="p">.</span><span class="n">body</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+
+        <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">reply_to</span> <span class="o">=</span> <span class="n">m</span><span class="p">.</span><span class="n">reply_to</span><span class="p">();</span>
+        <span class="n">sender_map</span><span class="o">::</span><span class="n">iterator</span> <span class="n">it</span> <span class="o">=</span> <span class="n">senders</span><span class="p">.</span><span class="n">find</span><span class="p">(</span><span class="n">reply_to</span><span class="p">);</span>
+
+        <span class="k">if</span> <span class="p">(</span><span class="n">it</span> <span class="o">==</span> <span class="n">senders</span><span class="p">.</span><span class="n">end</span><span class="p">())</span> <span class="p">{</span>
+            <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;No link for reply_to: &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">reply_to</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+        <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
+            <span class="n">proton</span><span class="o">::</span><span class="n">sender</span> <span class="n">sender</span> <span class="o">=</span> <span class="n">it</span><span class="o">-&gt;</span><span class="n">second</span><span class="p">;</span>
+            <span class="n">proton</span><span class="o">::</span><span class="n">message</span> <span class="n">reply</span><span class="p">;</span>
+
+            <span class="n">reply</span><span class="p">.</span><span class="n">to</span><span class="p">(</span><span class="n">reply_to</span><span class="p">);</span>
+            <span class="n">reply</span><span class="p">.</span><span class="n">body</span><span class="p">(</span><span class="n">to_upper</span><span class="p">(</span><span class="n">proton</span><span class="o">::</span><span class="n">get</span><span class="o">&lt;</span><span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="o">&gt;</span><span class="p">(</span><span class="n">m</span><span class="p">.</span><span class="n">body</span><span class="p">())));</span>
+            <span class="n">reply</span><span class="p">.</span><span class="n">correlation_id</span><span class="p">(</span><span class="n">m</span><span class="p">.</span><span class="n">correlation_id</span><span class="p">());</span>
+
+            <span class="n">sender</span><span class="p">.</span><span class="n">send</span><span class="p">(</span><span class="n">reply</span><span class="p">);</span>
+        <span class="p">}</span>
+    <span class="p">}</span>
+<span class="p">};</span>
+
+<span class="kt">int</span> <span class="nf">main</span><span class="p">(</span><span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">**</span><span class="n">argv</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">address</span><span class="p">(</span><span class="s">&quot;amqp://127.0.0.1:5672/examples&quot;</span><span class="p">);</span>
+    <span class="n">example</span><span class="o">::</span><span class="n">options</span> <span class="n">opts</span><span class="p">(</span><span class="n">argc</span><span class="p">,</span> <span class="n">argv</span><span class="p">);</span>
+
+    <span class="n">opts</span><span class="p">.</span><span class="n">add_value</span><span class="p">(</span><span class="n">address</span><span class="p">,</span> <span class="sc">&#39;a&#39;</span><span class="p">,</span> <span class="s">&quot;address&quot;</span><span class="p">,</span> <span class="s">&quot;listen on URL&quot;</span><span class="p">,</span> <span class="s">&quot;URL&quot;</span><span class="p">);</span>
+
+    <span class="k">try</span> <span class="p">{</span>
+        <span class="n">opts</span><span class="p">.</span><span class="n">parse</span><span class="p">();</span>
+
+        <span class="n">server</span> <span class="n">srv</span><span class="p">(</span><span class="n">address</span><span class="p">);</span>
+        <span class="n">proton</span><span class="o">::</span><span class="n">default_container</span><span class="p">(</span><span class="n">srv</span><span class="p">).</span><span class="n">run</span><span class="p">();</span>
+
+        <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">catch</span> <span class="p">(</span><span class="k">const</span> <span class="n">example</span><span class="o">::</span><span class="n">bad_option</span><span class="o">&amp;</span> <span class="n">e</span><span class="p">)</span> <span class="p">{</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="n">opts</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span> <span class="o">&lt;&lt;</span> <span class="n">e</span><span class="p">.</span><span class="n">what</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">catch</span> <span class="p">(</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">exception</span><span class="o">&amp;</span> <span class="n">e</span><span class="p">)</span> <span class="p">{</span>
+        <span class="n">std</span><span class="o">::</span><span class="n">cerr</span> <span class="o">&lt;&lt;</span> <span class="n">e</span><span class="p">.</span><span class="n">what</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+    <span class="p">}</span>
+
+    <span class="k">return</span> <span class="mi">1</span><span class="p">;</span>
+<span class="p">}</span>
+</pre></div>
+
+<p><a href="server_direct.cpp">Download this file</a></p>


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


[16/26] qpid-site git commit: QPID-7350: Examples that should have gone with the previous commit

Posted by jr...@apache.org.
http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/content/releases/qpid-proton-0.13.0/proton/python/examples/direct_recv.py.html
----------------------------------------------------------------------
diff --git a/content/releases/qpid-proton-0.13.0/proton/python/examples/direct_recv.py.html b/content/releases/qpid-proton-0.13.0/proton/python/examples/direct_recv.py.html
new file mode 100644
index 0000000..507e954
--- /dev/null
+++ b/content/releases/qpid-proton-0.13.0/proton/python/examples/direct_recv.py.html
@@ -0,0 +1,186 @@
+<!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>direct_recv.py - 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/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;">
+        <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-proton-0.13.0/index.html">Qpid Proton 0.13.0</a></li><li><a href="/releases/qpid-proton-0.13.0/proton/python/examples/index.html">Proton Python Examples</a></li><li>direct_recv.py</li></ul>
+
+        <div id="-middle-content">
+          
+<h1>direct_recv.py</h1>
+<div class="highlight"><pre><span></span><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">optparse</span>
+<span class="kn">from</span> <span class="nn">proton.handlers</span> <span class="kn">import</span> <span class="n">MessagingHandler</span>
+<span class="kn">from</span> <span class="nn">proton.reactor</span> <span class="kn">import</span> <span class="n">Container</span>
+
+<span class="k">class</span> <span class="nc">Recv</span><span class="p">(</span><span class="n">MessagingHandler</span><span class="p">):</span>
+    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">url</span><span class="p">,</span> <span class="n">count</span><span class="p">):</span>
+        <span class="nb">super</span><span class="p">(</span><span class="n">Recv</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">__init__</span><span class="p">()</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">url</span> <span class="o">=</span> <span class="n">url</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">expected</span> <span class="o">=</span> <span class="n">count</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">received</span> <span class="o">=</span> <span class="mi">0</span>
+
+    <span class="k">def</span> <span class="nf">on_start</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">acceptor</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">container</span><span class="o">.</span><span class="n">listen</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">url</span><span class="p">)</span>
+
+    <span class="k">def</span> <span class="nf">on_message</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="k">if</span> <span class="n">event</span><span class="o">.</span><span class="n">message</span><span class="o">.</span><span class="n">id</span> <span class="ow">and</span> <span class="n">event</span><span class="o">.</span><span class="n">message</span><span class="o">.</span><span class="n">id</span> <span class="o">&lt;</span> <span class="bp">self</span><span class="o">.</span><span class="n">received</span><span class="p">:</span>
+            <span class="c1"># ignore duplicate message</span>
+            <span class="k">return</span>
+        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">expected</span> <span class="o">==</span> <span class="mi">0</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">received</span> <span class="o">&lt;</span> <span class="bp">self</span><span class="o">.</span><span class="n">expected</span><span class="p">:</span>
+            <span class="k">print</span><span class="p">(</span><span class="n">event</span><span class="o">.</span><span class="n">message</span><span class="o">.</span><span class="n">body</span><span class="p">)</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">received</span> <span class="o">+=</span> <span class="mi">1</span>
+            <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">received</span> <span class="o">==</span> <span class="bp">self</span><span class="o">.</span><span class="n">expected</span><span class="p">:</span>
+                <span class="n">event</span><span class="o">.</span><span class="n">receiver</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
+                <span class="n">event</span><span class="o">.</span><span class="n">connection</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
+                <span class="bp">self</span><span class="o">.</span><span class="n">acceptor</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
+
+<span class="n">parser</span> <span class="o">=</span> <span class="n">optparse</span><span class="o">.</span><span class="n">OptionParser</span><span class="p">(</span><span class="n">usage</span><span class="o">=</span><span class="s2">&quot;usage: %prog [options]&quot;</span><span class="p">)</span>
+<span class="n">parser</span><span class="o">.</span><span class="n">add_option</span><span class="p">(</span><span class="s2">&quot;-a&quot;</span><span class="p">,</span> <span class="s2">&quot;--address&quot;</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="s2">&quot;localhost:5672/examples&quot;</span><span class="p">,</span>
+                  <span class="n">help</span><span class="o">=</span><span class="s2">&quot;address from which messages are received (default </span><span class="si">%d</span><span class="s2">efault)&quot;</span><span class="p">)</span>
+<span class="n">parser</span><span class="o">.</span><span class="n">add_option</span><span class="p">(</span><span class="s2">&quot;-m&quot;</span><span class="p">,</span> <span class="s2">&quot;--messages&quot;</span><span class="p">,</span> <span class="nb">type</span><span class="o">=</span><span class="s2">&quot;int&quot;</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="mi">100</span><span class="p">,</span>
+                  <span class="n">help</span><span class="o">=</span><span class="s2">&quot;number of messages to receive; 0 receives indefinitely (default </span><span class="si">%d</span><span class="s2">efault)&quot;</span><span class="p">)</span>
+<span class="n">opts</span><span class="p">,</span> <span class="n">args</span> <span class="o">=</span> <span class="n">parser</span><span class="o">.</span><span class="n">parse_args</span><span class="p">()</span>
+
+<span class="k">try</span><span class="p">:</span>
+    <span class="n">Container</span><span class="p">(</span><span class="n">Recv</span><span class="p">(</span><span class="n">opts</span><span class="o">.</span><span class="n">address</span><span class="p">,</span> <span class="n">opts</span><span class="o">.</span><span class="n">messages</span><span class="p">))</span><span class="o">.</span><span class="n">run</span><span class="p">()</span>
+<span class="k">except</span> <span class="ne">KeyboardInterrupt</span><span class="p">:</span> <span class="k">pass</span>
+</pre></div>
+
+<p><a href="direct_recv.py">Download this file</a></p>
+
+
+          <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/75ca8b14/content/releases/qpid-proton-0.13.0/proton/python/examples/direct_send.py
----------------------------------------------------------------------
diff --git a/content/releases/qpid-proton-0.13.0/proton/python/examples/direct_send.py b/content/releases/qpid-proton-0.13.0/proton/python/examples/direct_send.py
new file mode 100755
index 0000000..35bd2f5
--- /dev/null
+++ b/content/releases/qpid-proton-0.13.0/proton/python/examples/direct_send.py
@@ -0,0 +1,64 @@
+#!/usr/bin/env python
+#
+# 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.
+#
+
+from __future__ import print_function, unicode_literals
+import optparse
+from proton import Message
+from proton.handlers import MessagingHandler
+from proton.reactor import Container
+
+class Send(MessagingHandler):
+    def __init__(self, url, messages):
+        super(Send, self).__init__()
+        self.url = url
+        self.sent = 0
+        self.confirmed = 0
+        self.total = messages
+
+    def on_start(self, event):
+        self.acceptor = event.container.listen(self.url)
+
+    def on_sendable(self, event):
+        while event.sender.credit and self.sent < self.total:
+            msg = Message(id=(self.sent+1), body={'sequence':(self.sent+1)})
+            event.sender.send(msg)
+            self.sent += 1
+
+    def on_accepted(self, event):
+        self.confirmed += 1
+        if self.confirmed == self.total:
+            print("all messages confirmed")
+            event.connection.close()
+            self.acceptor.close()
+
+    def on_disconnected(self, event):
+        self.sent = self.confirmed
+
+parser = optparse.OptionParser(usage="usage: %prog [options]",
+                               description="Send messages to the supplied address.")
+parser.add_option("-a", "--address", default="localhost:5672/examples",
+                  help="address to which messages are sent (default %default)")
+parser.add_option("-m", "--messages", type="int", default=100,
+                  help="number of messages to send (default %default)")
+opts, args = parser.parse_args()
+
+try:
+    Container(Send(opts.address, opts.messages)).run()
+except KeyboardInterrupt: pass

http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/content/releases/qpid-proton-0.13.0/proton/python/examples/direct_send.py.html
----------------------------------------------------------------------
diff --git a/content/releases/qpid-proton-0.13.0/proton/python/examples/direct_send.py.html b/content/releases/qpid-proton-0.13.0/proton/python/examples/direct_send.py.html
new file mode 100644
index 0000000..26f0c08
--- /dev/null
+++ b/content/releases/qpid-proton-0.13.0/proton/python/examples/direct_send.py.html
@@ -0,0 +1,193 @@
+<!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>direct_send.py - 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/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;">
+        <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-proton-0.13.0/index.html">Qpid Proton 0.13.0</a></li><li><a href="/releases/qpid-proton-0.13.0/proton/python/examples/index.html">Proton Python Examples</a></li><li>direct_send.py</li></ul>
+
+        <div id="-middle-content">
+          
+<h1>direct_send.py</h1>
+<div class="highlight"><pre><span></span><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>
+<span class="kn">from</span> <span class="nn">proton</span> <span class="kn">import</span> <span class="n">Message</span>
+<span class="kn">from</span> <span class="nn">proton.handlers</span> <span class="kn">import</span> <span class="n">MessagingHandler</span>
+<span class="kn">from</span> <span class="nn">proton.reactor</span> <span class="kn">import</span> <span class="n">Container</span>
+
+<span class="k">class</span> <span class="nc">Send</span><span class="p">(</span><span class="n">MessagingHandler</span><span class="p">):</span>
+    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">url</span><span class="p">,</span> <span class="n">messages</span><span class="p">):</span>
+        <span class="nb">super</span><span class="p">(</span><span class="n">Send</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">__init__</span><span class="p">()</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">url</span> <span class="o">=</span> <span class="n">url</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">sent</span> <span class="o">=</span> <span class="mi">0</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">confirmed</span> <span class="o">=</span> <span class="mi">0</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">total</span> <span class="o">=</span> <span class="n">messages</span>
+
+    <span class="k">def</span> <span class="nf">on_start</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">acceptor</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">container</span><span class="o">.</span><span class="n">listen</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">url</span><span class="p">)</span>
+
+    <span class="k">def</span> <span class="nf">on_sendable</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="k">while</span> <span class="n">event</span><span class="o">.</span><span class="n">sender</span><span class="o">.</span><span class="n">credit</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">sent</span> <span class="o">&lt;</span> <span class="bp">self</span><span class="o">.</span><span class="n">total</span><span class="p">:</span>
+            <span class="n">msg</span> <span class="o">=</span> <span class="n">Message</span><span class="p">(</span><span class="nb">id</span><span class="o">=</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">sent</span><span class="o">+</span><span class="mi">1</span><span class="p">),</span> <span class="n">body</span><span class="o">=</span><span class="p">{</span><span class="s1">&#39;sequence&#39;</span><span class="p">:(</span><span class="bp">self</span><span class="o">.</span><span class="n">sent</span><span class="o">+</span><span class="mi">1</span><span class="p">)})</span>
+            <span class="n">event</span><span class="o">.</span><span class="n">sender</span><span class="o">.</span><span class="n">send</span><span class="p">(</span><span class="n">msg</span><span class="p">)</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">sent</span> <span class="o">+=</span> <span class="mi">1</span>
+
+    <span class="k">def</span> <span class="nf">on_accepted</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">confirmed</span> <span class="o">+=</span> <span class="mi">1</span>
+        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">confirmed</span> <span class="o">==</span> <span class="bp">self</span><span class="o">.</span><span class="n">total</span><span class="p">:</span>
+            <span class="k">print</span><span class="p">(</span><span class="s2">&quot;all messages confirmed&quot;</span><span class="p">)</span>
+            <span class="n">event</span><span class="o">.</span><span class="n">connection</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">acceptor</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
+
+    <span class="k">def</span> <span class="nf">on_disconnected</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">sent</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">confirmed</span>
+
+<span class="n">parser</span> <span class="o">=</span> <span class="n">optparse</span><span class="o">.</span><span class="n">OptionParser</span><span class="p">(</span><span class="n">usage</span><span class="o">=</span><span class="s2">&quot;usage: %prog [options]&quot;</span><span class="p">,</span>
+                               <span class="n">description</span><span class="o">=</span><span class="s2">&quot;Send messages to the supplied address.&quot;</span><span class="p">)</span>
+<span class="n">parser</span><span class="o">.</span><span class="n">add_option</span><span class="p">(</span><span class="s2">&quot;-a&quot;</span><span class="p">,</span> <span class="s2">&quot;--address&quot;</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="s2">&quot;localhost:5672/examples&quot;</span><span class="p">,</span>
+                  <span class="n">help</span><span class="o">=</span><span class="s2">&quot;address to which messages are sent (default </span><span class="si">%d</span><span class="s2">efault)&quot;</span><span class="p">)</span>
+<span class="n">parser</span><span class="o">.</span><span class="n">add_option</span><span class="p">(</span><span class="s2">&quot;-m&quot;</span><span class="p">,</span> <span class="s2">&quot;--messages&quot;</span><span class="p">,</span> <span class="nb">type</span><span class="o">=</span><span class="s2">&quot;int&quot;</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="mi">100</span><span class="p">,</span>
+                  <span class="n">help</span><span class="o">=</span><span class="s2">&quot;number of messages to send (default </span><span class="si">%d</span><span class="s2">efault)&quot;</span><span class="p">)</span>
+<span class="n">opts</span><span class="p">,</span> <span class="n">args</span> <span class="o">=</span> <span class="n">parser</span><span class="o">.</span><span class="n">parse_args</span><span class="p">()</span>
+
+<span class="k">try</span><span class="p">:</span>
+    <span class="n">Container</span><span class="p">(</span><span class="n">Send</span><span class="p">(</span><span class="n">opts</span><span class="o">.</span><span class="n">address</span><span class="p">,</span> <span class="n">opts</span><span class="o">.</span><span class="n">messages</span><span class="p">))</span><span class="o">.</span><span class="n">run</span><span class="p">()</span>
+<span class="k">except</span> <span class="ne">KeyboardInterrupt</span><span class="p">:</span> <span class="k">pass</span>
+</pre></div>
+
+<p><a href="direct_send.py">Download this file</a></p>
+
+
+          <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/75ca8b14/content/releases/qpid-proton-0.13.0/proton/python/examples/helloworld.py
----------------------------------------------------------------------
diff --git a/content/releases/qpid-proton-0.13.0/proton/python/examples/helloworld.py b/content/releases/qpid-proton-0.13.0/proton/python/examples/helloworld.py
new file mode 100755
index 0000000..7a91aa4
--- /dev/null
+++ b/content/releases/qpid-proton-0.13.0/proton/python/examples/helloworld.py
@@ -0,0 +1,45 @@
+#!/usr/bin/env python
+#
+# 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.
+#
+
+from __future__ import print_function, unicode_literals
+from proton import Message
+from proton.handlers import MessagingHandler
+from proton.reactor import Container
+
+class HelloWorld(MessagingHandler):
+    def __init__(self, server, address):
+        super(HelloWorld, self).__init__()
+        self.server = server
+        self.address = address
+
+    def on_start(self, event):
+        conn = event.container.connect(self.server)
+        event.container.create_receiver(conn, self.address)
+        event.container.create_sender(conn, self.address)
+
+    def on_sendable(self, event):
+        event.sender.send(Message(body="Hello World!"))
+        event.sender.close()
+
+    def on_message(self, event):
+        print(event.message.body)
+        event.connection.close()
+
+Container(HelloWorld("localhost:5672", "examples")).run()

http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/content/releases/qpid-proton-0.13.0/proton/python/examples/helloworld.py.html
----------------------------------------------------------------------
diff --git a/content/releases/qpid-proton-0.13.0/proton/python/examples/helloworld.py.html b/content/releases/qpid-proton-0.13.0/proton/python/examples/helloworld.py.html
new file mode 100644
index 0000000..a137171
--- /dev/null
+++ b/content/releases/qpid-proton-0.13.0/proton/python/examples/helloworld.py.html
@@ -0,0 +1,174 @@
+<!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>helloworld.py - 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/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;">
+        <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-proton-0.13.0/index.html">Qpid Proton 0.13.0</a></li><li><a href="/releases/qpid-proton-0.13.0/proton/python/examples/index.html">Proton Python Examples</a></li><li>helloworld.py</li></ul>
+
+        <div id="-middle-content">
+          
+<h1>helloworld.py</h1>
+<div class="highlight"><pre><span></span><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">from</span> <span class="nn">proton</span> <span class="kn">import</span> <span class="n">Message</span>
+<span class="kn">from</span> <span class="nn">proton.handlers</span> <span class="kn">import</span> <span class="n">MessagingHandler</span>
+<span class="kn">from</span> <span class="nn">proton.reactor</span> <span class="kn">import</span> <span class="n">Container</span>
+
+<span class="k">class</span> <span class="nc">HelloWorld</span><span class="p">(</span><span class="n">MessagingHandler</span><span class="p">):</span>
+    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">server</span><span class="p">,</span> <span class="n">address</span><span class="p">):</span>
+        <span class="nb">super</span><span class="p">(</span><span class="n">HelloWorld</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">__init__</span><span class="p">()</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">server</span> <span class="o">=</span> <span class="n">server</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">address</span> <span class="o">=</span> <span class="n">address</span>
+
+    <span class="k">def</span> <span class="nf">on_start</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="n">conn</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">container</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">server</span><span class="p">)</span>
+        <span class="n">event</span><span class="o">.</span><span class="n">container</span><span class="o">.</span><span class="n">create_receiver</span><span class="p">(</span><span class="n">conn</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">address</span><span class="p">)</span>
+        <span class="n">event</span><span class="o">.</span><span class="n">container</span><span class="o">.</span><span class="n">create_sender</span><span class="p">(</span><span class="n">conn</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">address</span><span class="p">)</span>
+
+    <span class="k">def</span> <span class="nf">on_sendable</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="n">event</span><span class="o">.</span><span class="n">sender</span><span class="o">.</span><span class="n">send</span><span class="p">(</span><span class="n">Message</span><span class="p">(</span><span class="n">body</span><span class="o">=</span><span class="s2">&quot;Hello World!&quot;</span><span class="p">))</span>
+        <span class="n">event</span><span class="o">.</span><span class="n">sender</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
+
+    <span class="k">def</span> <span class="nf">on_message</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="k">print</span><span class="p">(</span><span class="n">event</span><span class="o">.</span><span class="n">message</span><span class="o">.</span><span class="n">body</span><span class="p">)</span>
+        <span class="n">event</span><span class="o">.</span><span class="n">connection</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
+
+<span class="n">Container</span><span class="p">(</span><span class="n">HelloWorld</span><span class="p">(</span><span class="s2">&quot;localhost:5672&quot;</span><span class="p">,</span> <span class="s2">&quot;examples&quot;</span><span class="p">))</span><span class="o">.</span><span class="n">run</span><span class="p">()</span>
+</pre></div>
+
+<p><a href="helloworld.py">Download this file</a></p>
+
+
+          <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/75ca8b14/content/releases/qpid-proton-0.13.0/proton/python/examples/helloworld_blocking.py
----------------------------------------------------------------------
diff --git a/content/releases/qpid-proton-0.13.0/proton/python/examples/helloworld_blocking.py b/content/releases/qpid-proton-0.13.0/proton/python/examples/helloworld_blocking.py
new file mode 100755
index 0000000..5a5ce6d
--- /dev/null
+++ b/content/releases/qpid-proton-0.13.0/proton/python/examples/helloworld_blocking.py
@@ -0,0 +1,34 @@
+#!/usr/bin/env python
+#
+# 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.
+#
+
+from __future__ import print_function
+from proton import Message
+from proton.utils import BlockingConnection
+from proton.handlers import IncomingMessageHandler
+
+conn = BlockingConnection("localhost:5672")
+receiver = conn.create_receiver("examples")
+sender = conn.create_sender("examples")
+sender.send(Message(body="Hello World!"));
+msg = receiver.receive(timeout=30)
+print(msg.body)
+receiver.accept()
+conn.close()
+

http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/content/releases/qpid-proton-0.13.0/proton/python/examples/helloworld_blocking.py.html
----------------------------------------------------------------------
diff --git a/content/releases/qpid-proton-0.13.0/proton/python/examples/helloworld_blocking.py.html b/content/releases/qpid-proton-0.13.0/proton/python/examples/helloworld_blocking.py.html
new file mode 100644
index 0000000..459531e
--- /dev/null
+++ b/content/releases/qpid-proton-0.13.0/proton/python/examples/helloworld_blocking.py.html
@@ -0,0 +1,162 @@
+<!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>helloworld_blocking.py - 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/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;">
+        <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-proton-0.13.0/index.html">Qpid Proton 0.13.0</a></li><li><a href="/releases/qpid-proton-0.13.0/proton/python/examples/index.html">Proton Python Examples</a></li><li>helloworld_blocking.py</li></ul>
+
+        <div id="-middle-content">
+          
+<h1>helloworld_blocking.py</h1>
+<div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">__future__</span> <span class="kn">import</span> <span class="n">print_function</span>
+<span class="kn">from</span> <span class="nn">proton</span> <span class="kn">import</span> <span class="n">Message</span>
+<span class="kn">from</span> <span class="nn">proton.utils</span> <span class="kn">import</span> <span class="n">BlockingConnection</span>
+<span class="kn">from</span> <span class="nn">proton.handlers</span> <span class="kn">import</span> <span class="n">IncomingMessageHandler</span>
+
+<span class="n">conn</span> <span class="o">=</span> <span class="n">BlockingConnection</span><span class="p">(</span><span class="s2">&quot;localhost:5672&quot;</span><span class="p">)</span>
+<span class="n">receiver</span> <span class="o">=</span> <span class="n">conn</span><span class="o">.</span><span class="n">create_receiver</span><span class="p">(</span><span class="s2">&quot;examples&quot;</span><span class="p">)</span>
+<span class="n">sender</span> <span class="o">=</span> <span class="n">conn</span><span class="o">.</span><span class="n">create_sender</span><span class="p">(</span><span class="s2">&quot;examples&quot;</span><span class="p">)</span>
+<span class="n">sender</span><span class="o">.</span><span class="n">send</span><span class="p">(</span><span class="n">Message</span><span class="p">(</span><span class="n">body</span><span class="o">=</span><span class="s2">&quot;Hello World!&quot;</span><span class="p">));</span>
+<span class="n">msg</span> <span class="o">=</span> <span class="n">receiver</span><span class="o">.</span><span class="n">receive</span><span class="p">(</span><span class="n">timeout</span><span class="o">=</span><span class="mi">30</span><span class="p">)</span>
+<span class="k">print</span><span class="p">(</span><span class="n">msg</span><span class="o">.</span><span class="n">body</span><span class="p">)</span>
+<span class="n">receiver</span><span class="o">.</span><span class="n">accept</span><span class="p">()</span>
+<span class="n">conn</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
+</pre></div>
+
+<p><a href="helloworld_blocking.py">Download this file</a></p>
+
+
+          <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/75ca8b14/content/releases/qpid-proton-0.13.0/proton/python/examples/helloworld_direct.py
----------------------------------------------------------------------
diff --git a/content/releases/qpid-proton-0.13.0/proton/python/examples/helloworld_direct.py b/content/releases/qpid-proton-0.13.0/proton/python/examples/helloworld_direct.py
new file mode 100755
index 0000000..0292abe
--- /dev/null
+++ b/content/releases/qpid-proton-0.13.0/proton/python/examples/helloworld_direct.py
@@ -0,0 +1,48 @@
+#!/usr/bin/env python
+#
+# 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.
+#
+
+from __future__ import print_function, unicode_literals
+from proton import Message
+from proton.handlers import MessagingHandler
+from proton.reactor import Container
+
+class HelloWorld(MessagingHandler):
+    def __init__(self, url):
+        super(HelloWorld, self).__init__()
+        self.url = url
+
+    def on_start(self, event):
+        self.acceptor = event.container.listen(self.url)
+        event.container.create_sender(self.url)
+
+    def on_sendable(self, event):
+        event.sender.send(Message(body="Hello World!"))
+        event.sender.close()
+
+    def on_message(self, event):
+        print(event.message.body)
+
+    def on_accepted(self, event):
+        event.connection.close()
+
+    def on_connection_closed(self, event):
+        self.acceptor.close()
+
+Container(HelloWorld("localhost:8888/examples")).run()

http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/content/releases/qpid-proton-0.13.0/proton/python/examples/helloworld_direct.py.html
----------------------------------------------------------------------
diff --git a/content/releases/qpid-proton-0.13.0/proton/python/examples/helloworld_direct.py.html b/content/releases/qpid-proton-0.13.0/proton/python/examples/helloworld_direct.py.html
new file mode 100644
index 0000000..a0fd84b
--- /dev/null
+++ b/content/releases/qpid-proton-0.13.0/proton/python/examples/helloworld_direct.py.html
@@ -0,0 +1,177 @@
+<!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>helloworld_direct.py - 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/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;">
+        <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-proton-0.13.0/index.html">Qpid Proton 0.13.0</a></li><li><a href="/releases/qpid-proton-0.13.0/proton/python/examples/index.html">Proton Python Examples</a></li><li>helloworld_direct.py</li></ul>
+
+        <div id="-middle-content">
+          
+<h1>helloworld_direct.py</h1>
+<div class="highlight"><pre><span></span><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">from</span> <span class="nn">proton</span> <span class="kn">import</span> <span class="n">Message</span>
+<span class="kn">from</span> <span class="nn">proton.handlers</span> <span class="kn">import</span> <span class="n">MessagingHandler</span>
+<span class="kn">from</span> <span class="nn">proton.reactor</span> <span class="kn">import</span> <span class="n">Container</span>
+
+<span class="k">class</span> <span class="nc">HelloWorld</span><span class="p">(</span><span class="n">MessagingHandler</span><span class="p">):</span>
+    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">url</span><span class="p">):</span>
+        <span class="nb">super</span><span class="p">(</span><span class="n">HelloWorld</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">__init__</span><span class="p">()</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">url</span> <span class="o">=</span> <span class="n">url</span>
+
+    <span class="k">def</span> <span class="nf">on_start</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">acceptor</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">container</span><span class="o">.</span><span class="n">listen</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">url</span><span class="p">)</span>
+        <span class="n">event</span><span class="o">.</span><span class="n">container</span><span class="o">.</span><span class="n">create_sender</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">url</span><span class="p">)</span>
+
+    <span class="k">def</span> <span class="nf">on_sendable</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="n">event</span><span class="o">.</span><span class="n">sender</span><span class="o">.</span><span class="n">send</span><span class="p">(</span><span class="n">Message</span><span class="p">(</span><span class="n">body</span><span class="o">=</span><span class="s2">&quot;Hello World!&quot;</span><span class="p">))</span>
+        <span class="n">event</span><span class="o">.</span><span class="n">sender</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
+
+    <span class="k">def</span> <span class="nf">on_message</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="k">print</span><span class="p">(</span><span class="n">event</span><span class="o">.</span><span class="n">message</span><span class="o">.</span><span class="n">body</span><span class="p">)</span>
+
+    <span class="k">def</span> <span class="nf">on_accepted</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="n">event</span><span class="o">.</span><span class="n">connection</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
+
+    <span class="k">def</span> <span class="nf">on_connection_closed</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">acceptor</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
+
+<span class="n">Container</span><span class="p">(</span><span class="n">HelloWorld</span><span class="p">(</span><span class="s2">&quot;localhost:8888/examples&quot;</span><span class="p">))</span><span class="o">.</span><span class="n">run</span><span class="p">()</span>
+</pre></div>
+
+<p><a href="helloworld_direct.py">Download this file</a></p>
+
+
+          <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/75ca8b14/content/releases/qpid-proton-0.13.0/proton/python/examples/helloworld_direct_tornado.py
----------------------------------------------------------------------
diff --git a/content/releases/qpid-proton-0.13.0/proton/python/examples/helloworld_direct_tornado.py b/content/releases/qpid-proton-0.13.0/proton/python/examples/helloworld_direct_tornado.py
new file mode 100755
index 0000000..a3b017a
--- /dev/null
+++ b/content/releases/qpid-proton-0.13.0/proton/python/examples/helloworld_direct_tornado.py
@@ -0,0 +1,48 @@
+#!/usr/bin/env python
+#
+# 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.
+#
+
+from __future__ import print_function
+from proton import Message
+from proton.handlers import MessagingHandler
+from proton_tornado import Container
+
+class HelloWorld(MessagingHandler):
+    def __init__(self, url):
+        super(HelloWorld, self).__init__()
+        self.url = url
+
+    def on_start(self, event):
+        self.acceptor = event.container.listen(self.url)
+        event.container.create_sender(self.url)
+
+    def on_sendable(self, event):
+        event.sender.send(Message(body="Hello World!"))
+        event.sender.close()
+
+    def on_message(self, event):
+        print(event.message.body)
+
+    def on_accepted(self, event):
+        event.connection.close()
+
+    def on_connection_closed(self, event):
+        self.acceptor.close()
+
+Container(HelloWorld("localhost:8888/examples")).run()

http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/content/releases/qpid-proton-0.13.0/proton/python/examples/helloworld_direct_tornado.py.html
----------------------------------------------------------------------
diff --git a/content/releases/qpid-proton-0.13.0/proton/python/examples/helloworld_direct_tornado.py.html b/content/releases/qpid-proton-0.13.0/proton/python/examples/helloworld_direct_tornado.py.html
new file mode 100644
index 0000000..64fd893
--- /dev/null
+++ b/content/releases/qpid-proton-0.13.0/proton/python/examples/helloworld_direct_tornado.py.html
@@ -0,0 +1,177 @@
+<!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>helloworld_direct_tornado.py - 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/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;">
+        <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-proton-0.13.0/index.html">Qpid Proton 0.13.0</a></li><li><a href="/releases/qpid-proton-0.13.0/proton/python/examples/index.html">Proton Python Examples</a></li><li>helloworld_direct_tornado.py</li></ul>
+
+        <div id="-middle-content">
+          
+<h1>helloworld_direct_tornado.py</h1>
+<div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">__future__</span> <span class="kn">import</span> <span class="n">print_function</span>
+<span class="kn">from</span> <span class="nn">proton</span> <span class="kn">import</span> <span class="n">Message</span>
+<span class="kn">from</span> <span class="nn">proton.handlers</span> <span class="kn">import</span> <span class="n">MessagingHandler</span>
+<span class="kn">from</span> <span class="nn">proton_tornado</span> <span class="kn">import</span> <span class="n">Container</span>
+
+<span class="k">class</span> <span class="nc">HelloWorld</span><span class="p">(</span><span class="n">MessagingHandler</span><span class="p">):</span>
+    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">url</span><span class="p">):</span>
+        <span class="nb">super</span><span class="p">(</span><span class="n">HelloWorld</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">__init__</span><span class="p">()</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">url</span> <span class="o">=</span> <span class="n">url</span>
+
+    <span class="k">def</span> <span class="nf">on_start</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">acceptor</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">container</span><span class="o">.</span><span class="n">listen</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">url</span><span class="p">)</span>
+        <span class="n">event</span><span class="o">.</span><span class="n">container</span><span class="o">.</span><span class="n">create_sender</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">url</span><span class="p">)</span>
+
+    <span class="k">def</span> <span class="nf">on_sendable</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="n">event</span><span class="o">.</span><span class="n">sender</span><span class="o">.</span><span class="n">send</span><span class="p">(</span><span class="n">Message</span><span class="p">(</span><span class="n">body</span><span class="o">=</span><span class="s2">&quot;Hello World!&quot;</span><span class="p">))</span>
+        <span class="n">event</span><span class="o">.</span><span class="n">sender</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
+
+    <span class="k">def</span> <span class="nf">on_message</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="k">print</span><span class="p">(</span><span class="n">event</span><span class="o">.</span><span class="n">message</span><span class="o">.</span><span class="n">body</span><span class="p">)</span>
+
+    <span class="k">def</span> <span class="nf">on_accepted</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="n">event</span><span class="o">.</span><span class="n">connection</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
+
+    <span class="k">def</span> <span class="nf">on_connection_closed</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">acceptor</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
+
+<span class="n">Container</span><span class="p">(</span><span class="n">HelloWorld</span><span class="p">(</span><span class="s2">&quot;localhost:8888/examples&quot;</span><span class="p">))</span><span class="o">.</span><span class="n">run</span><span class="p">()</span>
+</pre></div>
+
+<p><a href="helloworld_direct_tornado.py">Download this file</a></p>
+
+
+          <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/75ca8b14/content/releases/qpid-proton-0.13.0/proton/python/examples/helloworld_tornado.py
----------------------------------------------------------------------
diff --git a/content/releases/qpid-proton-0.13.0/proton/python/examples/helloworld_tornado.py b/content/releases/qpid-proton-0.13.0/proton/python/examples/helloworld_tornado.py
new file mode 100755
index 0000000..0781bbb
--- /dev/null
+++ b/content/releases/qpid-proton-0.13.0/proton/python/examples/helloworld_tornado.py
@@ -0,0 +1,45 @@
+#!/usr/bin/env python
+#
+# 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.
+#
+
+from __future__ import print_function
+from proton import Message
+from proton.handlers import MessagingHandler
+from proton_tornado import Container
+
+class HelloWorld(MessagingHandler):
+    def __init__(self, server, address):
+        super(HelloWorld, self).__init__()
+        self.server = server
+        self.address = address
+
+    def on_start(self, event):
+        conn = event.container.connect(self.server)
+        event.container.create_receiver(conn, self.address)
+        event.container.create_sender(conn, self.address)
+
+    def on_sendable(self, event):
+        event.sender.send(Message(body="Hello World!"))
+        event.sender.close()
+
+    def on_message(self, event):
+        print(event.message.body)
+        event.connection.close()
+
+Container(HelloWorld("localhost:5672", "examples")).run()


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


[03/26] qpid-site git commit: QPID-7350: Examples that should have gone with the previous commit

Posted by jr...@apache.org.
http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/input/releases/qpid-proton-0.13.0/proton/python/examples/helloworld.py
----------------------------------------------------------------------
diff --git a/input/releases/qpid-proton-0.13.0/proton/python/examples/helloworld.py b/input/releases/qpid-proton-0.13.0/proton/python/examples/helloworld.py
new file mode 100755
index 0000000..7a91aa4
--- /dev/null
+++ b/input/releases/qpid-proton-0.13.0/proton/python/examples/helloworld.py
@@ -0,0 +1,45 @@
+#!/usr/bin/env python
+#
+# 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.
+#
+
+from __future__ import print_function, unicode_literals
+from proton import Message
+from proton.handlers import MessagingHandler
+from proton.reactor import Container
+
+class HelloWorld(MessagingHandler):
+    def __init__(self, server, address):
+        super(HelloWorld, self).__init__()
+        self.server = server
+        self.address = address
+
+    def on_start(self, event):
+        conn = event.container.connect(self.server)
+        event.container.create_receiver(conn, self.address)
+        event.container.create_sender(conn, self.address)
+
+    def on_sendable(self, event):
+        event.sender.send(Message(body="Hello World!"))
+        event.sender.close()
+
+    def on_message(self, event):
+        print(event.message.body)
+        event.connection.close()
+
+Container(HelloWorld("localhost:5672", "examples")).run()

http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/input/releases/qpid-proton-0.13.0/proton/python/examples/helloworld.py.html.in
----------------------------------------------------------------------
diff --git a/input/releases/qpid-proton-0.13.0/proton/python/examples/helloworld.py.html.in b/input/releases/qpid-proton-0.13.0/proton/python/examples/helloworld.py.html.in
new file mode 100644
index 0000000..5c697e7
--- /dev/null
+++ b/input/releases/qpid-proton-0.13.0/proton/python/examples/helloworld.py.html.in
@@ -0,0 +1,30 @@
+
+<h1>helloworld.py</h1>
+<div class="highlight"><pre><span></span><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">from</span> <span class="nn">proton</span> <span class="kn">import</span> <span class="n">Message</span>
+<span class="kn">from</span> <span class="nn">proton.handlers</span> <span class="kn">import</span> <span class="n">MessagingHandler</span>
+<span class="kn">from</span> <span class="nn">proton.reactor</span> <span class="kn">import</span> <span class="n">Container</span>
+
+<span class="k">class</span> <span class="nc">HelloWorld</span><span class="p">(</span><span class="n">MessagingHandler</span><span class="p">):</span>
+    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">server</span><span class="p">,</span> <span class="n">address</span><span class="p">):</span>
+        <span class="nb">super</span><span class="p">(</span><span class="n">HelloWorld</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">__init__</span><span class="p">()</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">server</span> <span class="o">=</span> <span class="n">server</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">address</span> <span class="o">=</span> <span class="n">address</span>
+
+    <span class="k">def</span> <span class="nf">on_start</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="n">conn</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">container</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">server</span><span class="p">)</span>
+        <span class="n">event</span><span class="o">.</span><span class="n">container</span><span class="o">.</span><span class="n">create_receiver</span><span class="p">(</span><span class="n">conn</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">address</span><span class="p">)</span>
+        <span class="n">event</span><span class="o">.</span><span class="n">container</span><span class="o">.</span><span class="n">create_sender</span><span class="p">(</span><span class="n">conn</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">address</span><span class="p">)</span>
+
+    <span class="k">def</span> <span class="nf">on_sendable</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="n">event</span><span class="o">.</span><span class="n">sender</span><span class="o">.</span><span class="n">send</span><span class="p">(</span><span class="n">Message</span><span class="p">(</span><span class="n">body</span><span class="o">=</span><span class="s2">&quot;Hello World!&quot;</span><span class="p">))</span>
+        <span class="n">event</span><span class="o">.</span><span class="n">sender</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
+
+    <span class="k">def</span> <span class="nf">on_message</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="k">print</span><span class="p">(</span><span class="n">event</span><span class="o">.</span><span class="n">message</span><span class="o">.</span><span class="n">body</span><span class="p">)</span>
+        <span class="n">event</span><span class="o">.</span><span class="n">connection</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
+
+<span class="n">Container</span><span class="p">(</span><span class="n">HelloWorld</span><span class="p">(</span><span class="s2">&quot;localhost:5672&quot;</span><span class="p">,</span> <span class="s2">&quot;examples&quot;</span><span class="p">))</span><span class="o">.</span><span class="n">run</span><span class="p">()</span>
+</pre></div>
+
+<p><a href="helloworld.py">Download this file</a></p>

http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/input/releases/qpid-proton-0.13.0/proton/python/examples/helloworld_blocking.py
----------------------------------------------------------------------
diff --git a/input/releases/qpid-proton-0.13.0/proton/python/examples/helloworld_blocking.py b/input/releases/qpid-proton-0.13.0/proton/python/examples/helloworld_blocking.py
new file mode 100755
index 0000000..5a5ce6d
--- /dev/null
+++ b/input/releases/qpid-proton-0.13.0/proton/python/examples/helloworld_blocking.py
@@ -0,0 +1,34 @@
+#!/usr/bin/env python
+#
+# 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.
+#
+
+from __future__ import print_function
+from proton import Message
+from proton.utils import BlockingConnection
+from proton.handlers import IncomingMessageHandler
+
+conn = BlockingConnection("localhost:5672")
+receiver = conn.create_receiver("examples")
+sender = conn.create_sender("examples")
+sender.send(Message(body="Hello World!"));
+msg = receiver.receive(timeout=30)
+print(msg.body)
+receiver.accept()
+conn.close()
+

http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/input/releases/qpid-proton-0.13.0/proton/python/examples/helloworld_blocking.py.html.in
----------------------------------------------------------------------
diff --git a/input/releases/qpid-proton-0.13.0/proton/python/examples/helloworld_blocking.py.html.in b/input/releases/qpid-proton-0.13.0/proton/python/examples/helloworld_blocking.py.html.in
new file mode 100644
index 0000000..3fae32d
--- /dev/null
+++ b/input/releases/qpid-proton-0.13.0/proton/python/examples/helloworld_blocking.py.html.in
@@ -0,0 +1,18 @@
+
+<h1>helloworld_blocking.py</h1>
+<div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">__future__</span> <span class="kn">import</span> <span class="n">print_function</span>
+<span class="kn">from</span> <span class="nn">proton</span> <span class="kn">import</span> <span class="n">Message</span>
+<span class="kn">from</span> <span class="nn">proton.utils</span> <span class="kn">import</span> <span class="n">BlockingConnection</span>
+<span class="kn">from</span> <span class="nn">proton.handlers</span> <span class="kn">import</span> <span class="n">IncomingMessageHandler</span>
+
+<span class="n">conn</span> <span class="o">=</span> <span class="n">BlockingConnection</span><span class="p">(</span><span class="s2">&quot;localhost:5672&quot;</span><span class="p">)</span>
+<span class="n">receiver</span> <span class="o">=</span> <span class="n">conn</span><span class="o">.</span><span class="n">create_receiver</span><span class="p">(</span><span class="s2">&quot;examples&quot;</span><span class="p">)</span>
+<span class="n">sender</span> <span class="o">=</span> <span class="n">conn</span><span class="o">.</span><span class="n">create_sender</span><span class="p">(</span><span class="s2">&quot;examples&quot;</span><span class="p">)</span>
+<span class="n">sender</span><span class="o">.</span><span class="n">send</span><span class="p">(</span><span class="n">Message</span><span class="p">(</span><span class="n">body</span><span class="o">=</span><span class="s2">&quot;Hello World!&quot;</span><span class="p">));</span>
+<span class="n">msg</span> <span class="o">=</span> <span class="n">receiver</span><span class="o">.</span><span class="n">receive</span><span class="p">(</span><span class="n">timeout</span><span class="o">=</span><span class="mi">30</span><span class="p">)</span>
+<span class="k">print</span><span class="p">(</span><span class="n">msg</span><span class="o">.</span><span class="n">body</span><span class="p">)</span>
+<span class="n">receiver</span><span class="o">.</span><span class="n">accept</span><span class="p">()</span>
+<span class="n">conn</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
+</pre></div>
+
+<p><a href="helloworld_blocking.py">Download this file</a></p>

http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/input/releases/qpid-proton-0.13.0/proton/python/examples/helloworld_direct.py
----------------------------------------------------------------------
diff --git a/input/releases/qpid-proton-0.13.0/proton/python/examples/helloworld_direct.py b/input/releases/qpid-proton-0.13.0/proton/python/examples/helloworld_direct.py
new file mode 100755
index 0000000..0292abe
--- /dev/null
+++ b/input/releases/qpid-proton-0.13.0/proton/python/examples/helloworld_direct.py
@@ -0,0 +1,48 @@
+#!/usr/bin/env python
+#
+# 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.
+#
+
+from __future__ import print_function, unicode_literals
+from proton import Message
+from proton.handlers import MessagingHandler
+from proton.reactor import Container
+
+class HelloWorld(MessagingHandler):
+    def __init__(self, url):
+        super(HelloWorld, self).__init__()
+        self.url = url
+
+    def on_start(self, event):
+        self.acceptor = event.container.listen(self.url)
+        event.container.create_sender(self.url)
+
+    def on_sendable(self, event):
+        event.sender.send(Message(body="Hello World!"))
+        event.sender.close()
+
+    def on_message(self, event):
+        print(event.message.body)
+
+    def on_accepted(self, event):
+        event.connection.close()
+
+    def on_connection_closed(self, event):
+        self.acceptor.close()
+
+Container(HelloWorld("localhost:8888/examples")).run()

http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/input/releases/qpid-proton-0.13.0/proton/python/examples/helloworld_direct.py.html.in
----------------------------------------------------------------------
diff --git a/input/releases/qpid-proton-0.13.0/proton/python/examples/helloworld_direct.py.html.in b/input/releases/qpid-proton-0.13.0/proton/python/examples/helloworld_direct.py.html.in
new file mode 100644
index 0000000..b4afcb9
--- /dev/null
+++ b/input/releases/qpid-proton-0.13.0/proton/python/examples/helloworld_direct.py.html.in
@@ -0,0 +1,33 @@
+
+<h1>helloworld_direct.py</h1>
+<div class="highlight"><pre><span></span><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">from</span> <span class="nn">proton</span> <span class="kn">import</span> <span class="n">Message</span>
+<span class="kn">from</span> <span class="nn">proton.handlers</span> <span class="kn">import</span> <span class="n">MessagingHandler</span>
+<span class="kn">from</span> <span class="nn">proton.reactor</span> <span class="kn">import</span> <span class="n">Container</span>
+
+<span class="k">class</span> <span class="nc">HelloWorld</span><span class="p">(</span><span class="n">MessagingHandler</span><span class="p">):</span>
+    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">url</span><span class="p">):</span>
+        <span class="nb">super</span><span class="p">(</span><span class="n">HelloWorld</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">__init__</span><span class="p">()</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">url</span> <span class="o">=</span> <span class="n">url</span>
+
+    <span class="k">def</span> <span class="nf">on_start</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">acceptor</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">container</span><span class="o">.</span><span class="n">listen</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">url</span><span class="p">)</span>
+        <span class="n">event</span><span class="o">.</span><span class="n">container</span><span class="o">.</span><span class="n">create_sender</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">url</span><span class="p">)</span>
+
+    <span class="k">def</span> <span class="nf">on_sendable</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="n">event</span><span class="o">.</span><span class="n">sender</span><span class="o">.</span><span class="n">send</span><span class="p">(</span><span class="n">Message</span><span class="p">(</span><span class="n">body</span><span class="o">=</span><span class="s2">&quot;Hello World!&quot;</span><span class="p">))</span>
+        <span class="n">event</span><span class="o">.</span><span class="n">sender</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
+
+    <span class="k">def</span> <span class="nf">on_message</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="k">print</span><span class="p">(</span><span class="n">event</span><span class="o">.</span><span class="n">message</span><span class="o">.</span><span class="n">body</span><span class="p">)</span>
+
+    <span class="k">def</span> <span class="nf">on_accepted</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="n">event</span><span class="o">.</span><span class="n">connection</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
+
+    <span class="k">def</span> <span class="nf">on_connection_closed</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">acceptor</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
+
+<span class="n">Container</span><span class="p">(</span><span class="n">HelloWorld</span><span class="p">(</span><span class="s2">&quot;localhost:8888/examples&quot;</span><span class="p">))</span><span class="o">.</span><span class="n">run</span><span class="p">()</span>
+</pre></div>
+
+<p><a href="helloworld_direct.py">Download this file</a></p>

http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/input/releases/qpid-proton-0.13.0/proton/python/examples/helloworld_direct_tornado.py
----------------------------------------------------------------------
diff --git a/input/releases/qpid-proton-0.13.0/proton/python/examples/helloworld_direct_tornado.py b/input/releases/qpid-proton-0.13.0/proton/python/examples/helloworld_direct_tornado.py
new file mode 100755
index 0000000..a3b017a
--- /dev/null
+++ b/input/releases/qpid-proton-0.13.0/proton/python/examples/helloworld_direct_tornado.py
@@ -0,0 +1,48 @@
+#!/usr/bin/env python
+#
+# 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.
+#
+
+from __future__ import print_function
+from proton import Message
+from proton.handlers import MessagingHandler
+from proton_tornado import Container
+
+class HelloWorld(MessagingHandler):
+    def __init__(self, url):
+        super(HelloWorld, self).__init__()
+        self.url = url
+
+    def on_start(self, event):
+        self.acceptor = event.container.listen(self.url)
+        event.container.create_sender(self.url)
+
+    def on_sendable(self, event):
+        event.sender.send(Message(body="Hello World!"))
+        event.sender.close()
+
+    def on_message(self, event):
+        print(event.message.body)
+
+    def on_accepted(self, event):
+        event.connection.close()
+
+    def on_connection_closed(self, event):
+        self.acceptor.close()
+
+Container(HelloWorld("localhost:8888/examples")).run()

http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/input/releases/qpid-proton-0.13.0/proton/python/examples/helloworld_direct_tornado.py.html.in
----------------------------------------------------------------------
diff --git a/input/releases/qpid-proton-0.13.0/proton/python/examples/helloworld_direct_tornado.py.html.in b/input/releases/qpid-proton-0.13.0/proton/python/examples/helloworld_direct_tornado.py.html.in
new file mode 100644
index 0000000..2bbed2c
--- /dev/null
+++ b/input/releases/qpid-proton-0.13.0/proton/python/examples/helloworld_direct_tornado.py.html.in
@@ -0,0 +1,33 @@
+
+<h1>helloworld_direct_tornado.py</h1>
+<div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">__future__</span> <span class="kn">import</span> <span class="n">print_function</span>
+<span class="kn">from</span> <span class="nn">proton</span> <span class="kn">import</span> <span class="n">Message</span>
+<span class="kn">from</span> <span class="nn">proton.handlers</span> <span class="kn">import</span> <span class="n">MessagingHandler</span>
+<span class="kn">from</span> <span class="nn">proton_tornado</span> <span class="kn">import</span> <span class="n">Container</span>
+
+<span class="k">class</span> <span class="nc">HelloWorld</span><span class="p">(</span><span class="n">MessagingHandler</span><span class="p">):</span>
+    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">url</span><span class="p">):</span>
+        <span class="nb">super</span><span class="p">(</span><span class="n">HelloWorld</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">__init__</span><span class="p">()</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">url</span> <span class="o">=</span> <span class="n">url</span>
+
+    <span class="k">def</span> <span class="nf">on_start</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">acceptor</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">container</span><span class="o">.</span><span class="n">listen</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">url</span><span class="p">)</span>
+        <span class="n">event</span><span class="o">.</span><span class="n">container</span><span class="o">.</span><span class="n">create_sender</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">url</span><span class="p">)</span>
+
+    <span class="k">def</span> <span class="nf">on_sendable</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="n">event</span><span class="o">.</span><span class="n">sender</span><span class="o">.</span><span class="n">send</span><span class="p">(</span><span class="n">Message</span><span class="p">(</span><span class="n">body</span><span class="o">=</span><span class="s2">&quot;Hello World!&quot;</span><span class="p">))</span>
+        <span class="n">event</span><span class="o">.</span><span class="n">sender</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
+
+    <span class="k">def</span> <span class="nf">on_message</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="k">print</span><span class="p">(</span><span class="n">event</span><span class="o">.</span><span class="n">message</span><span class="o">.</span><span class="n">body</span><span class="p">)</span>
+
+    <span class="k">def</span> <span class="nf">on_accepted</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="n">event</span><span class="o">.</span><span class="n">connection</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
+
+    <span class="k">def</span> <span class="nf">on_connection_closed</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">acceptor</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
+
+<span class="n">Container</span><span class="p">(</span><span class="n">HelloWorld</span><span class="p">(</span><span class="s2">&quot;localhost:8888/examples&quot;</span><span class="p">))</span><span class="o">.</span><span class="n">run</span><span class="p">()</span>
+</pre></div>
+
+<p><a href="helloworld_direct_tornado.py">Download this file</a></p>

http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/input/releases/qpid-proton-0.13.0/proton/python/examples/helloworld_tornado.py
----------------------------------------------------------------------
diff --git a/input/releases/qpid-proton-0.13.0/proton/python/examples/helloworld_tornado.py b/input/releases/qpid-proton-0.13.0/proton/python/examples/helloworld_tornado.py
new file mode 100755
index 0000000..0781bbb
--- /dev/null
+++ b/input/releases/qpid-proton-0.13.0/proton/python/examples/helloworld_tornado.py
@@ -0,0 +1,45 @@
+#!/usr/bin/env python
+#
+# 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.
+#
+
+from __future__ import print_function
+from proton import Message
+from proton.handlers import MessagingHandler
+from proton_tornado import Container
+
+class HelloWorld(MessagingHandler):
+    def __init__(self, server, address):
+        super(HelloWorld, self).__init__()
+        self.server = server
+        self.address = address
+
+    def on_start(self, event):
+        conn = event.container.connect(self.server)
+        event.container.create_receiver(conn, self.address)
+        event.container.create_sender(conn, self.address)
+
+    def on_sendable(self, event):
+        event.sender.send(Message(body="Hello World!"))
+        event.sender.close()
+
+    def on_message(self, event):
+        print(event.message.body)
+        event.connection.close()
+
+Container(HelloWorld("localhost:5672", "examples")).run()

http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/input/releases/qpid-proton-0.13.0/proton/python/examples/helloworld_tornado.py.html.in
----------------------------------------------------------------------
diff --git a/input/releases/qpid-proton-0.13.0/proton/python/examples/helloworld_tornado.py.html.in b/input/releases/qpid-proton-0.13.0/proton/python/examples/helloworld_tornado.py.html.in
new file mode 100644
index 0000000..16b2858
--- /dev/null
+++ b/input/releases/qpid-proton-0.13.0/proton/python/examples/helloworld_tornado.py.html.in
@@ -0,0 +1,30 @@
+
+<h1>helloworld_tornado.py</h1>
+<div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">__future__</span> <span class="kn">import</span> <span class="n">print_function</span>
+<span class="kn">from</span> <span class="nn">proton</span> <span class="kn">import</span> <span class="n">Message</span>
+<span class="kn">from</span> <span class="nn">proton.handlers</span> <span class="kn">import</span> <span class="n">MessagingHandler</span>
+<span class="kn">from</span> <span class="nn">proton_tornado</span> <span class="kn">import</span> <span class="n">Container</span>
+
+<span class="k">class</span> <span class="nc">HelloWorld</span><span class="p">(</span><span class="n">MessagingHandler</span><span class="p">):</span>
+    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">server</span><span class="p">,</span> <span class="n">address</span><span class="p">):</span>
+        <span class="nb">super</span><span class="p">(</span><span class="n">HelloWorld</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">__init__</span><span class="p">()</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">server</span> <span class="o">=</span> <span class="n">server</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">address</span> <span class="o">=</span> <span class="n">address</span>
+
+    <span class="k">def</span> <span class="nf">on_start</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="n">conn</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">container</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">server</span><span class="p">)</span>
+        <span class="n">event</span><span class="o">.</span><span class="n">container</span><span class="o">.</span><span class="n">create_receiver</span><span class="p">(</span><span class="n">conn</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">address</span><span class="p">)</span>
+        <span class="n">event</span><span class="o">.</span><span class="n">container</span><span class="o">.</span><span class="n">create_sender</span><span class="p">(</span><span class="n">conn</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">address</span><span class="p">)</span>
+
+    <span class="k">def</span> <span class="nf">on_sendable</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="n">event</span><span class="o">.</span><span class="n">sender</span><span class="o">.</span><span class="n">send</span><span class="p">(</span><span class="n">Message</span><span class="p">(</span><span class="n">body</span><span class="o">=</span><span class="s2">&quot;Hello World!&quot;</span><span class="p">))</span>
+        <span class="n">event</span><span class="o">.</span><span class="n">sender</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
+
+    <span class="k">def</span> <span class="nf">on_message</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="k">print</span><span class="p">(</span><span class="n">event</span><span class="o">.</span><span class="n">message</span><span class="o">.</span><span class="n">body</span><span class="p">)</span>
+        <span class="n">event</span><span class="o">.</span><span class="n">connection</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
+
+<span class="n">Container</span><span class="p">(</span><span class="n">HelloWorld</span><span class="p">(</span><span class="s2">&quot;localhost:5672&quot;</span><span class="p">,</span> <span class="s2">&quot;examples&quot;</span><span class="p">))</span><span class="o">.</span><span class="n">run</span><span class="p">()</span>
+</pre></div>
+
+<p><a href="helloworld_tornado.py">Download this file</a></p>

http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/input/releases/qpid-proton-0.13.0/proton/python/examples/index.md
----------------------------------------------------------------------
diff --git a/input/releases/qpid-proton-0.13.0/proton/python/examples/index.md b/input/releases/qpid-proton-0.13.0/proton/python/examples/index.md
new file mode 100644
index 0000000..9335605
--- /dev/null
+++ b/input/releases/qpid-proton-0.13.0/proton/python/examples/index.md
@@ -0,0 +1,41 @@
+
+# Proton Python Examples
+
+## Example files
+
+ - [abstract_server.py](abstract_server.py.html)
+ - [broker.py](broker.py.html)
+ - [client.py](client.py.html)
+ - [client_http.py](client_http.py.html)
+ - [db_common.py](db_common.py.html)
+ - [db_ctrl.py](db_ctrl.py.html)
+ - [db_recv.py](db_recv.py.html)
+ - [db_send.py](db_send.py.html)
+ - [direct_recv.py](direct_recv.py.html)
+ - [direct_send.py](direct_send.py.html)
+ - [helloworld.py](helloworld.py.html)
+ - [helloworld_blocking.py](helloworld_blocking.py.html)
+ - [helloworld_direct.py](helloworld_direct.py.html)
+ - [helloworld_direct_tornado.py](helloworld_direct_tornado.py.html)
+ - [helloworld_tornado.py](helloworld_tornado.py.html)
+ - [proton_server.py](proton_server.py.html)
+ - [proton_tornado.py](proton_tornado.py.html)
+ - [queue_browser.py](queue_browser.py.html)
+ - [recurring_timer.py](recurring_timer.py.html)
+ - [recurring_timer_tornado.py](recurring_timer_tornado.py.html)
+ - [selected_recv.py](selected_recv.py.html)
+ - [server.py](server.py.html)
+ - [server_direct.py](server_direct.py.html)
+ - [server_tx.py](server_tx.py.html)
+ - [simple_recv.py](simple_recv.py.html)
+ - [simple_send.py](simple_send.py.html)
+ - [sync_client.py](sync_client.py.html)
+ - [test_examples.py](test_examples.py.html)
+ - [tx_recv.py](tx_recv.py.html)
+ - [tx_recv_interactive.py](tx_recv_interactive.py.html)
+ - [tx_send.py](tx_send.py.html)
+
+## More information
+
+ - [README](https://github.com/apache/qpid-proton/tree/0.13.0/examples/python/README)
+ - [Source location](https://github.com/apache/qpid-proton/tree/0.13.0/examples/python)

http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/input/releases/qpid-proton-0.13.0/proton/python/examples/proton_server.py
----------------------------------------------------------------------
diff --git a/input/releases/qpid-proton-0.13.0/proton/python/examples/proton_server.py b/input/releases/qpid-proton-0.13.0/proton/python/examples/proton_server.py
new file mode 100755
index 0000000..9351f55
--- /dev/null
+++ b/input/releases/qpid-proton-0.13.0/proton/python/examples/proton_server.py
@@ -0,0 +1,51 @@
+from __future__ import print_function
+#
+# 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.
+#
+
+from proton import Message
+from proton.reactor import Container
+from proton.handlers import MessagingHandler
+
+class Server(MessagingHandler):
+    def __init__(self, host, address):
+        super(Server, self).__init__()
+        self.container = Container(self)
+        self.conn = self.container.connect(host)
+        self.receiver = self.container.create_receiver(self.conn, address)
+        self.sender = self.container.create_sender(self.conn, None)
+
+    def on_message(self, event):
+        self.on_request(event.message.body, event.message.reply_to)
+
+    def on_connection_close(self, endpoint, error):
+        if error: print("Closed due to %s" % error)
+        self.conn.close()
+
+    def run(self):
+        self.container.run()
+
+    def send(self, response, reply_to):
+        msg = Message(body=response)
+        if self.sender:
+            msg.address = reply_to
+        self.sender.send(msg)
+
+    def on_request(self, request, reply_to):
+        pass
+

http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/input/releases/qpid-proton-0.13.0/proton/python/examples/proton_server.py.html.in
----------------------------------------------------------------------
diff --git a/input/releases/qpid-proton-0.13.0/proton/python/examples/proton_server.py.html.in b/input/releases/qpid-proton-0.13.0/proton/python/examples/proton_server.py.html.in
new file mode 100644
index 0000000..5ac43a9
--- /dev/null
+++ b/input/releases/qpid-proton-0.13.0/proton/python/examples/proton_server.py.html.in
@@ -0,0 +1,55 @@
+
+<h1>proton_server.py</h1>
+<div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">__future__</span> <span class="kn">import</span> <span class="n">print_function</span>
+<span class="c1">#</span>
+<span class="c1"># Licensed to the Apache Software Foundation (ASF) under one</span>
+<span class="c1"># or more contributor license agreements.  See the NOTICE file</span>
+<span class="c1"># distributed with this work for additional information</span>
+<span class="c1"># regarding copyright ownership.  The ASF licenses this file</span>
+<span class="c1"># to you under the Apache License, Version 2.0 (the</span>
+<span class="c1"># &quot;License&quot;); you may not use this file except in compliance</span>
+<span class="c1"># with the License.  You may obtain a copy of the License at</span>
+<span class="c1">#</span>
+<span class="c1">#   http://www.apache.org/licenses/LICENSE-2.0</span>
+<span class="c1">#</span>
+<span class="c1"># Unless required by applicable law or agreed to in writing,</span>
+<span class="c1"># software distributed under the License is distributed on an</span>
+<span class="c1"># &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</span>
+<span class="c1"># KIND, either express or implied.  See the License for the</span>
+<span class="c1"># specific language governing permissions and limitations</span>
+<span class="c1"># under the License.</span>
+<span class="c1">#</span>
+
+<span class="kn">from</span> <span class="nn">proton</span> <span class="kn">import</span> <span class="n">Message</span>
+<span class="kn">from</span> <span class="nn">proton.reactor</span> <span class="kn">import</span> <span class="n">Container</span>
+<span class="kn">from</span> <span class="nn">proton.handlers</span> <span class="kn">import</span> <span class="n">MessagingHandler</span>
+
+<span class="k">class</span> <span class="nc">Server</span><span class="p">(</span><span class="n">MessagingHandler</span><span class="p">):</span>
+    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">host</span><span class="p">,</span> <span class="n">address</span><span class="p">):</span>
+        <span class="nb">super</span><span class="p">(</span><span class="n">Server</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">__init__</span><span class="p">()</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">container</span> <span class="o">=</span> <span class="n">Container</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">conn</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">container</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="n">host</span><span class="p">)</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">receiver</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">container</span><span class="o">.</span><span class="n">create_receiver</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">conn</span><span class="p">,</span> <span class="n">address</span><span class="p">)</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">sender</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">container</span><span class="o">.</span><span class="n">create_sender</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">conn</span><span class="p">,</span> <span class="bp">None</span><span class="p">)</span>
+
+    <span class="k">def</span> <span class="nf">on_message</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">on_request</span><span class="p">(</span><span class="n">event</span><span class="o">.</span><span class="n">message</span><span class="o">.</span><span class="n">body</span><span class="p">,</span> <span class="n">event</span><span class="o">.</span><span class="n">message</span><span class="o">.</span><span class="n">reply_to</span><span class="p">)</span>
+
+    <span class="k">def</span> <span class="nf">on_connection_close</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">endpoint</span><span class="p">,</span> <span class="n">error</span><span class="p">):</span>
+        <span class="k">if</span> <span class="n">error</span><span class="p">:</span> <span class="k">print</span><span class="p">(</span><span class="s2">&quot;Closed due to </span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="n">error</span><span class="p">)</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">conn</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
+
+    <span class="k">def</span> <span class="nf">run</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">container</span><span class="o">.</span><span class="n">run</span><span class="p">()</span>
+
+    <span class="k">def</span> <span class="nf">send</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">response</span><span class="p">,</span> <span class="n">reply_to</span><span class="p">):</span>
+        <span class="n">msg</span> <span class="o">=</span> <span class="n">Message</span><span class="p">(</span><span class="n">body</span><span class="o">=</span><span class="n">response</span><span class="p">)</span>
+        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">sender</span><span class="p">:</span>
+            <span class="n">msg</span><span class="o">.</span><span class="n">address</span> <span class="o">=</span> <span class="n">reply_to</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">sender</span><span class="o">.</span><span class="n">send</span><span class="p">(</span><span class="n">msg</span><span class="p">)</span>
+
+    <span class="k">def</span> <span class="nf">on_request</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">request</span><span class="p">,</span> <span class="n">reply_to</span><span class="p">):</span>
+        <span class="k">pass</span>
+</pre></div>
+
+<p><a href="proton_server.py">Download this file</a></p>

http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/input/releases/qpid-proton-0.13.0/proton/python/examples/proton_tornado.py
----------------------------------------------------------------------
diff --git a/input/releases/qpid-proton-0.13.0/proton/python/examples/proton_tornado.py b/input/releases/qpid-proton-0.13.0/proton/python/examples/proton_tornado.py
new file mode 100755
index 0000000..f946b43
--- /dev/null
+++ b/input/releases/qpid-proton-0.13.0/proton/python/examples/proton_tornado.py
@@ -0,0 +1,114 @@
+#!/usr/bin/env python
+#
+# 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.
+#
+
+import tornado.ioloop
+from proton.reactor import Container as BaseContainer
+from proton.handlers import IOHandler
+
+class TornadoLoopHandler:
+
+    def __init__(self, loop=None, handler_base=None):
+        self.loop = loop or tornado.ioloop.IOLoop.instance()
+        self.io = handler_base or IOHandler()
+        self.count = 0
+
+    def on_reactor_init(self, event):
+        self.reactor = event.reactor
+
+    def on_reactor_quiesced(self, event):
+        event.reactor.yield_()
+
+    def on_unhandled(self, name, event):
+        event.dispatch(self.io)
+
+    def _events(self, sel):
+        events = self.loop.ERROR
+        if sel.reading:
+            events |= self.loop.READ
+        if sel.writing:
+            events |= self.loop.WRITE
+        return events
+
+    def _schedule(self, sel):
+        if sel.deadline:
+            self.loop.add_timeout(sel.deadline, lambda: self.expired(sel))
+
+    def _expired(self, sel):
+        sel.expired()
+
+    def _process(self):
+        self.reactor.process()
+        if not self.reactor.quiesced:
+            self.loop.add_callback(self._process)
+
+    def _callback(self, sel, events):
+        if self.loop.READ & events:
+            sel.readable()
+        if self.loop.WRITE & events:
+            sel.writable()
+        self._process()
+
+    def on_selectable_init(self, event):
+        sel = event.context
+        if sel.fileno() >= 0:
+            self.loop.add_handler(sel.fileno(), lambda fd, events: self._callback(sel, events), self._events(sel))
+        self._schedule(sel)
+        self.count += 1
+
+    def on_selectable_updated(self, event):
+        sel = event.context
+        if sel.fileno() > 0:
+            self.loop.update_handler(sel.fileno(), self._events(sel))
+        self._schedule(sel)
+
+    def on_selectable_final(self, event):
+        sel = event.context
+        if sel.fileno() > 0:
+            self.loop.remove_handler(sel.fileno())
+        sel.release()
+        self.count -= 1
+        if self.count == 0:
+            self.loop.add_callback(self._stop)
+
+    def _stop(self):
+        self.reactor.stop()
+        self.loop.stop()
+
+class Container(object):
+    def __init__(self, *handlers, **kwargs):
+        self.tornado_loop = kwargs.get('loop', tornado.ioloop.IOLoop.instance())
+        kwargs['global_handler'] = TornadoLoopHandler(self.tornado_loop, kwargs.get('handler_base', None))
+        self.container = BaseContainer(*handlers, **kwargs)
+
+    def initialise(self):
+        self.container.start()
+        self.container.process()
+
+    def run(self):
+        self.initialise()
+        self.tornado_loop.start()
+
+    def touch(self):
+        self._process()
+
+    def _process(self):
+        self.container.process()
+        if not self.container.quiesced:
+            self.tornado_loop.add_callback(self._process)

http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/input/releases/qpid-proton-0.13.0/proton/python/examples/proton_tornado.py.html.in
----------------------------------------------------------------------
diff --git a/input/releases/qpid-proton-0.13.0/proton/python/examples/proton_tornado.py.html.in b/input/releases/qpid-proton-0.13.0/proton/python/examples/proton_tornado.py.html.in
new file mode 100644
index 0000000..8796b1b
--- /dev/null
+++ b/input/releases/qpid-proton-0.13.0/proton/python/examples/proton_tornado.py.html.in
@@ -0,0 +1,99 @@
+
+<h1>proton_tornado.py</h1>
+<div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">tornado.ioloop</span>
+<span class="kn">from</span> <span class="nn">proton.reactor</span> <span class="kn">import</span> <span class="n">Container</span> <span class="k">as</span> <span class="n">BaseContainer</span>
+<span class="kn">from</span> <span class="nn">proton.handlers</span> <span class="kn">import</span> <span class="n">IOHandler</span>
+
+<span class="k">class</span> <span class="nc">TornadoLoopHandler</span><span class="p">:</span>
+
+    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">loop</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">handler_base</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">loop</span> <span class="o">=</span> <span class="n">loop</span> <span class="ow">or</span> <span class="n">tornado</span><span class="o">.</span><span class="n">ioloop</span><span class="o">.</span><span class="n">IOLoop</span><span class="o">.</span><span class="n">instance</span><span class="p">()</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">io</span> <span class="o">=</span> <span class="n">handler_base</span> <span class="ow">or</span> <span class="n">IOHandler</span><span class="p">()</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">count</span> <span class="o">=</span> <span class="mi">0</span>
+
+    <span class="k">def</span> <span class="nf">on_reactor_init</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">reactor</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">reactor</span>
+
+    <span class="k">def</span> <span class="nf">on_reactor_quiesced</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="n">event</span><span class="o">.</span><span class="n">reactor</span><span class="o">.</span><span class="n">yield_</span><span class="p">()</span>
+
+    <span class="k">def</span> <span class="nf">on_unhandled</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="n">event</span><span class="o">.</span><span class="n">dispatch</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">io</span><span class="p">)</span>
+
+    <span class="k">def</span> <span class="nf">_events</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">sel</span><span class="p">):</span>
+        <span class="n">events</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">loop</span><span class="o">.</span><span class="n">ERROR</span>
+        <span class="k">if</span> <span class="n">sel</span><span class="o">.</span><span class="n">reading</span><span class="p">:</span>
+            <span class="n">events</span> <span class="o">|=</span> <span class="bp">self</span><span class="o">.</span><span class="n">loop</span><span class="o">.</span><span class="n">READ</span>
+        <span class="k">if</span> <span class="n">sel</span><span class="o">.</span><span class="n">writing</span><span class="p">:</span>
+            <span class="n">events</span> <span class="o">|=</span> <span class="bp">self</span><span class="o">.</span><span class="n">loop</span><span class="o">.</span><span class="n">WRITE</span>
+        <span class="k">return</span> <span class="n">events</span>
+
+    <span class="k">def</span> <span class="nf">_schedule</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">sel</span><span class="p">):</span>
+        <span class="k">if</span> <span class="n">sel</span><span class="o">.</span><span class="n">deadline</span><span class="p">:</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">loop</span><span class="o">.</span><span class="n">add_timeout</span><span class="p">(</span><span class="n">sel</span><span class="o">.</span><span class="n">deadline</span><span class="p">,</span> <span class="k">lambda</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expired</span><span class="p">(</span><span class="n">sel</span><span class="p">))</span>
+
+    <span class="k">def</span> <span class="nf">_expired</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">sel</span><span class="p">):</span>
+        <span class="n">sel</span><span class="o">.</span><span class="n">expired</span><span class="p">()</span>
+
+    <span class="k">def</span> <span class="nf">_process</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">reactor</span><span class="o">.</span><span class="n">process</span><span class="p">()</span>
+        <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">reactor</span><span class="o">.</span><span class="n">quiesced</span><span class="p">:</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">loop</span><span class="o">.</span><span class="n">add_callback</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_process</span><span class="p">)</span>
+
+    <span class="k">def</span> <span class="nf">_callback</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">sel</span><span class="p">,</span> <span class="n">events</span><span class="p">):</span>
+        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">loop</span><span class="o">.</span><span class="n">READ</span> <span class="o">&amp;</span> <span class="n">events</span><span class="p">:</span>
+            <span class="n">sel</span><span class="o">.</span><span class="n">readable</span><span class="p">()</span>
+        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">loop</span><span class="o">.</span><span class="n">WRITE</span> <span class="o">&amp;</span> <span class="n">events</span><span class="p">:</span>
+            <span class="n">sel</span><span class="o">.</span><span class="n">writable</span><span class="p">()</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">_process</span><span class="p">()</span>
+
+    <span class="k">def</span> <span class="nf">on_selectable_init</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="n">sel</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">context</span>
+        <span class="k">if</span> <span class="n">sel</span><span class="o">.</span><span class="n">fileno</span><span class="p">()</span> <span class="o">&gt;=</span> <span class="mi">0</span><span class="p">:</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">loop</span><span class="o">.</span><span class="n">add_handler</span><span class="p">(</span><span class="n">sel</span><span class="o">.</span><span class="n">fileno</span><span class="p">(),</span> <span class="k">lambda</span> <span class="n">fd</span><span class="p">,</span> <span class="n">events</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_callback</span><span class="p">(</span><span class="n">sel</span><span class="p">,</span> <span class="n">events</span><span class="p">),</span> <span class="bp">self</span><span class="o">.</span><span class="n">_events</span><span class="p">(</span><span class="n">sel</span><span class="p">))</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">_schedule</span><span class="p">(</span><span class="n">sel</span><span class="p">)</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">count</span> <span class="o">+=</span> <span class="mi">1</span>
+
+    <span class="k">def</span> <span class="nf">on_selectable_updated</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="n">sel</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">context</span>
+        <span class="k">if</span> <span class="n">sel</span><span class="o">.</span><span class="n">fileno</span><span class="p">()</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">loop</span><span class="o">.</span><span class="n">update_handler</span><span class="p">(</span><span class="n">sel</span><span class="o">.</span><span class="n">fileno</span><span class="p">(),</span> <span class="bp">self</span><span class="o">.</span><span class="n">_events</span><span class="p">(</span><span class="n">sel</span><span class="p">))</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">_schedule</span><span class="p">(</span><span class="n">sel</span><span class="p">)</span>
+
+    <span class="k">def</span> <span class="nf">on_selectable_final</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="n">sel</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">context</span>
+        <span class="k">if</span> <span class="n">sel</span><span class="o">.</span><span class="n">fileno</span><span class="p">()</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">loop</span><span class="o">.</span><span class="n">remove_handler</span><span class="p">(</span><span class="n">sel</span><span class="o">.</span><span class="n">fileno</span><span class="p">())</span>
+        <span class="n">sel</span><span class="o">.</span><span class="n">release</span><span class="p">()</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">count</span> <span class="o">-=</span> <span class="mi">1</span>
+        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">count</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">loop</span><span class="o">.</span><span class="n">add_callback</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_stop</span><span class="p">)</span>
+
+    <span class="k">def</span> <span class="nf">_stop</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">reactor</span><span class="o">.</span><span class="n">stop</span><span class="p">()</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">loop</span><span class="o">.</span><span class="n">stop</span><span class="p">()</span>
+
+<span class="k">class</span> <span class="nc">Container</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
+    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">handlers</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">tornado_loop</span> <span class="o">=</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">&#39;loop&#39;</span><span class="p">,</span> <span class="n">tornado</span><span class="o">.</span><span class="n">ioloop</span><span class="o">.</span><span class="n">IOLoop</span><span class="o">.</span><span class="n">instance</span><span class="p">())</span>
+        <span class="n">kwargs</span><span class="p">[</span><span class="s1">&#39;global_handler&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">TornadoLoopHandler</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">tornado_loop</span><span class="p">,</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">&#39;handler_base&#39;</span><span class="p">,</span> <span class="bp">None</span><span class="p">))</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">container</span> <span class="o">=</span> <span class="n">BaseContainer</span><span class="p">(</span><span class="o">*</span><span class="n">handlers</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
+
+    <span class="k">def</span> <span class="nf">initialise</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">container</span><span class="o">.</span><span class="n">start</span><span class="p">()</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">container</span><span class="o">.</span><span class="n">process</span><span class="p">()</span>
+
+    <span class="k">def</span> <span class="nf">run</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">initialise</span><span class="p">()</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">tornado_loop</span><span class="o">.</span><span class="n">start</span><span class="p">()</span>
+
+    <span class="k">def</span> <span class="nf">touch</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">_process</span><span class="p">()</span>
+
+    <span class="k">def</span> <span class="nf">_process</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">container</span><span class="o">.</span><span class="n">process</span><span class="p">()</span>
+        <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">container</span><span class="o">.</span><span class="n">quiesced</span><span class="p">:</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">tornado_loop</span><span class="o">.</span><span class="n">add_callback</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_process</span><span class="p">)</span>
+</pre></div>
+
+<p><a href="proton_tornado.py">Download this file</a></p>

http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/input/releases/qpid-proton-0.13.0/proton/python/examples/queue_browser.py
----------------------------------------------------------------------
diff --git a/input/releases/qpid-proton-0.13.0/proton/python/examples/queue_browser.py b/input/releases/qpid-proton-0.13.0/proton/python/examples/queue_browser.py
new file mode 100755
index 0000000..34d2377
--- /dev/null
+++ b/input/releases/qpid-proton-0.13.0/proton/python/examples/queue_browser.py
@@ -0,0 +1,43 @@
+#!/usr/bin/env python
+#
+# 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.
+#
+
+from __future__ import print_function
+from proton.reactor import Container, Copy
+from proton.handlers import MessagingHandler
+
+class Recv(MessagingHandler):
+    def __init__(self):
+        super(Recv, self).__init__()
+
+    def on_start(self, event):
+        conn = event.container.connect("localhost:5672")
+        event.container.create_receiver(conn, "examples", options=Copy())
+
+    def on_message(self, event):
+        print(event.message)
+        if event.receiver.queued == 0 and event.receiver.drained:
+            event.connection.close()
+
+try:
+    Container(Recv()).run()
+except KeyboardInterrupt: pass
+
+
+

http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/input/releases/qpid-proton-0.13.0/proton/python/examples/queue_browser.py.html.in
----------------------------------------------------------------------
diff --git a/input/releases/qpid-proton-0.13.0/proton/python/examples/queue_browser.py.html.in b/input/releases/qpid-proton-0.13.0/proton/python/examples/queue_browser.py.html.in
new file mode 100644
index 0000000..55e0cf0
--- /dev/null
+++ b/input/releases/qpid-proton-0.13.0/proton/python/examples/queue_browser.py.html.in
@@ -0,0 +1,25 @@
+
+<h1>queue_browser.py</h1>
+<div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">__future__</span> <span class="kn">import</span> <span class="n">print_function</span>
+<span class="kn">from</span> <span class="nn">proton.reactor</span> <span class="kn">import</span> <span class="n">Container</span><span class="p">,</span> <span class="n">Copy</span>
+<span class="kn">from</span> <span class="nn">proton.handlers</span> <span class="kn">import</span> <span class="n">MessagingHandler</span>
+
+<span class="k">class</span> <span class="nc">Recv</span><span class="p">(</span><span class="n">MessagingHandler</span><span class="p">):</span>
+    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="nb">super</span><span class="p">(</span><span class="n">Recv</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">__init__</span><span class="p">()</span>
+
+    <span class="k">def</span> <span class="nf">on_start</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="n">conn</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">container</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="s2">&quot;localhost:5672&quot;</span><span class="p">)</span>
+        <span class="n">event</span><span class="o">.</span><span class="n">container</span><span class="o">.</span><span class="n">create_receiver</span><span class="p">(</span><span class="n">conn</span><span class="p">,</span> <span class="s2">&quot;examples&quot;</span><span class="p">,</span> <span class="n">options</span><span class="o">=</span><span class="n">Copy</span><span class="p">())</span>
+
+    <span class="k">def</span> <span class="nf">on_message</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="k">print</span><span class="p">(</span><span class="n">event</span><span class="o">.</span><span class="n">message</span><span class="p">)</span>
+        <span class="k">if</span> <span class="n">event</span><span class="o">.</span><span class="n">receiver</span><span class="o">.</span><span class="n">queued</span> <span class="o">==</span> <span class="mi">0</span> <span class="ow">and</span> <span class="n">event</span><span class="o">.</span><span class="n">receiver</span><span class="o">.</span><span class="n">drained</span><span class="p">:</span>
+            <span class="n">event</span><span class="o">.</span><span class="n">connection</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
+
+<span class="k">try</span><span class="p">:</span>
+    <span class="n">Container</span><span class="p">(</span><span class="n">Recv</span><span class="p">())</span><span class="o">.</span><span class="n">run</span><span class="p">()</span>
+<span class="k">except</span> <span class="ne">KeyboardInterrupt</span><span class="p">:</span> <span class="k">pass</span>
+</pre></div>
+
+<p><a href="queue_browser.py">Download this file</a></p>

http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/input/releases/qpid-proton-0.13.0/proton/python/examples/recurring_timer.py
----------------------------------------------------------------------
diff --git a/input/releases/qpid-proton-0.13.0/proton/python/examples/recurring_timer.py b/input/releases/qpid-proton-0.13.0/proton/python/examples/recurring_timer.py
new file mode 100755
index 0000000..b59dbe1
--- /dev/null
+++ b/input/releases/qpid-proton-0.13.0/proton/python/examples/recurring_timer.py
@@ -0,0 +1,43 @@
+#!/usr/bin/env python
+#
+# 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.
+#
+
+from __future__ import print_function
+from proton.reactor import Container, Handler
+
+class Recurring(Handler):
+    def __init__(self, period):
+        self.period = period
+
+    def on_reactor_init(self, event):
+        self.container = event.reactor
+        self.container.schedule(self.period, self)
+
+    def on_timer_task(self, event):
+        print("Tick...")
+        self.container.schedule(self.period, self)
+
+try:
+    container = Container(Recurring(1.0))
+    container.run()
+except KeyboardInterrupt:
+    container.stop()
+    print()
+
+

http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/input/releases/qpid-proton-0.13.0/proton/python/examples/recurring_timer.py.html.in
----------------------------------------------------------------------
diff --git a/input/releases/qpid-proton-0.13.0/proton/python/examples/recurring_timer.py.html.in b/input/releases/qpid-proton-0.13.0/proton/python/examples/recurring_timer.py.html.in
new file mode 100644
index 0000000..49affaf
--- /dev/null
+++ b/input/releases/qpid-proton-0.13.0/proton/python/examples/recurring_timer.py.html.in
@@ -0,0 +1,26 @@
+
+<h1>recurring_timer.py</h1>
+<div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">__future__</span> <span class="kn">import</span> <span class="n">print_function</span>
+<span class="kn">from</span> <span class="nn">proton.reactor</span> <span class="kn">import</span> <span class="n">Container</span><span class="p">,</span> <span class="n">Handler</span>
+
+<span class="k">class</span> <span class="nc">Recurring</span><span class="p">(</span><span class="n">Handler</span><span class="p">):</span>
+    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">period</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">period</span> <span class="o">=</span> <span class="n">period</span>
+
+    <span class="k">def</span> <span class="nf">on_reactor_init</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">container</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">reactor</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">container</span><span class="o">.</span><span class="n">schedule</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">period</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span>
+
+    <span class="k">def</span> <span class="nf">on_timer_task</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="k">print</span><span class="p">(</span><span class="s2">&quot;Tick...&quot;</span><span class="p">)</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">container</span><span class="o">.</span><span class="n">schedule</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">period</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span>
+
+<span class="k">try</span><span class="p">:</span>
+    <span class="n">container</span> <span class="o">=</span> <span class="n">Container</span><span class="p">(</span><span class="n">Recurring</span><span class="p">(</span><span class="mf">1.0</span><span class="p">))</span>
+    <span class="n">container</span><span class="o">.</span><span class="n">run</span><span class="p">()</span>
+<span class="k">except</span> <span class="ne">KeyboardInterrupt</span><span class="p">:</span>
+    <span class="n">container</span><span class="o">.</span><span class="n">stop</span><span class="p">()</span>
+    <span class="k">print</span><span class="p">()</span>
+</pre></div>
+
+<p><a href="recurring_timer.py">Download this file</a></p>

http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/input/releases/qpid-proton-0.13.0/proton/python/examples/recurring_timer_tornado.py
----------------------------------------------------------------------
diff --git a/input/releases/qpid-proton-0.13.0/proton/python/examples/recurring_timer_tornado.py b/input/releases/qpid-proton-0.13.0/proton/python/examples/recurring_timer_tornado.py
new file mode 100755
index 0000000..07ebd26
--- /dev/null
+++ b/input/releases/qpid-proton-0.13.0/proton/python/examples/recurring_timer_tornado.py
@@ -0,0 +1,45 @@
+#!/usr/bin/env python
+#
+# 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.
+#
+
+from __future__ import print_function
+import time
+from proton.reactor import Handler
+from proton_tornado import TornadoLoop
+
+class Recurring(Handler):
+    def __init__(self, period):
+        self.period = period
+
+    def on_start(self, event):
+        self.container = event.container
+        self.container.schedule(time.time() + self.period, subject=self)
+
+    def on_timer(self, event):
+        print("Tick...")
+        self.container.schedule(time.time() + self.period, subject=self)
+
+try:
+    container = TornadoLoop(Recurring(1.0))
+    container.run()
+except KeyboardInterrupt:
+    container.stop()
+    print()
+
+

http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/input/releases/qpid-proton-0.13.0/proton/python/examples/recurring_timer_tornado.py.html.in
----------------------------------------------------------------------
diff --git a/input/releases/qpid-proton-0.13.0/proton/python/examples/recurring_timer_tornado.py.html.in b/input/releases/qpid-proton-0.13.0/proton/python/examples/recurring_timer_tornado.py.html.in
new file mode 100644
index 0000000..9666736
--- /dev/null
+++ b/input/releases/qpid-proton-0.13.0/proton/python/examples/recurring_timer_tornado.py.html.in
@@ -0,0 +1,28 @@
+
+<h1>recurring_timer_tornado.py</h1>
+<div class="highlight"><pre><span></span><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">time</span>
+<span class="kn">from</span> <span class="nn">proton.reactor</span> <span class="kn">import</span> <span class="n">Handler</span>
+<span class="kn">from</span> <span class="nn">proton_tornado</span> <span class="kn">import</span> <span class="n">TornadoLoop</span>
+
+<span class="k">class</span> <span class="nc">Recurring</span><span class="p">(</span><span class="n">Handler</span><span class="p">):</span>
+    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">period</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">period</span> <span class="o">=</span> <span class="n">period</span>
+
+    <span class="k">def</span> <span class="nf">on_start</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">container</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">container</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">container</span><span class="o">.</span><span class="n">schedule</span><span class="p">(</span><span class="n">time</span><span class="o">.</span><span class="n">time</span><span class="p">()</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">period</span><span class="p">,</span> <span class="n">subject</span><span class="o">=</span><span class="bp">self</span><span class="p">)</span>
+
+    <span class="k">def</span> <span class="nf">on_timer</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="k">print</span><span class="p">(</span><span class="s2">&quot;Tick...&quot;</span><span class="p">)</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">container</span><span class="o">.</span><span class="n">schedule</span><span class="p">(</span><span class="n">time</span><span class="o">.</span><span class="n">time</span><span class="p">()</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">period</span><span class="p">,</span> <span class="n">subject</span><span class="o">=</span><span class="bp">self</span><span class="p">)</span>
+
+<span class="k">try</span><span class="p">:</span>
+    <span class="n">container</span> <span class="o">=</span> <span class="n">TornadoLoop</span><span class="p">(</span><span class="n">Recurring</span><span class="p">(</span><span class="mf">1.0</span><span class="p">))</span>
+    <span class="n">container</span><span class="o">.</span><span class="n">run</span><span class="p">()</span>
+<span class="k">except</span> <span class="ne">KeyboardInterrupt</span><span class="p">:</span>
+    <span class="n">container</span><span class="o">.</span><span class="n">stop</span><span class="p">()</span>
+    <span class="k">print</span><span class="p">()</span>
+</pre></div>
+
+<p><a href="recurring_timer_tornado.py">Download this file</a></p>

http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/input/releases/qpid-proton-0.13.0/proton/python/examples/selected_recv.py
----------------------------------------------------------------------
diff --git a/input/releases/qpid-proton-0.13.0/proton/python/examples/selected_recv.py b/input/releases/qpid-proton-0.13.0/proton/python/examples/selected_recv.py
new file mode 100755
index 0000000..dc062d5
--- /dev/null
+++ b/input/releases/qpid-proton-0.13.0/proton/python/examples/selected_recv.py
@@ -0,0 +1,41 @@
+#!/usr/bin/env python
+#
+# 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.
+#
+
+from __future__ import print_function
+from proton.reactor import Container, Selector
+from proton.handlers import MessagingHandler
+
+class Recv(MessagingHandler):
+    def __init__(self):
+        super(Recv, self).__init__()
+
+    def on_start(self, event):
+        conn = event.container.connect("localhost:5672")
+        event.container.create_receiver(conn, "examples", options=Selector("colour = 'green'"))
+
+    def on_message(self, event):
+        print(event.message.body)
+
+try:
+    Container(Recv()).run()
+except KeyboardInterrupt: pass
+
+
+

http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/input/releases/qpid-proton-0.13.0/proton/python/examples/selected_recv.py.html.in
----------------------------------------------------------------------
diff --git a/input/releases/qpid-proton-0.13.0/proton/python/examples/selected_recv.py.html.in b/input/releases/qpid-proton-0.13.0/proton/python/examples/selected_recv.py.html.in
new file mode 100644
index 0000000..70572f4
--- /dev/null
+++ b/input/releases/qpid-proton-0.13.0/proton/python/examples/selected_recv.py.html.in
@@ -0,0 +1,23 @@
+
+<h1>selected_recv.py</h1>
+<div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">__future__</span> <span class="kn">import</span> <span class="n">print_function</span>
+<span class="kn">from</span> <span class="nn">proton.reactor</span> <span class="kn">import</span> <span class="n">Container</span><span class="p">,</span> <span class="n">Selector</span>
+<span class="kn">from</span> <span class="nn">proton.handlers</span> <span class="kn">import</span> <span class="n">MessagingHandler</span>
+
+<span class="k">class</span> <span class="nc">Recv</span><span class="p">(</span><span class="n">MessagingHandler</span><span class="p">):</span>
+    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="nb">super</span><span class="p">(</span><span class="n">Recv</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">__init__</span><span class="p">()</span>
+
+    <span class="k">def</span> <span class="nf">on_start</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="n">conn</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">container</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="s2">&quot;localhost:5672&quot;</span><span class="p">)</span>
+        <span class="n">event</span><span class="o">.</span><span class="n">container</span><span class="o">.</span><span class="n">create_receiver</span><span class="p">(</span><span class="n">conn</span><span class="p">,</span> <span class="s2">&quot;examples&quot;</span><span class="p">,</span> <span class="n">options</span><span class="o">=</span><span class="n">Selector</span><span class="p">(</span><span class="s2">&quot;colour = &#39;green&#39;&quot;</span><span class="p">))</span>
+
+    <span class="k">def</span> <span class="nf">on_message</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="k">print</span><span class="p">(</span><span class="n">event</span><span class="o">.</span><span class="n">message</span><span class="o">.</span><span class="n">body</span><span class="p">)</span>
+
+<span class="k">try</span><span class="p">:</span>
+    <span class="n">Container</span><span class="p">(</span><span class="n">Recv</span><span class="p">())</span><span class="o">.</span><span class="n">run</span><span class="p">()</span>
+<span class="k">except</span> <span class="ne">KeyboardInterrupt</span><span class="p">:</span> <span class="k">pass</span>
+</pre></div>
+
+<p><a href="selected_recv.py">Download this file</a></p>


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


[13/26] qpid-site git commit: QPID-7350: Examples that should have gone with the previous commit

Posted by jr...@apache.org.
http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/content/releases/qpid-proton-0.13.0/proton/python/examples/simple_recv.py.html
----------------------------------------------------------------------
diff --git a/content/releases/qpid-proton-0.13.0/proton/python/examples/simple_recv.py.html b/content/releases/qpid-proton-0.13.0/proton/python/examples/simple_recv.py.html
new file mode 100644
index 0000000..fd2fc03
--- /dev/null
+++ b/content/releases/qpid-proton-0.13.0/proton/python/examples/simple_recv.py.html
@@ -0,0 +1,185 @@
+<!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>simple_recv.py - 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/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;">
+        <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-proton-0.13.0/index.html">Qpid Proton 0.13.0</a></li><li><a href="/releases/qpid-proton-0.13.0/proton/python/examples/index.html">Proton Python Examples</a></li><li>simple_recv.py</li></ul>
+
+        <div id="-middle-content">
+          
+<h1>simple_recv.py</h1>
+<div class="highlight"><pre><span></span><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">optparse</span>
+<span class="kn">from</span> <span class="nn">proton.handlers</span> <span class="kn">import</span> <span class="n">MessagingHandler</span>
+<span class="kn">from</span> <span class="nn">proton.reactor</span> <span class="kn">import</span> <span class="n">Container</span>
+
+<span class="k">class</span> <span class="nc">Recv</span><span class="p">(</span><span class="n">MessagingHandler</span><span class="p">):</span>
+    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">url</span><span class="p">,</span> <span class="n">count</span><span class="p">):</span>
+        <span class="nb">super</span><span class="p">(</span><span class="n">Recv</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">__init__</span><span class="p">()</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">url</span> <span class="o">=</span> <span class="n">url</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">expected</span> <span class="o">=</span> <span class="n">count</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">received</span> <span class="o">=</span> <span class="mi">0</span>
+
+    <span class="k">def</span> <span class="nf">on_start</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="n">event</span><span class="o">.</span><span class="n">container</span><span class="o">.</span><span class="n">create_receiver</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">url</span><span class="p">)</span>
+
+    <span class="k">def</span> <span class="nf">on_message</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="k">if</span> <span class="n">event</span><span class="o">.</span><span class="n">message</span><span class="o">.</span><span class="n">id</span> <span class="ow">and</span> <span class="n">event</span><span class="o">.</span><span class="n">message</span><span class="o">.</span><span class="n">id</span> <span class="o">&lt;</span> <span class="bp">self</span><span class="o">.</span><span class="n">received</span><span class="p">:</span>
+            <span class="c1"># ignore duplicate message</span>
+            <span class="k">return</span>
+        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">expected</span> <span class="o">==</span> <span class="mi">0</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">received</span> <span class="o">&lt;</span> <span class="bp">self</span><span class="o">.</span><span class="n">expected</span><span class="p">:</span>
+            <span class="k">print</span><span class="p">(</span><span class="n">event</span><span class="o">.</span><span class="n">message</span><span class="o">.</span><span class="n">body</span><span class="p">)</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">received</span> <span class="o">+=</span> <span class="mi">1</span>
+            <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">received</span> <span class="o">==</span> <span class="bp">self</span><span class="o">.</span><span class="n">expected</span><span class="p">:</span>
+                <span class="n">event</span><span class="o">.</span><span class="n">receiver</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
+                <span class="n">event</span><span class="o">.</span><span class="n">connection</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
+
+<span class="n">parser</span> <span class="o">=</span> <span class="n">optparse</span><span class="o">.</span><span class="n">OptionParser</span><span class="p">(</span><span class="n">usage</span><span class="o">=</span><span class="s2">&quot;usage: %prog [options]&quot;</span><span class="p">)</span>
+<span class="n">parser</span><span class="o">.</span><span class="n">add_option</span><span class="p">(</span><span class="s2">&quot;-a&quot;</span><span class="p">,</span> <span class="s2">&quot;--address&quot;</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="s2">&quot;localhost:5672/examples&quot;</span><span class="p">,</span>
+                  <span class="n">help</span><span class="o">=</span><span class="s2">&quot;address from which messages are received (default </span><span class="si">%d</span><span class="s2">efault)&quot;</span><span class="p">)</span>
+<span class="n">parser</span><span class="o">.</span><span class="n">add_option</span><span class="p">(</span><span class="s2">&quot;-m&quot;</span><span class="p">,</span> <span class="s2">&quot;--messages&quot;</span><span class="p">,</span> <span class="nb">type</span><span class="o">=</span><span class="s2">&quot;int&quot;</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="mi">100</span><span class="p">,</span>
+                  <span class="n">help</span><span class="o">=</span><span class="s2">&quot;number of messages to receive; 0 receives indefinitely (default </span><span class="si">%d</span><span class="s2">efault)&quot;</span><span class="p">)</span>
+<span class="n">opts</span><span class="p">,</span> <span class="n">args</span> <span class="o">=</span> <span class="n">parser</span><span class="o">.</span><span class="n">parse_args</span><span class="p">()</span>
+
+<span class="k">try</span><span class="p">:</span>
+    <span class="n">Container</span><span class="p">(</span><span class="n">Recv</span><span class="p">(</span><span class="n">opts</span><span class="o">.</span><span class="n">address</span><span class="p">,</span> <span class="n">opts</span><span class="o">.</span><span class="n">messages</span><span class="p">))</span><span class="o">.</span><span class="n">run</span><span class="p">()</span>
+<span class="k">except</span> <span class="ne">KeyboardInterrupt</span><span class="p">:</span> <span class="k">pass</span>
+</pre></div>
+
+<p><a href="simple_recv.py">Download this file</a></p>
+
+
+          <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/75ca8b14/content/releases/qpid-proton-0.13.0/proton/python/examples/simple_send.py
----------------------------------------------------------------------
diff --git a/content/releases/qpid-proton-0.13.0/proton/python/examples/simple_send.py b/content/releases/qpid-proton-0.13.0/proton/python/examples/simple_send.py
new file mode 100755
index 0000000..7717a16
--- /dev/null
+++ b/content/releases/qpid-proton-0.13.0/proton/python/examples/simple_send.py
@@ -0,0 +1,63 @@
+#!/usr/bin/env python
+#
+# 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.
+#
+
+from __future__ import print_function, unicode_literals
+import optparse
+from proton import Message
+from proton.handlers import MessagingHandler
+from proton.reactor import Container
+
+class Send(MessagingHandler):
+    def __init__(self, url, messages):
+        super(Send, self).__init__()
+        self.url = url
+        self.sent = 0
+        self.confirmed = 0
+        self.total = messages
+
+    def on_start(self, event):
+        event.container.create_sender(self.url)
+
+    def on_sendable(self, event):
+        while event.sender.credit and self.sent < self.total:
+            msg = Message(id=(self.sent+1), body={'sequence':(self.sent+1)})
+            event.sender.send(msg)
+            self.sent += 1
+
+    def on_accepted(self, event):
+        self.confirmed += 1
+        if self.confirmed == self.total:
+            print("all messages confirmed")
+            event.connection.close()
+
+    def on_disconnected(self, event):
+        self.sent = self.confirmed
+
+parser = optparse.OptionParser(usage="usage: %prog [options]",
+                               description="Send messages to the supplied address.")
+parser.add_option("-a", "--address", default="localhost:5672/examples",
+                  help="address to which messages are sent (default %default)")
+parser.add_option("-m", "--messages", type="int", default=100,
+                  help="number of messages to send (default %default)")
+opts, args = parser.parse_args()
+
+try:
+    Container(Send(opts.address, opts.messages)).run()
+except KeyboardInterrupt: pass

http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/content/releases/qpid-proton-0.13.0/proton/python/examples/simple_send.py.html
----------------------------------------------------------------------
diff --git a/content/releases/qpid-proton-0.13.0/proton/python/examples/simple_send.py.html b/content/releases/qpid-proton-0.13.0/proton/python/examples/simple_send.py.html
new file mode 100644
index 0000000..9d5bd1c
--- /dev/null
+++ b/content/releases/qpid-proton-0.13.0/proton/python/examples/simple_send.py.html
@@ -0,0 +1,192 @@
+<!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>simple_send.py - 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/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;">
+        <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-proton-0.13.0/index.html">Qpid Proton 0.13.0</a></li><li><a href="/releases/qpid-proton-0.13.0/proton/python/examples/index.html">Proton Python Examples</a></li><li>simple_send.py</li></ul>
+
+        <div id="-middle-content">
+          
+<h1>simple_send.py</h1>
+<div class="highlight"><pre><span></span><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>
+<span class="kn">from</span> <span class="nn">proton</span> <span class="kn">import</span> <span class="n">Message</span>
+<span class="kn">from</span> <span class="nn">proton.handlers</span> <span class="kn">import</span> <span class="n">MessagingHandler</span>
+<span class="kn">from</span> <span class="nn">proton.reactor</span> <span class="kn">import</span> <span class="n">Container</span>
+
+<span class="k">class</span> <span class="nc">Send</span><span class="p">(</span><span class="n">MessagingHandler</span><span class="p">):</span>
+    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">url</span><span class="p">,</span> <span class="n">messages</span><span class="p">):</span>
+        <span class="nb">super</span><span class="p">(</span><span class="n">Send</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">__init__</span><span class="p">()</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">url</span> <span class="o">=</span> <span class="n">url</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">sent</span> <span class="o">=</span> <span class="mi">0</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">confirmed</span> <span class="o">=</span> <span class="mi">0</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">total</span> <span class="o">=</span> <span class="n">messages</span>
+
+    <span class="k">def</span> <span class="nf">on_start</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="n">event</span><span class="o">.</span><span class="n">container</span><span class="o">.</span><span class="n">create_sender</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">url</span><span class="p">)</span>
+
+    <span class="k">def</span> <span class="nf">on_sendable</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="k">while</span> <span class="n">event</span><span class="o">.</span><span class="n">sender</span><span class="o">.</span><span class="n">credit</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">sent</span> <span class="o">&lt;</span> <span class="bp">self</span><span class="o">.</span><span class="n">total</span><span class="p">:</span>
+            <span class="n">msg</span> <span class="o">=</span> <span class="n">Message</span><span class="p">(</span><span class="nb">id</span><span class="o">=</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">sent</span><span class="o">+</span><span class="mi">1</span><span class="p">),</span> <span class="n">body</span><span class="o">=</span><span class="p">{</span><span class="s1">&#39;sequence&#39;</span><span class="p">:(</span><span class="bp">self</span><span class="o">.</span><span class="n">sent</span><span class="o">+</span><span class="mi">1</span><span class="p">)})</span>
+            <span class="n">event</span><span class="o">.</span><span class="n">sender</span><span class="o">.</span><span class="n">send</span><span class="p">(</span><span class="n">msg</span><span class="p">)</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">sent</span> <span class="o">+=</span> <span class="mi">1</span>
+
+    <span class="k">def</span> <span class="nf">on_accepted</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">confirmed</span> <span class="o">+=</span> <span class="mi">1</span>
+        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">confirmed</span> <span class="o">==</span> <span class="bp">self</span><span class="o">.</span><span class="n">total</span><span class="p">:</span>
+            <span class="k">print</span><span class="p">(</span><span class="s2">&quot;all messages confirmed&quot;</span><span class="p">)</span>
+            <span class="n">event</span><span class="o">.</span><span class="n">connection</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
+
+    <span class="k">def</span> <span class="nf">on_disconnected</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">sent</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">confirmed</span>
+
+<span class="n">parser</span> <span class="o">=</span> <span class="n">optparse</span><span class="o">.</span><span class="n">OptionParser</span><span class="p">(</span><span class="n">usage</span><span class="o">=</span><span class="s2">&quot;usage: %prog [options]&quot;</span><span class="p">,</span>
+                               <span class="n">description</span><span class="o">=</span><span class="s2">&quot;Send messages to the supplied address.&quot;</span><span class="p">)</span>
+<span class="n">parser</span><span class="o">.</span><span class="n">add_option</span><span class="p">(</span><span class="s2">&quot;-a&quot;</span><span class="p">,</span> <span class="s2">&quot;--address&quot;</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="s2">&quot;localhost:5672/examples&quot;</span><span class="p">,</span>
+                  <span class="n">help</span><span class="o">=</span><span class="s2">&quot;address to which messages are sent (default </span><span class="si">%d</span><span class="s2">efault)&quot;</span><span class="p">)</span>
+<span class="n">parser</span><span class="o">.</span><span class="n">add_option</span><span class="p">(</span><span class="s2">&quot;-m&quot;</span><span class="p">,</span> <span class="s2">&quot;--messages&quot;</span><span class="p">,</span> <span class="nb">type</span><span class="o">=</span><span class="s2">&quot;int&quot;</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="mi">100</span><span class="p">,</span>
+                  <span class="n">help</span><span class="o">=</span><span class="s2">&quot;number of messages to send (default </span><span class="si">%d</span><span class="s2">efault)&quot;</span><span class="p">)</span>
+<span class="n">opts</span><span class="p">,</span> <span class="n">args</span> <span class="o">=</span> <span class="n">parser</span><span class="o">.</span><span class="n">parse_args</span><span class="p">()</span>
+
+<span class="k">try</span><span class="p">:</span>
+    <span class="n">Container</span><span class="p">(</span><span class="n">Send</span><span class="p">(</span><span class="n">opts</span><span class="o">.</span><span class="n">address</span><span class="p">,</span> <span class="n">opts</span><span class="o">.</span><span class="n">messages</span><span class="p">))</span><span class="o">.</span><span class="n">run</span><span class="p">()</span>
+<span class="k">except</span> <span class="ne">KeyboardInterrupt</span><span class="p">:</span> <span class="k">pass</span>
+</pre></div>
+
+<p><a href="simple_send.py">Download this file</a></p>
+
+
+          <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/75ca8b14/content/releases/qpid-proton-0.13.0/proton/python/examples/sync_client.py
----------------------------------------------------------------------
diff --git a/content/releases/qpid-proton-0.13.0/proton/python/examples/sync_client.py b/content/releases/qpid-proton-0.13.0/proton/python/examples/sync_client.py
new file mode 100755
index 0000000..95a5650
--- /dev/null
+++ b/content/releases/qpid-proton-0.13.0/proton/python/examples/sync_client.py
@@ -0,0 +1,55 @@
+#!/usr/bin/env python
+#
+# 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.
+#
+
+"""
+Demonstrates the client side of the synchronous request-response pattern
+(also known as RPC or Remote Procecure Call) using proton.
+
+"""
+from __future__ import print_function
+
+import optparse
+from proton import Message, Url, ConnectionException, Timeout
+from proton.utils import SyncRequestResponse, BlockingConnection
+from proton.handlers import IncomingMessageHandler
+import sys
+
+parser = optparse.OptionParser(usage="usage: %prog [options]",
+                               description="Send requests to the supplied address and print responses.")
+parser.add_option("-a", "--address", default="localhost:5672/examples",
+                  help="address to which messages are sent (default %default)")
+parser.add_option("-t", "--timeout", type="float", default=5,
+                  help="Give up after this time out (default %default)")
+opts, args = parser.parse_args()
+
+url = Url(opts.address)
+client = SyncRequestResponse(BlockingConnection(url, timeout=opts.timeout), url.path)
+
+try:
+    REQUESTS= ["Twas brillig, and the slithy toves",
+               "Did gire and gymble in the wabe.",
+               "All mimsy were the borogroves,",
+               "And the mome raths outgrabe."]
+    for request in REQUESTS:
+        response = client.call(Message(body=request))
+        print("%s => %s" % (request, response.body))
+finally:
+    client.connection.close()
+

http://git-wip-us.apache.org/repos/asf/qpid-site/blob/75ca8b14/content/releases/qpid-proton-0.13.0/proton/python/examples/sync_client.py.html
----------------------------------------------------------------------
diff --git a/content/releases/qpid-proton-0.13.0/proton/python/examples/sync_client.py.html b/content/releases/qpid-proton-0.13.0/proton/python/examples/sync_client.py.html
new file mode 100644
index 0000000..d8ff71c
--- /dev/null
+++ b/content/releases/qpid-proton-0.13.0/proton/python/examples/sync_client.py.html
@@ -0,0 +1,183 @@
+<!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>sync_client.py - 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/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;">
+        <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-proton-0.13.0/index.html">Qpid Proton 0.13.0</a></li><li><a href="/releases/qpid-proton-0.13.0/proton/python/examples/index.html">Proton Python Examples</a></li><li>sync_client.py</li></ul>
+
+        <div id="-middle-content">
+          
+<h1>sync_client.py</h1>
+<div class="highlight"><pre><span></span><span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">Demonstrates the client side of the synchronous request-response pattern</span>
+<span class="sd">(also known as RPC or Remote Procecure Call) using proton.</span>
+
+<span class="sd">&quot;&quot;&quot;</span>
+<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">optparse</span>
+<span class="kn">from</span> <span class="nn">proton</span> <span class="kn">import</span> <span class="n">Message</span><span class="p">,</span> <span class="n">Url</span><span class="p">,</span> <span class="n">ConnectionException</span><span class="p">,</span> <span class="n">Timeout</span>
+<span class="kn">from</span> <span class="nn">proton.utils</span> <span class="kn">import</span> <span class="n">SyncRequestResponse</span><span class="p">,</span> <span class="n">BlockingConnection</span>
+<span class="kn">from</span> <span class="nn">proton.handlers</span> <span class="kn">import</span> <span class="n">IncomingMessageHandler</span>
+<span class="kn">import</span> <span class="nn">sys</span>
+
+<span class="n">parser</span> <span class="o">=</span> <span class="n">optparse</span><span class="o">.</span><span class="n">OptionParser</span><span class="p">(</span><span class="n">usage</span><span class="o">=</span><span class="s2">&quot;usage: %prog [options]&quot;</span><span class="p">,</span>
+                               <span class="n">description</span><span class="o">=</span><span class="s2">&quot;Send requests to the supplied address and print responses.&quot;</span><span class="p">)</span>
+<span class="n">parser</span><span class="o">.</span><span class="n">add_option</span><span class="p">(</span><span class="s2">&quot;-a&quot;</span><span class="p">,</span> <span class="s2">&quot;--address&quot;</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="s2">&quot;localhost:5672/examples&quot;</span><span class="p">,</span>
+                  <span class="n">help</span><span class="o">=</span><span class="s2">&quot;address to which messages are sent (default </span><span class="si">%d</span><span class="s2">efault)&quot;</span><span class="p">)</span>
+<span class="n">parser</span><span class="o">.</span><span class="n">add_option</span><span class="p">(</span><span class="s2">&quot;-t&quot;</span><span class="p">,</span> <span class="s2">&quot;--timeout&quot;</span><span class="p">,</span> <span class="nb">type</span><span class="o">=</span><span class="s2">&quot;float&quot;</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="mi">5</span><span class="p">,</span>
+                  <span class="n">help</span><span class="o">=</span><span class="s2">&quot;Give up after this time out (default </span><span class="si">%d</span><span class="s2">efault)&quot;</span><span class="p">)</span>
+<span class="n">opts</span><span class="p">,</span> <span class="n">args</span> <span class="o">=</span> <span class="n">parser</span><span class="o">.</span><span class="n">parse_args</span><span class="p">()</span>
+
+<span class="n">url</span> <span class="o">=</span> <span class="n">Url</span><span class="p">(</span><span class="n">opts</span><span class="o">.</span><span class="n">address</span><span class="p">)</span>
+<span class="n">client</span> <span class="o">=</span> <span class="n">SyncRequestResponse</span><span class="p">(</span><span class="n">BlockingConnection</span><span class="p">(</span><span class="n">url</span><span class="p">,</span> <span class="n">timeout</span><span class="o">=</span><span class="n">opts</span><span class="o">.</span><span class="n">timeout</span><span class="p">),</span> <span class="n">url</span><span class="o">.</span><span class="n">path</span><span class="p">)</span>
+
+<span class="k">try</span><span class="p">:</span>
+    <span class="n">REQUESTS</span><span class="o">=</span> <span class="p">[</span><span class="s2">&quot;Twas brillig, and the slithy toves&quot;</span><span class="p">,</span>
+               <span class="s2">&quot;Did gire and gymble in the wabe.&quot;</span><span class="p">,</span>
+               <span class="s2">&quot;All mimsy were the borogroves,&quot;</span><span class="p">,</span>
+               <span class="s2">&quot;And the mome raths outgrabe.&quot;</span><span class="p">]</span>
+    <span class="k">for</span> <span class="n">request</span> <span class="ow">in</span> <span class="n">REQUESTS</span><span class="p">:</span>
+        <span class="n">response</span> <span class="o">=</span> <span class="n">client</span><span class="o">.</span><span class="n">call</span><span class="p">(</span><span class="n">Message</span><span class="p">(</span><span class="n">body</span><span class="o">=</span><span class="n">request</span><span class="p">))</span>
+        <span class="k">print</span><span class="p">(</span><span class="s2">&quot;</span><span class="si">%s</span><span class="s2"> =&gt; </span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="n">response</span><span class="o">.</span><span class="n">body</span><span class="p">))</span>
+<span class="k">finally</span><span class="p">:</span>
+    <span class="n">client</span><span class="o">.</span><span class="n">connection</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
+</pre></div>
+
+<p><a href="sync_client.py">Download this file</a></p>
+
+
+          <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/75ca8b14/content/releases/qpid-proton-0.13.0/proton/python/examples/test_examples.py
----------------------------------------------------------------------
diff --git a/content/releases/qpid-proton-0.13.0/proton/python/examples/test_examples.py b/content/releases/qpid-proton-0.13.0/proton/python/examples/test_examples.py
new file mode 100755
index 0000000..3d97b97
--- /dev/null
+++ b/content/releases/qpid-proton-0.13.0/proton/python/examples/test_examples.py
@@ -0,0 +1,151 @@
+#
+# 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.
+#
+
+import sys
+import subprocess
+import time
+import unittest
+
+if sys.version_info[0] == 2:
+    _unicode_prefix = 'u'
+else:
+    _unicode_prefix = ''
+
+
+class ExamplesTest(unittest.TestCase):
+    def test_helloworld(self, example="helloworld.py"):
+        p = subprocess.Popen([example], stderr=subprocess.STDOUT, stdout=subprocess.PIPE,
+                             universal_newlines=True)
+        p.wait()
+        output = [l.strip() for l in p.stdout]
+        self.assertEqual(output, ['Hello World!'])
+
+    def test_helloworld_direct(self):
+        self.test_helloworld('helloworld_direct.py')
+
+    def test_helloworld_blocking(self):
+        self.test_helloworld('helloworld_blocking.py')
+
+    def test_helloworld_tornado(self):
+        self.test_helloworld('helloworld_tornado.py')
+
+    def test_helloworld_direct_tornado(self):
+        self.test_helloworld('helloworld_direct_tornado.py')
+
+    def test_simple_send_recv(self, recv='simple_recv.py', send='simple_send.py'):
+        r = subprocess.Popen([recv], stderr=subprocess.STDOUT, stdout=subprocess.PIPE,
+                             universal_newlines=True)
+        s = subprocess.Popen([send], stderr=subprocess.STDOUT, stdout=subprocess.PIPE,
+                             universal_newlines=True)
+        s.wait()
+        r.wait()
+        actual = [l.strip() for l in r.stdout]
+        expected = ["{%s'sequence': %i}" % (_unicode_prefix, (i+1)) for i in range(100)]
+        self.assertEqual(actual, expected)
+
+    def test_client_server(self, client=['client.py'], server=['server.py'], sleep=0):
+        s = subprocess.Popen(server, stderr=subprocess.STDOUT, stdout=subprocess.PIPE,
+                             universal_newlines=True)
+        if sleep:
+            time.sleep(sleep)
+        c = subprocess.Popen(client, stderr=subprocess.STDOUT, stdout=subprocess.PIPE,
+                             universal_newlines=True)
+        c.wait()
+        s.terminate()
+        actual = [l.strip() for l in c.stdout]
+        inputs = ["Twas brillig, and the slithy toves",
+                    "Did gire and gymble in the wabe.",
+                    "All mimsy were the borogroves,",
+                    "And the mome raths outgrabe."]
+        expected = ["%s => %s" % (l, l.upper()) for l in inputs]
+        self.assertEqual(actual, expected)
+
+    def test_sync_client_server(self):
+        self.test_client_server(client=['sync_client.py'])
+
+    def test_client_server_tx(self):
+        self.test_client_server(server=['server_tx.py'])
+
+    def test_sync_client_server_tx(self):
+        self.test_client_server(client=['sync_client.py'], server=['server_tx.py'])
+
+    def test_client_server_direct(self):
+        self.test_client_server(client=['client.py', '-a', 'localhost:8888/examples'], server=['server_direct.py'], sleep=0.5)
+
+    def test_sync_client_server_direct(self):
+        self.test_client_server(client=['sync_client.py', '-a', 'localhost:8888/examples'], server=['server_direct.py'], sleep=0.5)
+
+    def test_db_send_recv(self):
+        self.maxDiff = None
+        # setup databases
+        subprocess.check_call(['db_ctrl.py', 'init', './src_db'])
+        subprocess.check_call(['db_ctrl.py', 'init', './dst_db'])
+        fill = subprocess.Popen(['db_ctrl.py', 'insert', './src_db'],
+                                stdin=subprocess.PIPE, stderr=subprocess.STDOUT, stdout=subprocess.PIPE,
+                                universal_newlines=True)
+        for i in range(100):
+            fill.stdin.write("Message-%i\n" % (i+1))
+        fill.stdin.close()
+        fill.wait()
+        # run send and recv
+        r = subprocess.Popen(['db_recv.py', '-m', '100'], stderr=subprocess.STDOUT, stdout=subprocess.PIPE,
+                             universal_newlines=True)
+        s = subprocess.Popen(['db_send.py', '-m', '100'], stderr=subprocess.STDOUT, stdout=subprocess.PIPE,
+                             universal_newlines=True)
+        s.wait()
+        r.wait()
+        # verify output of receive
+        actual = [l.strip() for l in r.stdout]
+        expected = ["inserted message %i" % (i+1) for i in range(100)]
+        self.assertEqual(actual, expected)
+        # verify state of databases
+        v = subprocess.Popen(['db_ctrl.py', 'list', './dst_db'], stderr=subprocess.STDOUT, stdout=subprocess.PIPE,
+                             universal_newlines=True)
+        v.wait()
+        expected = ["(%i, %s'Message-%i')" % ((i+1), _unicode_prefix, (i+1)) for i in range(100)]
+        actual = [l.strip() for l in v.stdout]
+        self.assertEqual(actual, expected)
+
+    def test_tx_send_tx_recv(self):
+        self.test_simple_send_recv(recv='tx_recv.py', send='tx_send.py')
+
+    def test_simple_send_direct_recv(self):
+        self.maxDiff = None
+        r = subprocess.Popen(['direct_recv.py', '-a', 'localhost:8888'], stderr=subprocess.STDOUT, stdout=subprocess.PIPE,
+                             universal_newlines=True)
+        time.sleep(0.5)
+        s = subprocess.Popen(['simple_send.py', '-a', 'localhost:8888'], stderr=subprocess.STDOUT, stdout=subprocess.PIPE,
+                             universal_newlines=True)
+        s.wait()
+        r.wait()
+        actual = [l.strip() for l in r.stdout]
+        expected = ["{%s'sequence': %i}" % (_unicode_prefix, (i+1)) for i in range(100)]
+        self.assertEqual(actual, expected)
+
+    def test_direct_send_simple_recv(self):
+        s = subprocess.Popen(['direct_send.py', '-a', 'localhost:8888'], stderr=subprocess.STDOUT, stdout=subprocess.PIPE,
+                             universal_newlines=True)
+        time.sleep(0.5)
+        r = subprocess.Popen(['simple_recv.py', '-a', 'localhost:8888'], stderr=subprocess.STDOUT, stdout=subprocess.PIPE,
+                             universal_newlines=True)
+        r.wait()
+        s.wait()
+        actual = [l.strip() for l in r.stdout]
+        expected = ["{%s'sequence': %i}" % (_unicode_prefix, (i+1)) for i in range(100)]
+        self.assertEqual(actual, expected)


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