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 2017/08/30 03:12:29 UTC

[10/51] [partial] qpid-site git commit: QPID-7903: Publish a snapshot of the Proton C docs

http://git-wip-us.apache.org/repos/asf/qpid-site/blob/36c59045/content/releases/qpid-proton-master/proton/c/api/receive_8c-example.html
----------------------------------------------------------------------
diff --git a/content/releases/qpid-proton-master/proton/c/api/receive_8c-example.html b/content/releases/qpid-proton-master/proton/c/api/receive_8c-example.html
index d071ae5..166f875 100755
--- a/content/releases/qpid-proton-master/proton/c/api/receive_8c-example.html
+++ b/content/releases/qpid-proton-master/proton/c/api/receive_8c-example.html
@@ -3,7 +3,8 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.11"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
 <title>Qpid Proton C API: receive.c</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
@@ -14,7 +15,6 @@
 <script type="text/javascript" src="navtree.js"></script>
 <script type="text/javascript">
   $(document).ready(initResizable);
-  $(window).load(resizeHeight);
 </script>
 <link href="search/search.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="search/searchdata.js"></script>
@@ -55,7 +55,7 @@
 </table>
 </div>
 <!-- end header part -->
-<!-- Generated by Doxygen 1.8.11 -->
+<!-- Generated by Doxygen 1.8.13 -->
 <script type="text/javascript">
 var searchBox = new SearchBox("searchBox", "search",false,'Search');
 </script>
@@ -93,15 +93,15 @@ $(document).ready(function(){initNavTree('receive_8c-example.html','');});
 <div class="title">receive.c</div>  </div>
 </div><!--header-->
 <div class="contents">
-<p>Subscribes to the 'example' node and prints the message bodies received.</p>
-<div class="fragment"><div class="line"><span class="comment">/*</span></div><div class="line"><span class="comment"> *</span></div><div class="line"><span class="comment"> * Licensed to the Apache Software Foundation (ASF) under one</span></div><div class="line"><span class="comment"> * or more contributor license agreements.  See the NOTICE file</span></div><div class="line"><span class="comment"> * distributed with this work for additional information</span></div><div class="line"><span class="comment"> * regarding copyright ownership.  The ASF licenses this file</span></div><div class="line"><span class="comment"> * to you under the Apache License, Version 2.0 (the</span></div><div class="line"><span class="comment"> * &quot;License&quot;); you may not use this file except in compliance</span></div><div class="line"><span class="comment"> * with the License.  You may obtain a copy of the License at</span></div><div class="line"><span class="comment"> *</span></div><div class="li
 ne"><span class="comment"> *   http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><span class="comment"> *</span></div><div class="line"><span class="comment"> * Unless required by applicable law or agreed to in writing,</span></div><div class="line"><span class="comment"> * software distributed under the License is distributed on an</span></div><div class="line"><span class="comment"> * &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</span></div><div class="line"><span class="comment"> * KIND, either express or implied.  See the License for the</span></div><div class="line"><span class="comment"> * specific language governing permissions and limitations</span></div><div class="line"><span class="comment"> * under the License.</span></div><div class="line"><span class="comment"> *</span></div><div class="line"><span class="comment"> */</span></div><div class="line"></div><div class="line"><span class="preprocessor">#include &lt;<a class="code" 
 href="connection_8h.html">proton/connection.h</a>&gt;</span></div><div class="line"><span class="preprocessor">#include &lt;<a class="code" href="connection__driver_8h.html">proton/connection_driver.h</a>&gt;</span></div><div class="line"><span class="preprocessor">#include &lt;<a class="code" href="delivery_8h.html">proton/delivery.h</a>&gt;</span></div><div class="line"><span class="preprocessor">#include &lt;<a class="code" href="proactor_8h.html">proton/proactor.h</a>&gt;</span></div><div class="line"><span class="preprocessor">#include &lt;<a class="code" href="link_8h.html">proton/link.h</a>&gt;</span></div><div class="line"><span class="preprocessor">#include &lt;<a class="code" href="message_8h.html">proton/message.h</a>&gt;</span></div><div class="line"><span class="preprocessor">#include &lt;<a class="code" href="session_8h.html">proton/session.h</a>&gt;</span></div><div class="line"><span class="preprocessor">#include &lt;<a class="code" href="transport_8h.html">proton/tr
 ansport.h</a>&gt;</span></div><div class="line"><span class="preprocessor">#include &lt;<a class="code" href="url_8h.html">proton/url.h</a>&gt;</span></div><div class="line"></div><div class="line"><span class="preprocessor">#include &lt;stdio.h&gt;</span></div><div class="line"><span class="preprocessor">#include &lt;stdlib.h&gt;</span></div><div class="line"><span class="preprocessor">#include &lt;string.h&gt;</span></div><div class="line"><span class="preprocessor">#include &lt;unistd.h&gt;</span></div><div class="line"></div><div class="line"><span class="keyword">typedef</span> <span class="keywordtype">char</span> str[1024];</div><div class="line"></div><div class="line"><span class="keyword">typedef</span> <span class="keyword">struct </span>app_data_t {</div><div class="line">  str address;</div><div class="line">  str container_id;</div><div class="line">  <a name="_a0"></a><a class="code" href="group__api__types.html#structpn__rwbytes__t">pn_rwbytes_t</a> message_buffer;</
 div><div class="line">  <span class="keywordtype">int</span> message_count;</div><div class="line">  <span class="keywordtype">int</span> received;</div><div class="line">  <a class="code" href="group__proactor.html#gabba42c7929dfceb9d296535bad0c93dc">pn_proactor_t</a> *proactor;</div><div class="line">  <span class="keywordtype">bool</span> finished;</div><div class="line">} app_data_t;</div><div class="line"></div><div class="line"><span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> BATCH = 100; <span class="comment">/* Batch size for unlimited receive */</span></div><div class="line"></div><div class="line"><span class="keyword">static</span> <span class="keywordtype">int</span> exit_code = 0;</div><div class="line"></div><div class="line"><span class="keyword">static</span> <span class="keywordtype">void</span> check_condition(<a class="code" href="group__event.html#ga87f3028b4888632bbd56fb71ac737ae8">pn_event_t</a> *e, <a 
 class="code" href="group__condition.html#ga11eb7db7d2c205169fe3d47c996a95a5">pn_condition_t</a> *cond) {</div><div class="line">  <span class="keywordflow">if</span> (<a name="a1"></a><a class="code" href="group__condition.html#ga112611a7a4087e050c476a430db2cfb9">pn_condition_is_set</a>(cond)) {</div><div class="line">    exit_code = 1;</div><div class="line">    fprintf(stderr, <span class="stringliteral">&quot;%s: %s: %s\n&quot;</span>, <a name="a2"></a><a class="code" href="group__event.html#ga3a85c046c11ce692c23b9566b022d54b">pn_event_type_name</a>(<a name="a3"></a><a class="code" href="group__event.html#gacaea54ca51885933b4987c131a3d1b0d">pn_event_type</a>(e)),</div><div class="line">            <a name="a4"></a><a class="code" href="group__condition.html#ga05b0d374d90f11d9ebbf818662569689">pn_condition_get_name</a>(cond), <a name="a5"></a><a class="code" href="group__condition.html#gaabebb65bfcf47b6f7d83ab6fb0153bb8">pn_condition_get_description</a>(cond));</div><div class="li
 ne">  }</div><div class="line">}</div><div class="line"></div><div class="line"><span class="preprocessor">#define MAX_SIZE 1024</span></div><div class="line"></div><div class="line"><span class="keyword">static</span> <span class="keywordtype">void</span> decode_message(<a class="code" href="group__delivery.html#gacdfce854066c0a4ff4db9f9a0478f340">pn_delivery_t</a> *dlv) {</div><div class="line">  <span class="keyword">static</span> <span class="keywordtype">char</span> buffer[MAX_SIZE];</div><div class="line">  ssize_t len;</div><div class="line">  <span class="comment">// try to decode the message body</span></div><div class="line">  <span class="keywordflow">if</span> (<a name="a6"></a><a class="code" href="group__delivery.html#ga17523835dbc8d1906bd71df69d09cc40">pn_delivery_pending</a>(dlv) &lt; MAX_SIZE) {</div><div class="line">    <span class="comment">// read in the raw data</span></div><div class="line">    len = <a name="a7"></a><a class="code" href="group__link.html#ga06
 c97ce7396973dca0d311567f25f95a">pn_link_recv</a>(<a name="a8"></a><a class="code" href="group__delivery.html#gad3dd82fe9a649d70d4f3430c34699638">pn_delivery_link</a>(dlv), buffer, MAX_SIZE);</div><div class="line">    <span class="keywordflow">if</span> (len &gt; 0) {</div><div class="line">      <span class="comment">// decode it into a proton message</span></div><div class="line">      <a class="code" href="group__message.html#gad9259fa9271e8844c8e05a7e8978e3b2">pn_message_t</a> *m = <a name="a9"></a><a class="code" href="group__message.html#gaaf98d84b9ddc1c6537dddd4c9c5b979e">pn_message</a>();</div><div class="line">      <span class="keywordflow">if</span> (<a name="a10"></a><a class="code" href="group__error.html#gac73fbd2363c5f562f85dde459e631394">PN_OK</a> == <a name="a11"></a><a class="code" href="group__message.html#gab0bae90838f4661b0c82c15f25e1e988">pn_message_decode</a>(m, buffer, len)) {</div><div class="line">        pn_string_t *s = pn_string(NULL);</div><div class="l
 ine">        pn_inspect(<a name="a12"></a><a class="code" href="group__message.html#ga145c06edbcccfbe97136bfb5cb2b22b1">pn_message_body</a>(m), s);</div><div class="line">        printf(<span class="stringliteral">&quot;%s\n&quot;</span>, pn_string_get(s));</div><div class="line">        pn_free(s);</div><div class="line">      }</div><div class="line">      <a name="a13"></a><a class="code" href="group__message.html#ga69aadbc3a80f1fa16962774e711392f8">pn_message_free</a>(m);</div><div class="line">    }</div><div class="line">  }</div><div class="line">}</div><div class="line"></div><div class="line"><span class="keyword">static</span> <span class="keywordtype">void</span> handle(app_data_t* app, <a class="code" href="group__event.html#ga87f3028b4888632bbd56fb71ac737ae8">pn_event_t</a>* event) {</div><div class="line">  <span class="keywordflow">switch</span> (<a class="code" href="group__event.html#gacaea54ca51885933b4987c131a3d1b0d">pn_event_type</a>(event)) {</div><div class="li
 ne"></div><div class="line">   <span class="keywordflow">case</span> <a name="a14"></a><a class="code" href="group__event.html#gga4876e2eed24a4d4e4c52b99842103cdaa182e571a0310028514bce66a41063a6e">PN_CONNECTION_INIT</a>: {</div><div class="line">     <a class="code" href="group__connection.html#ga886351d81ff3a977a284a206526c5aff">pn_connection_t</a>* c = <a name="a15"></a><a class="code" href="group__event.html#ga4f2c6a0fdf86a43e7e9874fcd2ccaf52">pn_event_connection</a>(event);</div><div class="line">     <a name="a16"></a><a class="code" href="group__connection.html#gac4a34e0b1fc5665b26ae47a80a422a1a">pn_connection_set_container</a>(c, app-&gt;container_id);</div><div class="line">     <a name="a17"></a><a class="code" href="group__connection.html#ga4c0a2d40bb95202477ccc5aaa7456670">pn_connection_open</a>(c);</div><div class="line">     <a class="code" href="group__session.html#ga38ccb93b8f5c2892adafce5d5f0fbcd9">pn_session_t</a>* s = <a name="a18"></a><a class="code" href="group__
 session.html#ga1feff407b8fe308a14f283d193246f3c">pn_session</a>(c);</div><div class="line">     <a name="a19"></a><a class="code" href="group__session.html#ga2b345eada2c15249caaefaa894d1aae3">pn_session_open</a>(s);</div><div class="line">     <a class="code" href="group__link.html#ga89dad3aa7934329a7ff467c636687bc0">pn_link_t</a>* l = <a name="a20"></a><a class="code" href="group__link.html#ga5e314b3e07b48ebcffbac63f265fa69f">pn_receiver</a>(s, <span class="stringliteral">&quot;my_receiver&quot;</span>);</div><div class="line">     <a name="a21"></a><a class="code" href="group__terminus.html#ga0603db45f03fcef0ef18f4f89ebf3de1">pn_terminus_set_address</a>(<a name="a22"></a><a class="code" href="group__link.html#ga2c8985a9d44a813ab1739a91ae3708a3">pn_link_source</a>(l), app-&gt;address);</div><div class="line">     <a name="a23"></a><a class="code" href="group__link.html#gaabaca3f5d03970a122240eebc588add6">pn_link_open</a>(l);</div><div class="line">     <span class="comment">/* cann
 ot receive without granting credit: */</span></div><div class="line">     <a name="a24"></a><a class="code" href="group__link.html#gafec44cf1c79ec03f3ac009e1879e71a9">pn_link_flow</a>(l, app-&gt;message_count ? app-&gt;message_count : BATCH);</div><div class="line">   } <span class="keywordflow">break</span>;</div><div class="line"></div><div class="line">   <span class="keywordflow">case</span> <a name="a25"></a><a class="code" href="group__event.html#gga4876e2eed24a4d4e4c52b99842103cdaa70bbfc163d85732b5652dc70fb3330fe">PN_DELIVERY</a>: {</div><div class="line">     <span class="comment">/* A message has been received */</span></div><div class="line">     <a class="code" href="group__link.html#ga89dad3aa7934329a7ff467c636687bc0">pn_link_t</a> *link = NULL;</div><div class="line">     <a class="code" href="group__delivery.html#gacdfce854066c0a4ff4db9f9a0478f340">pn_delivery_t</a> *dlv = <a name="a26"></a><a class="code" href="group__event.html#ga10fa6f53bdabe0851ebb2d8a0bf6a52c">pn_
 event_delivery</a>(event);</div><div class="line">     <span class="keywordflow">if</span> (<a name="a27"></a><a class="code" href="group__delivery.html#ga13364206124b653b90f5ee3ddae9ff35">pn_delivery_readable</a>(dlv) &amp;&amp; !<a name="a28"></a><a class="code" href="group__delivery.html#ga23c7b3c678228ccb21378e7c8ec9a72d">pn_delivery_partial</a>(dlv)) {</div><div class="line">       link = <a class="code" href="group__delivery.html#gad3dd82fe9a649d70d4f3430c34699638">pn_delivery_link</a>(dlv);</div><div class="line">       decode_message(dlv);</div><div class="line">       <span class="comment">/* Accept the delivery */</span></div><div class="line">       <a name="a29"></a><a class="code" href="group__delivery.html#ga570c54003c2ba18b84405737925e5176">pn_delivery_update</a>(dlv, <a name="a30"></a><a class="code" href="group__delivery.html#gac64952b813a707586c6b3898e09552e4">PN_ACCEPTED</a>);</div><div class="line">       <span class="comment">/* done with the delivery, move to t
 he next and free it */</span></div><div class="line">       <a name="a31"></a><a class="code" href="group__link.html#ga93824a3859c37463e44458cd2f63d31f">pn_link_advance</a>(link);</div><div class="line">       <a name="a32"></a><a class="code" href="group__delivery.html#ga98c275fd7158e8b9d7d48d70503d68df">pn_delivery_settle</a>(dlv);  <span class="comment">/* dlv is now freed */</span></div><div class="line"></div><div class="line">       <span class="keywordflow">if</span> (app-&gt;message_count == 0) {</div><div class="line">         <span class="comment">/* receive forever - see if more credit is needed */</span></div><div class="line">         <span class="keywordflow">if</span> (<a name="a33"></a><a class="code" href="group__link.html#ga55428637f3b8c446efd5fea3f26c932d">pn_link_credit</a>(link) &lt; BATCH/2) {</div><div class="line">           <span class="comment">/* Grant enough credit to bring it up to BATCH: */</span></div><div class="line">           <a class="code" href="
 group__link.html#gafec44cf1c79ec03f3ac009e1879e71a9">pn_link_flow</a>(link, BATCH - <a class="code" href="group__link.html#ga55428637f3b8c446efd5fea3f26c932d">pn_link_credit</a>(link));</div><div class="line">         }</div><div class="line">       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (++app-&gt;received &gt;= app-&gt;message_count) {</div><div class="line">         <span class="comment">/* done receiving, close the endpoints */</span></div><div class="line">         printf(<span class="stringliteral">&quot;%d messages received\n&quot;</span>, app-&gt;received);</div><div class="line">         <a class="code" href="group__session.html#ga38ccb93b8f5c2892adafce5d5f0fbcd9">pn_session_t</a> *ssn = <a name="a34"></a><a class="code" href="group__link.html#gac63e43305fb1a5e3b14399a9ddc8f24d">pn_link_session</a>(link);</div><div class="line">         <a name="a35"></a><a class="code" href="group__link.html#ga4851693eb6a16fd9ab61e2df6f00770d">pn_link_c
 lose</a>(link);</div><div class="line">         <a name="a36"></a><a class="code" href="group__session.html#ga12e5c4e71b0df4087d16ccc8b63b42b5">pn_session_close</a>(ssn);</div><div class="line">         <a name="a37"></a><a class="code" href="group__connection.html#gac25afdf810ad188b2cb3bf31a7482ca0">pn_connection_close</a>(<a name="a38"></a><a class="code" href="group__session.html#gaa45a8aa758334528a86cb7914ebe8545">pn_session_connection</a>(ssn));</div><div class="line">       }</div><div class="line">     }</div><div class="line">   } <span class="keywordflow">break</span>;</div><div class="line"></div><div class="line">   <span class="keywordflow">case</span> <a name="a39"></a><a class="code" href="group__event.html#gga4876e2eed24a4d4e4c52b99842103cdaa7c7278de5bcbf3b42b3e692ca21f6c5a">PN_TRANSPORT_ERROR</a>:</div><div class="line">    check_condition(event, <a name="a40"></a><a class="code" href="group__transport.html#gac458d9fdb684f9501e89b96fc51f5c34">pn_transport_condition</
 a>(<a name="a41"></a><a class="code" href="group__event.html#ga14525ae84870388141898bbf57f2b151">pn_event_transport</a>(event)));</div><div class="line">    <span class="keywordflow">break</span>;</div><div class="line"></div><div class="line">   <span class="keywordflow">case</span> <a name="a42"></a><a class="code" href="group__event.html#gga4876e2eed24a4d4e4c52b99842103cdaa1252529cf9f03d214c9b4fea5cf11b2f">PN_CONNECTION_REMOTE_CLOSE</a>:</div><div class="line">    check_condition(event, <a name="a43"></a><a class="code" href="group__connection.html#ga72a362389b99d8e891bf2e4fb4290754">pn_connection_remote_condition</a>(<a class="code" href="group__event.html#ga4f2c6a0fdf86a43e7e9874fcd2ccaf52">pn_event_connection</a>(event)));</div><div class="line">    <a class="code" href="group__connection.html#gac25afdf810ad188b2cb3bf31a7482ca0">pn_connection_close</a>(<a class="code" href="group__event.html#ga4f2c6a0fdf86a43e7e9874fcd2ccaf52">pn_event_connection</a>(event));</div><div class="
 line">    <span class="keywordflow">break</span>;</div><div class="line"></div><div class="line">   <span class="keywordflow">case</span> <a name="a44"></a><a class="code" href="group__event.html#gga4876e2eed24a4d4e4c52b99842103cdaa3410075b825c59b8f4efdcddf5a5b135">PN_SESSION_REMOTE_CLOSE</a>:</div><div class="line">    check_condition(event, <a name="a45"></a><a class="code" href="group__session.html#gae21b3fda1567bad1f8a8fe162ffaeece">pn_session_remote_condition</a>(<a name="a46"></a><a class="code" href="group__event.html#gaf4af0bfbe0e0a8e432f0e803df14ecb5">pn_event_session</a>(event)));</div><div class="line">    <a class="code" href="group__connection.html#gac25afdf810ad188b2cb3bf31a7482ca0">pn_connection_close</a>(<a class="code" href="group__event.html#ga4f2c6a0fdf86a43e7e9874fcd2ccaf52">pn_event_connection</a>(event));</div><div class="line">    <span class="keywordflow">break</span>;</div><div class="line"></div><div class="line">   <span class="keywordflow">case</span> <a 
 name="a47"></a><a class="code" href="group__event.html#gga4876e2eed24a4d4e4c52b99842103cdaa1153f0108be071c31210dd1cd3e40a1f">PN_LINK_REMOTE_CLOSE</a>:</div><div class="line">   <span class="keywordflow">case</span> <a name="a48"></a><a class="code" href="group__event.html#gga4876e2eed24a4d4e4c52b99842103cdaa5a84b68a2bd5ca705187381a785121d2">PN_LINK_REMOTE_DETACH</a>:</div><div class="line">    check_condition(event, <a name="a49"></a><a class="code" href="group__link.html#ga97dc5133125c9b7e4afbb1b76e6efe7b">pn_link_remote_condition</a>(<a name="a50"></a><a class="code" href="group__event.html#ga75f230ef55f03a1f943df79279f8d111">pn_event_link</a>(event)));</div><div class="line">    <a class="code" href="group__connection.html#gac25afdf810ad188b2cb3bf31a7482ca0">pn_connection_close</a>(<a class="code" href="group__event.html#ga4f2c6a0fdf86a43e7e9874fcd2ccaf52">pn_event_connection</a>(event));</div><div class="line">    <span class="keywordflow">break</span>;</div><div class="line"></
 div><div class="line">   <span class="keywordflow">case</span> <a name="a51"></a><a class="code" href="group__event.html#gga4876e2eed24a4d4e4c52b99842103cdaa894e93f167ef39e28a07c9cdf6b1181b">PN_PROACTOR_INACTIVE</a>:</div><div class="line">    app-&gt;finished = <span class="keyword">true</span>;</div><div class="line">    <span class="keywordflow">break</span>;</div><div class="line"></div><div class="line">   <span class="keywordflow">default</span>: <span class="keywordflow">break</span>;</div><div class="line">  }</div><div class="line">}</div><div class="line"></div><div class="line"><span class="keyword">static</span> <span class="keywordtype">void</span> usage(<span class="keyword">const</span> <span class="keywordtype">char</span> *arg0) {</div><div class="line">  fprintf(stderr, <span class="stringliteral">&quot;Usage: %s [-a url] [-m message-count]\n&quot;</span>, arg0);</div><div class="line">  exit(1);</div><div class="line">}</div><div class="line"></div><div class="lin
 e"><span class="keywordtype">int</span> main(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span> **argv) {</div><div class="line">  <span class="comment">/* Default values for application and connection. */</span></div><div class="line">  app_data_t app = {{0}};</div><div class="line">  app.message_count = 100;</div><div class="line">  <span class="keyword">const</span> <span class="keywordtype">char</span>* urlstr = NULL;</div><div class="line"></div><div class="line">  <span class="keywordtype">int</span> opt;</div><div class="line">  <span class="keywordflow">while</span>((opt = getopt(argc, argv, <span class="stringliteral">&quot;a:m:&quot;</span>)) != -1) {</div><div class="line">    <span class="keywordflow">switch</span>(opt) {</div><div class="line">     <span class="keywordflow">case</span> <span class="charliteral">&#39;a&#39;</span>: urlstr = optarg; <span class="keywordflow">break</span>;</div><div class="line">     <span class="keywordflow">
 case</span> <span class="charliteral">&#39;m&#39;</span>: app.message_count = atoi(optarg); <span class="keywordflow">break</span>;</div><div class="line">     <span class="keywordflow">default</span>: usage(argv[0]); <span class="keywordflow">break</span>;</div><div class="line">    }</div><div class="line">  }</div><div class="line">  <span class="keywordflow">if</span> (optind &lt; argc)</div><div class="line">    usage(argv[0]);</div><div class="line"></div><div class="line">  snprintf(app.container_id, <span class="keyword">sizeof</span>(app.container_id), <span class="stringliteral">&quot;%s:%d&quot;</span>, argv[0], getpid());</div><div class="line"></div><div class="line">  <span class="comment">/* Parse the URL or use default values */</span></div><div class="line">  <a class="code" href="group__url.html#gafbe4340c29b1abd7394767456ad3b8ea">pn_url_t</a> *url = urlstr ? <a name="a52"></a><a class="code" href="group__url.html#gaaa9f2f29b90525fbf73739cae8b84776">pn_url_parse</a
 >(urlstr) : NULL;</div><div class="line">  <span class="keyword">const</span> <span class="keywordtype">char</span> *host = url ? pn_url_get_host(url) : NULL;</div><div class="line">  <span class="keyword">const</span> <span class="keywordtype">char</span> *port = url ? pn_url_get_port(url) : <span class="stringliteral">&quot;amqp&quot;</span>;</div><div class="line">  strncpy(app.address, (url &amp;&amp; pn_url_get_path(url)) ? pn_url_get_path(url) : <span class="stringliteral">&quot;example&quot;</span>, <span class="keyword">sizeof</span>(app.address));</div><div class="line"></div><div class="line">  <span class="comment">/* Create the proactor and connect */</span></div><div class="line">  app.proactor = <a name="a53"></a><a class="code" href="group__proactor.html#ga9d77772be7805709c87eeb01b06d67e2">pn_proactor</a>();</div><div class="line">  <a name="a54"></a><a class="code" href="group__proactor.html#ga523ea983380a1566b3b1a7606d66422c">pn_proactor_connect</a>(app.proactor, <a
  name="a55"></a><a class="code" href="group__connection.html#gaa9e59c468ec0568b1528f5f83c4b301d">pn_connection</a>(), host, port);</div><div class="line">  <span class="keywordflow">if</span> (url) <a name="a56"></a><a class="code" href="group__url.html#gab65d8b2c49f5e3f720cea8a3c1a1e6d1">pn_url_free</a>(url);</div><div class="line"></div><div class="line">  <span class="keywordflow">do</span> {</div><div class="line">    <a class="code" href="group__event.html#ga6bc581dfeaa8e8d46d07d37229d565c9">pn_event_batch_t</a> *events = <a name="a57"></a><a class="code" href="group__proactor.html#ga56f5830965c20d3dbfc63e795eb243c4">pn_proactor_wait</a>(app.proactor);</div><div class="line">    <a class="code" href="group__event.html#ga87f3028b4888632bbd56fb71ac737ae8">pn_event_t</a> *e;</div><div class="line">    <span class="keywordflow">while</span> ((e = <a name="a58"></a><a class="code" href="group__event.html#gac3fbf151357d3101ac294cb675348c76">pn_event_batch_next</a>(events))) {</div><d
 iv class="line">      handle(&amp;app, e);</div><div class="line">    }</div><div class="line">    <a name="a59"></a><a class="code" href="group__proactor.html#gab45680de5c02690a1f1ad1a3c70e9d65">pn_proactor_done</a>(app.proactor, events);</div><div class="line">  } <span class="keywordflow">while</span>(!app.finished);</div><div class="line"></div><div class="line">  <a name="a60"></a><a class="code" href="group__proactor.html#ga10fa443c109cee057a3c30e69f93fcef">pn_proactor_free</a>(app.proactor);</div><div class="line">  free(app.message_buffer.start);</div><div class="line">  <span class="keywordflow">return</span> exit_code;</div><div class="line">}</div></div><!-- fragment --> </div><!-- contents -->
+<p>Subscribes to the 'example' node and prints the message bodies received.Can be used with <a class="el" href="broker_8c-example.html">broker.c</a>, <a class="el" href="direct_8c-example.html">direct.c</a> or an external AMQP broker.</p>
+<div class="fragment"><div class="line"><span class="comment">/*</span></div><div class="line"><span class="comment"> *</span></div><div class="line"><span class="comment"> * Licensed to the Apache Software Foundation (ASF) under one</span></div><div class="line"><span class="comment"> * or more contributor license agreements.  See the NOTICE file</span></div><div class="line"><span class="comment"> * distributed with this work for additional information</span></div><div class="line"><span class="comment"> * regarding copyright ownership.  The ASF licenses this file</span></div><div class="line"><span class="comment"> * to you under the Apache License, Version 2.0 (the</span></div><div class="line"><span class="comment"> * &quot;License&quot;); you may not use this file except in compliance</span></div><div class="line"><span class="comment"> * with the License.  You may obtain a copy of the License at</span></div><div class="line"><span class="comment"> *</span></div><div class="li
 ne"><span class="comment"> *   http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><span class="comment"> *</span></div><div class="line"><span class="comment"> * Unless required by applicable law or agreed to in writing,</span></div><div class="line"><span class="comment"> * software distributed under the License is distributed on an</span></div><div class="line"><span class="comment"> * &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</span></div><div class="line"><span class="comment"> * KIND, either express or implied.  See the License for the</span></div><div class="line"><span class="comment"> * specific language governing permissions and limitations</span></div><div class="line"><span class="comment"> * under the License.</span></div><div class="line"><span class="comment"> *</span></div><div class="line"><span class="comment"> */</span></div><div class="line"></div><div class="line"><span class="preprocessor">#include &lt;<a class="code" 
 href="connection_8h.html">proton/connection.h</a>&gt;</span></div><div class="line"><span class="preprocessor">#include &lt;<a class="code" href="condition_8h.html">proton/condition.h</a>&gt;</span></div><div class="line"><span class="preprocessor">#include &lt;<a class="code" href="delivery_8h.html">proton/delivery.h</a>&gt;</span></div><div class="line"><span class="preprocessor">#include &lt;<a class="code" href="link_8h.html">proton/link.h</a>&gt;</span></div><div class="line"><span class="preprocessor">#include &lt;<a class="code" href="message_8h.html">proton/message.h</a>&gt;</span></div><div class="line"><span class="preprocessor">#include &lt;<a class="code" href="proactor_8h.html">proton/proactor.h</a>&gt;</span></div><div class="line"><span class="preprocessor">#include &lt;<a class="code" href="session_8h.html">proton/session.h</a>&gt;</span></div><div class="line"><span class="preprocessor">#include &lt;<a class="code" href="transport_8h.html">proton/transport.h</a>&gt;
 </span></div><div class="line"></div><div class="line"><span class="preprocessor">#include &lt;stdio.h&gt;</span></div><div class="line"><span class="preprocessor">#include &lt;stdlib.h&gt;</span></div><div class="line"></div><div class="line"><span class="keyword">typedef</span> <span class="keyword">struct </span>app_data_t {</div><div class="line">  <span class="keyword">const</span> <span class="keywordtype">char</span> *host, *port;</div><div class="line">  <span class="keyword">const</span> <span class="keywordtype">char</span> *amqp_address;</div><div class="line">  <span class="keyword">const</span> <span class="keywordtype">char</span> *container_id;</div><div class="line">  <span class="keywordtype">int</span> message_count;</div><div class="line"></div><div class="line">  <a class="code" href="types_8h.html#abba42c7929dfceb9d296535bad0c93dc">pn_proactor_t</a> *proactor;</div><div class="line">  <span class="keywordtype">int</span> received;</div><div class="line">  <span 
 class="keywordtype">bool</span> finished;</div><div class="line">} app_data_t;</div><div class="line"></div><div class="line"><span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> BATCH = 1000; <span class="comment">/* Batch size for unlimited receive */</span></div><div class="line"></div><div class="line"><span class="keyword">static</span> <span class="keywordtype">int</span> exit_code = 0;</div><div class="line"></div><div class="line"><span class="keyword">static</span> <span class="keywordtype">void</span> check_condition(<a class="code" href="group__event.html#ga87f3028b4888632bbd56fb71ac737ae8">pn_event_t</a> *e, <a class="code" href="group__condition.html#ga11eb7db7d2c205169fe3d47c996a95a5">pn_condition_t</a> *cond) {</div><div class="line">  <span class="keywordflow">if</span> (<a name="a0"></a><a class="code" href="group__condition.html#ga112611a7a4087e050c476a430db2cfb9">pn_condition_is_set</a>(cond)) {</div><div clas
 s="line">    fprintf(stderr, <span class="stringliteral">&quot;%s: %s: %s\n&quot;</span>, <a name="a1"></a><a class="code" href="group__event.html#ga3a85c046c11ce692c23b9566b022d54b">pn_event_type_name</a>(<a name="a2"></a><a class="code" href="group__event.html#gacaea54ca51885933b4987c131a3d1b0d">pn_event_type</a>(e)),</div><div class="line">            <a name="a3"></a><a class="code" href="group__condition.html#ga05b0d374d90f11d9ebbf818662569689">pn_condition_get_name</a>(cond), <a name="a4"></a><a class="code" href="group__condition.html#gaabebb65bfcf47b6f7d83ab6fb0153bb8">pn_condition_get_description</a>(cond));</div><div class="line">    <a name="a5"></a><a class="code" href="group__connection.html#gac25afdf810ad188b2cb3bf31a7482ca0">pn_connection_close</a>(<a name="a6"></a><a class="code" href="group__event.html#ga4f2c6a0fdf86a43e7e9874fcd2ccaf52">pn_event_connection</a>(e));</div><div class="line">    exit_code = 1;</div><div class="line">  }</div><div class="line">}</div><d
 iv class="line"></div><div class="line"><span class="preprocessor">#define MAX_SIZE 1024</span></div><div class="line"></div><div class="line"><span class="keyword">static</span> <span class="keywordtype">void</span> decode_message(<a class="code" href="group__delivery.html#gacdfce854066c0a4ff4db9f9a0478f340">pn_delivery_t</a> *dlv) {</div><div class="line">  <span class="keyword">static</span> <span class="keywordtype">char</span> buffer[MAX_SIZE];</div><div class="line">  ssize_t len;</div><div class="line">  <span class="comment">// try to decode the message body</span></div><div class="line">  <span class="keywordflow">if</span> (<a name="a7"></a><a class="code" href="group__delivery.html#ga17523835dbc8d1906bd71df69d09cc40">pn_delivery_pending</a>(dlv) &lt; MAX_SIZE) {</div><div class="line">    <span class="comment">// read in the raw data</span></div><div class="line">    len = <a name="a8"></a><a class="code" href="group__link.html#ga06c97ce7396973dca0d311567f25f95a">pn_link_
 recv</a>(<a name="a9"></a><a class="code" href="group__delivery.html#gad3dd82fe9a649d70d4f3430c34699638">pn_delivery_link</a>(dlv), buffer, MAX_SIZE);</div><div class="line">    <span class="keywordflow">if</span> (len &gt; 0) {</div><div class="line">      <span class="comment">// decode it into a proton message</span></div><div class="line">      <a class="code" href="group__message.html#gad9259fa9271e8844c8e05a7e8978e3b2">pn_message_t</a> *m = <a name="a10"></a><a class="code" href="group__message.html#gaaf98d84b9ddc1c6537dddd4c9c5b979e">pn_message</a>();</div><div class="line">      <span class="keywordflow">if</span> (<a name="a11"></a><a class="code" href="group__error.html#gac73fbd2363c5f562f85dde459e631394">PN_OK</a> == <a name="a12"></a><a class="code" href="group__message.html#gab0bae90838f4661b0c82c15f25e1e988">pn_message_decode</a>(m, buffer, len)) {</div><div class="line">        pn_string_t *s = pn_string(NULL);</div><div class="line">        pn_inspect(<a name="a13"><
 /a><a class="code" href="group__message.html#ga145c06edbcccfbe97136bfb5cb2b22b1">pn_message_body</a>(m), s);</div><div class="line">        printf(<span class="stringliteral">&quot;%s\n&quot;</span>, pn_string_get(s));</div><div class="line">        pn_free(s);</div><div class="line">      }</div><div class="line">      <a name="a14"></a><a class="code" href="group__message.html#ga69aadbc3a80f1fa16962774e711392f8">pn_message_free</a>(m);</div><div class="line">    }</div><div class="line">  }</div><div class="line">}</div><div class="line"></div><div class="line"><span class="comment">/* Return true to continue, false to exit */</span></div><div class="line"><span class="keyword">static</span> <span class="keywordtype">bool</span> handle(app_data_t* app, <a class="code" href="group__event.html#ga87f3028b4888632bbd56fb71ac737ae8">pn_event_t</a>* event) {</div><div class="line">  <span class="keywordflow">switch</span> (<a class="code" href="group__event.html#gacaea54ca51885933b4987c1
 31a3d1b0d">pn_event_type</a>(event)) {</div><div class="line"></div><div class="line">   <span class="keywordflow">case</span> <a name="a15"></a><a class="code" href="group__event.html#gga4876e2eed24a4d4e4c52b99842103cdaa182e571a0310028514bce66a41063a6e">PN_CONNECTION_INIT</a>: {</div><div class="line">     <a class="code" href="group__connection.html#ga886351d81ff3a977a284a206526c5aff">pn_connection_t</a>* c = <a class="code" href="group__event.html#ga4f2c6a0fdf86a43e7e9874fcd2ccaf52">pn_event_connection</a>(event);</div><div class="line">     <a name="a16"></a><a class="code" href="group__connection.html#gac4a34e0b1fc5665b26ae47a80a422a1a">pn_connection_set_container</a>(c, app-&gt;container_id);</div><div class="line">     <a name="a17"></a><a class="code" href="group__connection.html#ga4c0a2d40bb95202477ccc5aaa7456670">pn_connection_open</a>(c);</div><div class="line">     <a class="code" href="group__session.html#ga38ccb93b8f5c2892adafce5d5f0fbcd9">pn_session_t</a>* s = <a name
 ="a18"></a><a class="code" href="group__session.html#ga1feff407b8fe308a14f283d193246f3c">pn_session</a>(c);</div><div class="line">     <a name="a19"></a><a class="code" href="group__session.html#ga2b345eada2c15249caaefaa894d1aae3">pn_session_open</a>(s);</div><div class="line">     <a class="code" href="group__link.html#ga89dad3aa7934329a7ff467c636687bc0">pn_link_t</a>* l = <a name="a20"></a><a class="code" href="group__link.html#ga5e314b3e07b48ebcffbac63f265fa69f">pn_receiver</a>(s, <span class="stringliteral">&quot;my_receiver&quot;</span>);</div><div class="line">     <a name="a21"></a><a class="code" href="group__terminus.html#ga0603db45f03fcef0ef18f4f89ebf3de1">pn_terminus_set_address</a>(<a name="a22"></a><a class="code" href="group__link.html#ga2c8985a9d44a813ab1739a91ae3708a3">pn_link_source</a>(l), app-&gt;amqp_address);</div><div class="line">     <a name="a23"></a><a class="code" href="group__link.html#gaabaca3f5d03970a122240eebc588add6">pn_link_open</a>(l);</div><div cl
 ass="line">     <span class="comment">/* cannot receive without granting credit: */</span></div><div class="line">     <a name="a24"></a><a class="code" href="group__link.html#gafec44cf1c79ec03f3ac009e1879e71a9">pn_link_flow</a>(l, app-&gt;message_count ? app-&gt;message_count : BATCH);</div><div class="line">   } <span class="keywordflow">break</span>;</div><div class="line"></div><div class="line">   <span class="keywordflow">case</span> <a name="a25"></a><a class="code" href="group__event.html#gga4876e2eed24a4d4e4c52b99842103cdaa70bbfc163d85732b5652dc70fb3330fe">PN_DELIVERY</a>: {</div><div class="line">     <span class="comment">/* A message has been received */</span></div><div class="line">     <a class="code" href="group__link.html#ga89dad3aa7934329a7ff467c636687bc0">pn_link_t</a> *link = NULL;</div><div class="line">     <a class="code" href="group__delivery.html#gacdfce854066c0a4ff4db9f9a0478f340">pn_delivery_t</a> *dlv = <a name="a26"></a><a class="code" href="group__event
 .html#ga10fa6f53bdabe0851ebb2d8a0bf6a52c">pn_event_delivery</a>(event);</div><div class="line">     <span class="keywordflow">if</span> (<a name="a27"></a><a class="code" href="group__delivery.html#ga13364206124b653b90f5ee3ddae9ff35">pn_delivery_readable</a>(dlv) &amp;&amp; !<a name="a28"></a><a class="code" href="group__delivery.html#ga23c7b3c678228ccb21378e7c8ec9a72d">pn_delivery_partial</a>(dlv)) {</div><div class="line">       link = <a class="code" href="group__delivery.html#gad3dd82fe9a649d70d4f3430c34699638">pn_delivery_link</a>(dlv);</div><div class="line">       decode_message(dlv);</div><div class="line">       <span class="comment">/* Accept the delivery */</span></div><div class="line">       <a name="a29"></a><a class="code" href="group__delivery.html#ga570c54003c2ba18b84405737925e5176">pn_delivery_update</a>(dlv, <a name="a30"></a><a class="code" href="group__delivery.html#gac64952b813a707586c6b3898e09552e4">PN_ACCEPTED</a>);</div><div class="line">       <span class="
 comment">/* done with the delivery, move to the next and free it */</span></div><div class="line">       <a name="a31"></a><a class="code" href="group__link.html#ga93824a3859c37463e44458cd2f63d31f">pn_link_advance</a>(link);</div><div class="line">       <a name="a32"></a><a class="code" href="group__delivery.html#ga98c275fd7158e8b9d7d48d70503d68df">pn_delivery_settle</a>(dlv);  <span class="comment">/* dlv is now freed */</span></div><div class="line"></div><div class="line">       <span class="keywordflow">if</span> (app-&gt;message_count == 0) {</div><div class="line">         <span class="comment">/* receive forever - see if more credit is needed */</span></div><div class="line">         <span class="keywordflow">if</span> (<a name="a33"></a><a class="code" href="group__link.html#ga55428637f3b8c446efd5fea3f26c932d">pn_link_credit</a>(link) &lt; BATCH/2) {</div><div class="line">           <span class="comment">/* Grant enough credit to bring it up to BATCH: */</span></div><div c
 lass="line">           <a class="code" href="group__link.html#gafec44cf1c79ec03f3ac009e1879e71a9">pn_link_flow</a>(link, BATCH - <a class="code" href="group__link.html#ga55428637f3b8c446efd5fea3f26c932d">pn_link_credit</a>(link));</div><div class="line">         }</div><div class="line">       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (++app-&gt;received &gt;= app-&gt;message_count) {</div><div class="line">         <span class="comment">/* done receiving, close the endpoints */</span></div><div class="line">         printf(<span class="stringliteral">&quot;%d messages received\n&quot;</span>, app-&gt;received);</div><div class="line">         <a class="code" href="group__session.html#ga38ccb93b8f5c2892adafce5d5f0fbcd9">pn_session_t</a> *ssn = <a name="a34"></a><a class="code" href="group__link.html#gac63e43305fb1a5e3b14399a9ddc8f24d">pn_link_session</a>(link);</div><div class="line">         <a name="a35"></a><a class="code" href="group__link.html#
 ga4851693eb6a16fd9ab61e2df6f00770d">pn_link_close</a>(link);</div><div class="line">         <a name="a36"></a><a class="code" href="group__session.html#ga12e5c4e71b0df4087d16ccc8b63b42b5">pn_session_close</a>(ssn);</div><div class="line">         <a class="code" href="group__connection.html#gac25afdf810ad188b2cb3bf31a7482ca0">pn_connection_close</a>(<a name="a37"></a><a class="code" href="group__session.html#gaa45a8aa758334528a86cb7914ebe8545">pn_session_connection</a>(ssn));</div><div class="line">       }</div><div class="line">     }</div><div class="line">   } <span class="keywordflow">break</span>;</div><div class="line"></div><div class="line">   <span class="keywordflow">case</span> <a name="a38"></a><a class="code" href="group__event.html#gga4876e2eed24a4d4e4c52b99842103cdaa1ca722ce3c0b2c13a33636cded8430ba">PN_TRANSPORT_CLOSED</a>:</div><div class="line">    check_condition(event, <a name="a39"></a><a class="code" href="group__transport.html#gac458d9fdb684f9501e89b96fc51f5c
 34">pn_transport_condition</a>(<a name="a40"></a><a class="code" href="group__event.html#ga14525ae84870388141898bbf57f2b151">pn_event_transport</a>(event)));</div><div class="line">    <span class="keywordflow">break</span>;</div><div class="line"></div><div class="line">   <span class="keywordflow">case</span> <a name="a41"></a><a class="code" href="group__event.html#gga4876e2eed24a4d4e4c52b99842103cdaa1252529cf9f03d214c9b4fea5cf11b2f">PN_CONNECTION_REMOTE_CLOSE</a>:</div><div class="line">    check_condition(event, <a name="a42"></a><a class="code" href="group__connection.html#ga72a362389b99d8e891bf2e4fb4290754">pn_connection_remote_condition</a>(<a class="code" href="group__event.html#ga4f2c6a0fdf86a43e7e9874fcd2ccaf52">pn_event_connection</a>(event)));</div><div class="line">    <a class="code" href="group__connection.html#gac25afdf810ad188b2cb3bf31a7482ca0">pn_connection_close</a>(<a class="code" href="group__event.html#ga4f2c6a0fdf86a43e7e9874fcd2ccaf52">pn_event_connection</a
 >(event));</div><div class="line">    <span class="keywordflow">break</span>;</div><div class="line"></div><div class="line">   <span class="keywordflow">case</span> <a name="a43"></a><a class="code" href="group__event.html#gga4876e2eed24a4d4e4c52b99842103cdaa3410075b825c59b8f4efdcddf5a5b135">PN_SESSION_REMOTE_CLOSE</a>:</div><div class="line">    check_condition(event, <a name="a44"></a><a class="code" href="group__session.html#gae21b3fda1567bad1f8a8fe162ffaeece">pn_session_remote_condition</a>(<a name="a45"></a><a class="code" href="group__event.html#gaf4af0bfbe0e0a8e432f0e803df14ecb5">pn_event_session</a>(event)));</div><div class="line">    <a class="code" href="group__connection.html#gac25afdf810ad188b2cb3bf31a7482ca0">pn_connection_close</a>(<a class="code" href="group__event.html#ga4f2c6a0fdf86a43e7e9874fcd2ccaf52">pn_event_connection</a>(event));</div><div class="line">    <span class="keywordflow">break</span>;</div><div class="line"></div><div class="line">   <span class="
 keywordflow">case</span> <a name="a46"></a><a class="code" href="group__event.html#gga4876e2eed24a4d4e4c52b99842103cdaa1153f0108be071c31210dd1cd3e40a1f">PN_LINK_REMOTE_CLOSE</a>:</div><div class="line">   <span class="keywordflow">case</span> <a name="a47"></a><a class="code" href="group__event.html#gga4876e2eed24a4d4e4c52b99842103cdaa5a84b68a2bd5ca705187381a785121d2">PN_LINK_REMOTE_DETACH</a>:</div><div class="line">    check_condition(event, <a name="a48"></a><a class="code" href="group__link.html#ga97dc5133125c9b7e4afbb1b76e6efe7b">pn_link_remote_condition</a>(<a name="a49"></a><a class="code" href="group__event.html#ga75f230ef55f03a1f943df79279f8d111">pn_event_link</a>(event)));</div><div class="line">    <a class="code" href="group__connection.html#gac25afdf810ad188b2cb3bf31a7482ca0">pn_connection_close</a>(<a class="code" href="group__event.html#ga4f2c6a0fdf86a43e7e9874fcd2ccaf52">pn_event_connection</a>(event));</div><div class="line">    <span class="keywordflow">break</span
 >;</div><div class="line"></div><div class="line">   <span class="keywordflow">case</span> <a name="a50"></a><a class="code" href="group__event.html#gga4876e2eed24a4d4e4c52b99842103cdaa894e93f167ef39e28a07c9cdf6b1181b">PN_PROACTOR_INACTIVE</a>:</div><div class="line">    <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line">    <span class="keywordflow">break</span>;</div><div class="line"></div><div class="line">   <span class="keywordflow">default</span>:</div><div class="line">    <span class="keywordflow">break</span>;</div><div class="line">  }</div><div class="line">    <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line">}</div><div class="line"></div><div class="line"><span class="keywordtype">void</span> run(app_data_t *app) {</div><div class="line">  <span class="comment">/* Loop and handle events */</span></div><div class="line">  <span class="keywordflow">do</span> {</div><div class
 ="line">    <a class="code" href="group__event.html#ga6bc581dfeaa8e8d46d07d37229d565c9">pn_event_batch_t</a> *events = <a name="a51"></a><a class="code" href="group__proactor.html#ga2b66a46f3e557010ec61bd105326753d">pn_proactor_wait</a>(app-&gt;proactor);</div><div class="line">    <span class="keywordflow">for</span> (<a class="code" href="group__event.html#ga87f3028b4888632bbd56fb71ac737ae8">pn_event_t</a> *e = <a name="a52"></a><a class="code" href="group__event.html#gac3fbf151357d3101ac294cb675348c76">pn_event_batch_next</a>(events); e; e = <a class="code" href="group__event.html#gac3fbf151357d3101ac294cb675348c76">pn_event_batch_next</a>(events)) {</div><div class="line">      <span class="keywordflow">if</span> (!handle(app, e)) {</div><div class="line">        <span class="keywordflow">return</span>;</div><div class="line">      }</div><div class="line">    }</div><div class="line">    <a name="a53"></a><a class="code" href="group__proactor.html#gade60ff2292b74841766f953b9062
 85c0">pn_proactor_done</a>(app-&gt;proactor, events);</div><div class="line">  } <span class="keywordflow">while</span>(<span class="keyword">true</span>);</div><div class="line">}</div><div class="line"></div><div class="line"><span class="keywordtype">int</span> main(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span> **argv) {</div><div class="line">  <span class="keyword">struct </span>app_data_t app = {0};</div><div class="line">  <span class="keywordtype">int</span> i = 0;</div><div class="line">  app.container_id = argv[i++];   <span class="comment">/* Should be unique */</span></div><div class="line">  app.host = (argc &gt; 1) ? argv[i++] : <span class="stringliteral">&quot;&quot;</span>;</div><div class="line">  app.port = (argc &gt; 1) ? argv[i++] : <span class="stringliteral">&quot;amqp&quot;</span>;</div><div class="line">  app.amqp_address = (argc &gt; i) ? argv[i++] : <span class="stringliteral">&quot;examples&quot;</span>;</div><div class=
 "line">  app.message_count = (argc &gt; i) ? atoi(argv[i++]) : 10;</div><div class="line"></div><div class="line">  <span class="comment">/* Create the proactor and connect */</span></div><div class="line">  app.proactor = <a name="a54"></a><a class="code" href="group__proactor.html#gac2a925b3de00efd8cd40fa9920169554">pn_proactor</a>();</div><div class="line">  <span class="keywordtype">char</span> addr[<a name="a55"></a><a class="code" href="group__proactor.html#ga29ae114b42fb797c103dc9883ebcb256">PN_MAX_ADDR</a>];</div><div class="line">  <a name="a56"></a><a class="code" href="group__proactor.html#gaf67a7642c9003b36255b58776b494c96">pn_proactor_addr</a>(addr, <span class="keyword">sizeof</span>(addr), app.host, app.port);</div><div class="line">  <a name="a57"></a><a class="code" href="group__proactor.html#ga9a9d1c4138226fa87160f4769b87f8e6">pn_proactor_connect</a>(app.proactor, <a name="a58"></a><a class="code" href="group__connection.html#gaa9e59c468ec0568b1528f5f83c4b301d">pn_
 connection</a>(), addr);</div><div class="line">  run(&amp;app);</div><div class="line">  <a name="a59"></a><a class="code" href="group__proactor.html#ga5260c2653d4af5eb2f1c8c6190e9d6cf">pn_proactor_free</a>(app.proactor);</div><div class="line">  <span class="keywordflow">return</span> exit_code;</div><div class="line">}</div></div><!-- fragment --> </div><!-- contents -->
 </div><!-- doc-content -->
 <!-- start footer part -->
 <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
   <ul>
     <li class="footer">Generated by
     <a href="http://www.doxygen.org/index.html">
-    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.11 </li>
+    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.13 </li>
   </ul>
 </div>
 </body>

http://git-wip-us.apache.org/repos/asf/qpid-site/blob/36c59045/content/releases/qpid-proton-master/proton/c/api/resize.js
----------------------------------------------------------------------
diff --git a/content/releases/qpid-proton-master/proton/c/api/resize.js b/content/releases/qpid-proton-master/proton/c/api/resize.js
index 2b86c36..56e4a02 100755
--- a/content/releases/qpid-proton-master/proton/c/api/resize.js
+++ b/content/releases/qpid-proton-master/proton/c/api/resize.js
@@ -1,73 +1,104 @@
-var cookie_namespace = 'doxygen'; 
-var sidenav,navtree,content,header;
-
-function readCookie(cookie) 
+function initResizable()
 {
-  var myCookie = cookie_namespace+"_"+cookie+"=";
-  if (document.cookie) 
+  var cookie_namespace = 'doxygen';
+  var sidenav,navtree,content,header,collapsed,collapsedWidth=0,barWidth=6,desktop_vp=768,titleHeight;
+
+  function readCookie(cookie)
   {
-    var index = document.cookie.indexOf(myCookie);
-    if (index != -1) 
-    {
-      var valStart = index + myCookie.length;
-      var valEnd = document.cookie.indexOf(";", valStart);
-      if (valEnd == -1) 
-      {
-        valEnd = document.cookie.length;
+    var myCookie = cookie_namespace+"_"+cookie+"=";
+    if (document.cookie) {
+      var index = document.cookie.indexOf(myCookie);
+      if (index != -1) {
+        var valStart = index + myCookie.length;
+        var valEnd = document.cookie.indexOf(";", valStart);
+        if (valEnd == -1) {
+          valEnd = document.cookie.length;
+        }
+        var val = document.cookie.substring(valStart, valEnd);
+        return val;
       }
-      var val = document.cookie.substring(valStart, valEnd);
-      return val;
     }
+    return 0;
   }
-  return 0;
-}
 
-function writeCookie(cookie, val, expiration) 
-{
-  if (val==undefined) return;
-  if (expiration == null) 
+  function writeCookie(cookie, val, expiration)
   {
-    var date = new Date();
-    date.setTime(date.getTime()+(10*365*24*60*60*1000)); // default expiration is one week
-    expiration = date.toGMTString();
+    if (val==undefined) return;
+    if (expiration == null) {
+      var date = new Date();
+      date.setTime(date.getTime()+(10*365*24*60*60*1000)); // default expiration is one week
+      expiration = date.toGMTString();
+    }
+    document.cookie = cookie_namespace + "_" + cookie + "=" + val + "; expires=" + expiration+"; path=/";
   }
-  document.cookie = cookie_namespace + "_" + cookie + "=" + val + "; expires=" + expiration+"; path=/";
-}
- 
-function resizeWidth() 
-{
-  var windowWidth = $(window).width() + "px";
-  var sidenavWidth = $(sidenav).outerWidth();
-  content.css({marginLeft:parseInt(sidenavWidth)+"px"}); 
-  writeCookie('width',sidenavWidth, null);
-}
 
-function restoreWidth(navWidth)
-{
-  var windowWidth = $(window).width() + "px";
-  content.css({marginLeft:parseInt(navWidth)+6+"px"});
-  sidenav.css({width:navWidth + "px"});
-}
+  function resizeWidth()
+  {
+    var windowWidth = $(window).width() + "px";
+    var sidenavWidth = $(sidenav).outerWidth();
+    content.css({marginLeft:parseInt(sidenavWidth)+"px"});
+    writeCookie('width',sidenavWidth-barWidth, null);
+  }
 
-function resizeHeight() 
-{
-  var headerHeight = header.outerHeight();
-  var footerHeight = footer.outerHeight();
-  var windowHeight = $(window).height() - headerHeight - footerHeight;
-  content.css({height:windowHeight + "px"});
-  navtree.css({height:windowHeight + "px"});
-  sidenav.css({height:windowHeight + "px"});
-}
+  function restoreWidth(navWidth)
+  {
+    var windowWidth = $(window).width() + "px";
+    content.css({marginLeft:parseInt(navWidth)+barWidth+"px"});
+    sidenav.css({width:navWidth + "px"});
+  }
+
+  function resizeHeight()
+  {
+    var headerHeight = header.outerHeight();
+    var footerHeight = footer.outerHeight();
+    var windowHeight = $(window).height() - headerHeight - footerHeight;
+    content.css({height:windowHeight + "px"});
+    navtree.css({height:windowHeight + "px"});
+    sidenav.css({height:windowHeight + "px"});
+    var width=$(window).width();
+    if (width!=collapsedWidth) {
+      if (width<desktop_vp && collapsedWidth>=desktop_vp) {
+        if (!collapsed) {
+          collapseExpand();
+        }
+      } else if (width>desktop_vp && collapsedWidth<desktop_vp) {
+        if (collapsed) {
+          collapseExpand();
+        }
+      }
+      collapsedWidth=width;
+    }
+  }
+
+  function collapseExpand()
+  {
+    if (sidenav.width()>0) {
+      restoreWidth(0);
+      collapsed=true;
+    }
+    else {
+      var width = readCookie('width');
+      if (width>200 && width<$(window).width()) { restoreWidth(width); } else { restoreWidth(200); }
+      collapsed=false;
+    }
+  }
 
-function initResizable()
-{
   header  = $("#top");
   sidenav = $("#side-nav");
   content = $("#doc-content");
   navtree = $("#nav-tree");
   footer  = $("#nav-path");
   $(".side-nav-resizable").resizable({resize: function(e, ui) { resizeWidth(); } });
+  $(sidenav).resizable({ minWidth: 0 });
   $(window).resize(function() { resizeHeight(); });
+  var device = navigator.userAgent.toLowerCase();
+  var touch_device = device.match(/(iphone|ipod|ipad|android)/);
+  if (touch_device) { /* wider split bar for touch only devices */
+    $(sidenav).css({ paddingRight:'20px' });
+    $('.ui-resizable-e').css({ width:'20px' });
+    $('#nav-sync').css({ right:'34px' });
+    barWidth=20;
+  }
   var width = readCookie('width');
   if (width) { restoreWidth(width); } else { resizeWidth(); }
   resizeHeight();
@@ -76,22 +107,8 @@ function initResizable()
   if (i>=0) window.location.hash=url.substr(i);
   var _preventDefault = function(evt) { evt.preventDefault(); };
   $("#splitbar").bind("dragstart", _preventDefault).bind("selectstart", _preventDefault);
-  $(document).bind('touchmove',function(e){
-    var device = navigator.userAgent.toLowerCase();
-    var ios = device.match(/(iphone|ipod|ipad)/);
-    if (ios) {
-      try {
-        var target = e.target;
-        while (target) {
-          if ($(target).css('-webkit-overflow-scrolling')=='touch') return;
-          target = target.parentNode;
-        }
-        e.preventDefault();
-      } catch(err) {
-        e.preventDefault();
-      }
-    }
-  });
+  $(".ui-resizable-handle").dblclick(collapseExpand);
+  $(window).load(resizeHeight);
 }
 
 

http://git-wip-us.apache.org/repos/asf/qpid-site/blob/36c59045/content/releases/qpid-proton-master/proton/c/api/sasl-plugin_8h_source.html
----------------------------------------------------------------------
diff --git a/content/releases/qpid-proton-master/proton/c/api/sasl-plugin_8h_source.html b/content/releases/qpid-proton-master/proton/c/api/sasl-plugin_8h_source.html
new file mode 100755
index 0000000..8738f18
--- /dev/null
+++ b/content/releases/qpid-proton-master/proton/c/api/sasl-plugin_8h_source.html
@@ -0,0 +1,111 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Qpid Proton C API: proton/sasl-plugin.h Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+  $(document).ready(initResizable);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+  $(document).ready(function() { init_search(); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectalign" style="padding-left: 0.5em;">
+   <div id="projectname">Qpid Proton C API
+   &#160;<span id="projectnumber">master</span>
+   </div>
+  </td>
+   <td>        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+</td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.13 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('sasl-plugin_8h_source.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+  <div class="headertitle">
+<div class="title">sasl-plugin.h</div>  </div>
+</div><!--header-->
+<div class="contents">
+<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="preprocessor">#ifndef PROTON_SASL_PLUGIN_H</span></div><div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<span class="preprocessor">#define PROTON_SASL_PLUGIN_H 1</span></div><div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;</div><div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00006"></a><span class="lineno">    6</span>&#160;<span class="comment"> * Licensed to the Apache Software Foundation (ASF) under one</span></div><div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<span class="comment"> * or more contributor license agreements.  See the NOTICE file</span></div><div class="line"
 ><a name="l00008"></a><span class="lineno">    8</span>&#160;<span class="comment"> * distributed with this work for additional information</span></div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<span class="comment"> * regarding copyright ownership.  The ASF licenses this file</span></div><div class="line"><a name="l00010"></a><span class="lineno">   10</span>&#160;<span class="comment"> * to you under the Apache License, Version 2.0 (the</span></div><div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;<span class="comment"> * &quot;License&quot;); you may not use this file except in compliance</span></div><div class="line"><a name="l00012"></a><span class="lineno">   12</span>&#160;<span class="comment"> * with the License.  You may obtain a copy of the License at</span></div><div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00014
 "></a><span class="lineno">   14</span>&#160;<span class="comment"> *   http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;<span class="comment"> * Unless required by applicable law or agreed to in writing,</span></div><div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;<span class="comment"> * software distributed under the License is distributed on an</span></div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="comment"> * &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</span></div><div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;<span class="comment"> * KIND, either express or implied.  See the License for the</span></div><div class="line"><a name="l00020"></a><span class="l
 ineno">   20</span>&#160;<span class="comment"> * specific language governing permissions and limitations</span></div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;<span class="comment"> * under the License.</span></div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;</div><div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;<span class="preprocessor">#include &lt;proton/import_export.h&gt;</span></div><div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;<span class="preprocessor">#include &lt;proton/type_compat.h&gt;</span></div><div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;<span class="preprocessor">#include &lt;
 <a class="code" href="types_8h.html">proton/types.h</a>&gt;</span></div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;</div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;<span class="preprocessor">#ifdef __cplusplus</span></div><div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;<span class="keyword">extern</span> <span class="stringliteral">&quot;C&quot;</span> {</div><div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;</div><div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;<span class="comment">// Internal SASL authenticator interface: These are the entry points to a SASL implementations</span></div><div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;<span class="comment">//</span></div><div 
 class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;<span class="comment">// Free up all data structures allocated by the SASL implementation</span></div><div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;<span class="comment">// void free(pn_transport_t *transport);</span></div><div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;<span class="comment">// Return space separated list of supported mechanisms (client and server)</span></div><div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;<span class="comment">// If the returned string is dynamically allocated by the SASL implemetation</span></div><div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;<span class="comment">// it must stay valid until the free entry point is called.</span></div><div c
 lass="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;<span class="comment">// const char *list_mechs(pn_transport_t *transport);</span></div><div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;<span class="comment">// Initialise for either client or server (can&#39;t call both for a</span></div><div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;<span class="comment">// given transport/connection):</span></div><div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;<span class="comment">// bool init_server(pn_transport_t *transport);</span></div><div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;<span class="comment">// bool init_client(pn_transport_t *transport);</span></div><div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160
 ;<span class="comment">//</span></div><div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;<span class="comment">// Writing:</span></div><div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;<span class="comment">// void prepare_write(pn_transport_t *transport);</span></div><div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;<span class="comment">// Reading:</span></div><div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;<span class="comment">// Server side (process server SASL messages):</span></div><div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;<span class="comment">// void process_init(pn_transport_t *transport, const char *mechanism, const pn_bytes_t *recv);</span></div><div class="line"><a name="l00054"></a><span class="lineno">   54</
 span>&#160;<span class="comment">// void process_response(pn_transport_t *transport, const pn_bytes_t *recv);</span></div><div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;<span class="comment">// Client side (process client SASL messages)</span></div><div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;<span class="comment">// bool process_mechanisms(pn_transport_t *transport, const char *mechs);</span></div><div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;<span class="comment">// void process_challenge(pn_transport_t *transport, const pn_bytes_t *recv);</span></div><div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;<span class="comment">// void process_outcome(pn_transport_t *transport);</span></div><div class="line"><a name="l00060"></a><span class="lineno">  
  60</span>&#160;</div><div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;<span class="comment">// Security layer interface (active after SASL succeeds)</span></div><div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;<span class="comment">// bool    can_encrypt(pn_transport_t *transport);</span></div><div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;<span class="comment">// ssize_t max_encrypt_size(pn_transport_t *transport);</span></div><div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;<span class="comment">// ssize_t encode(pn_transport_t *transport, pn_bytes_t in, pn_bytes_t *out);</span></div><div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;<span class="comment">// ssize_t decode(pn_transport_t *transport, pn_bytes_t in, pn_bytes_t *out);</span></div><div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;</div><div class=
 "line"><a name="l00067"></a><span class="lineno">   67</span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span>pnx_sasl_implementation</div><div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;{</div><div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;    void (*free)(<a class="code" href="group__transport.html#gac26eda05f649bbf0399f3d8d78d12fa8">pn_transport_t</a> *transport);</div><div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;</div><div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;    <span class="keyword">const</span> <span class="keywordtype">char</span>*  (*list_mechs)(<a class="code" href="group__transport.html#gac26eda05f649bbf0399f3d8d78d12fa8">pn_transport_t</a> *transport);</div><div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;</div><div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#1
 60;    bool (*init_server)(<a class="code" href="group__transport.html#gac26eda05f649bbf0399f3d8d78d12fa8">pn_transport_t</a> *transport);</div><div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;    bool (*init_client)(<a class="code" href="group__transport.html#gac26eda05f649bbf0399f3d8d78d12fa8">pn_transport_t</a> *transport);</div><div class="line"><a name="l00075"></a><span class="lineno">   75</span>&#160;</div><div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160;    void (*prepare_write)(<a class="code" href="group__transport.html#gac26eda05f649bbf0399f3d8d78d12fa8">pn_transport_t</a> *transport);</div><div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;</div><div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;    void (*process_init)(<a class="code" href="group__transport.html#gac26eda05f649bbf0399f3d8d78d12fa8">pn_transport_t</a> *transport, <span class="keyword">const</sp
 an> <span class="keywordtype">char</span> *mechanism, <span class="keyword">const</span> <a class="code" href="group__api__types.html#structpn__bytes__t">pn_bytes_t</a> *recv);</div><div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;    void (*process_response)(<a class="code" href="group__transport.html#gac26eda05f649bbf0399f3d8d78d12fa8">pn_transport_t</a> *transport, <span class="keyword">const</span> <a class="code" href="group__api__types.html#structpn__bytes__t">pn_bytes_t</a> *recv);</div><div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;</div><div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;    bool (*process_mechanisms)(<a class="code" href="group__transport.html#gac26eda05f649bbf0399f3d8d78d12fa8">pn_transport_t</a> *transport, <span class="keyword">const</span> <span class="keywordtype">char</span> *mechs);</div><div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;
     void (*process_challenge)(<a class="code" href="group__transport.html#gac26eda05f649bbf0399f3d8d78d12fa8">pn_transport_t</a> *transport, <span class="keyword">const</span> <a class="code" href="group__api__types.html#structpn__bytes__t">pn_bytes_t</a> *recv);</div><div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;    void (*process_outcome)(<a class="code" href="group__transport.html#gac26eda05f649bbf0399f3d8d78d12fa8">pn_transport_t</a> *transport);</div><div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;</div><div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;    bool    (*can_encrypt)(<a class="code" href="group__transport.html#gac26eda05f649bbf0399f3d8d78d12fa8">pn_transport_t</a> *transport);</div><div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;    ssize_t (*max_encrypt_size)(<a class="code" href="group__transport.html#gac26eda05f649bbf0399f3d8d78d12fa8">pn_transp
 ort_t</a> *transport);</div><div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;    ssize_t (*encode)(<a class="code" href="group__transport.html#gac26eda05f649bbf0399f3d8d78d12fa8">pn_transport_t</a> *transport, <a class="code" href="group__api__types.html#structpn__bytes__t">pn_bytes_t</a> in, <a class="code" href="group__api__types.html#structpn__bytes__t">pn_bytes_t</a> *out);</div><div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;    ssize_t (*decode)(<a class="code" href="group__transport.html#gac26eda05f649bbf0399f3d8d78d12fa8">pn_transport_t</a> *transport, <a class="code" href="group__api__types.html#structpn__bytes__t">pn_bytes_t</a> in, <a class="code" href="group__api__types.html#structpn__bytes__t">pn_bytes_t</a> *out);</div><div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;</div><div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;} pnx_sasl_implementation;</div><
 div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;</div><div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;<span class="comment">// Shared SASL API used by the actual SASL authenticators</span></div><div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;<span class="keyword">enum</span> pnx_sasl_state {</div><div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;  SASL_NONE,</div><div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;  SASL_POSTED_INIT,</div><div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160;  SASL_POSTED_MECHANISMS,</div><div class="line"><a name="l00097"></a><span class="lineno">   97</span>&#160;  SASL_POSTED_RESPONSE,</div><div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160;  SASL_POSTED_CHALLENGE,</div><div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;  SASL_RE
 CVED_OUTCOME_SUCCEED,</div><div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;  SASL_RECVED_OUTCOME_FAIL,</div><div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;  SASL_POSTED_OUTCOME,</div><div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160;  SASL_ERROR</div><div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160;};</div><div class="line"><a name="l00104"></a><span class="lineno">  104</span>&#160;</div><div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160;<span class="comment">// APIs used by sasl implementations</span></div><div class="line"><a name="l00106"></a><span class="lineno">  106</span>&#160;PN_EXTERN <span class="keywordtype">void</span>  pnx_sasl_logf(<a class="code" href="group__transport.html#gac26eda05f649bbf0399f3d8d78d12fa8">pn_transport_t</a> *transport, <span class="keyword">const</span> <span class="keywordtype">char</span> *format, ...)
 ;</div><div class="line"><a name="l00107"></a><span class="lineno">  107</span>&#160;</div><div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160;PN_EXTERN <span class="keywordtype">void</span> *pnx_sasl_get_context(<a class="code" href="group__transport.html#gac26eda05f649bbf0399f3d8d78d12fa8">pn_transport_t</a> *transport);</div><div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160;PN_EXTERN <span class="keywordtype">void</span>  pnx_sasl_set_context(<a class="code" href="group__transport.html#gac26eda05f649bbf0399f3d8d78d12fa8">pn_transport_t</a> *transport, <span class="keywordtype">void</span> *context);</div><div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;</div><div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160;PN_EXTERN <span class="keywordtype">bool</span>  pnx_sasl_is_client(<a class="code" href="group__transport.html#gac26eda05f649bbf0399f3d8d78d12fa8">pn_transport_t</a>
  *transport);</div><div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;PN_EXTERN <span class="keywordtype">bool</span>  pnx_sasl_is_included_mech(<a class="code" href="group__transport.html#gac26eda05f649bbf0399f3d8d78d12fa8">pn_transport_t</a> *transport, <a class="code" href="group__api__types.html#structpn__bytes__t">pn_bytes_t</a> s);</div><div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160;PN_EXTERN <span class="keywordtype">bool</span>  pnx_sasl_is_transport_encrypted(<a class="code" href="group__transport.html#gac26eda05f649bbf0399f3d8d78d12fa8">pn_transport_t</a> *transport);</div><div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160;PN_EXTERN <span class="keywordtype">bool</span>  pnx_sasl_get_allow_insecure_mechs(<a class="code" href="group__transport.html#gac26eda05f649bbf0399f3d8d78d12fa8">pn_transport_t</a> *transport);</div><div class="line"><a name="l00115"></a><span class="lineno">  115</span
 >&#160;PN_EXTERN <span class="keywordtype">bool</span>  pnx_sasl_get_auth_required(<a class="code" href="group__transport.html#gac26eda05f649bbf0399f3d8d78d12fa8">pn_transport_t</a> *transport);</div><div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;PN_EXTERN <span class="keyword">const</span> <span class="keywordtype">char</span> *pnx_sasl_get_external_username(<a class="code" href="group__transport.html#gac26eda05f649bbf0399f3d8d78d12fa8">pn_transport_t</a> *transport);</div><div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160;PN_EXTERN <span class="keywordtype">int</span>   pnx_sasl_get_external_ssf(<a class="code" href="group__transport.html#gac26eda05f649bbf0399f3d8d78d12fa8">pn_transport_t</a> *transport);</div><div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160;</div><div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;PN_EXTERN <span class="keyword">const</span> <span clas
 s="keywordtype">char</span> *pnx_sasl_get_username(<a class="code" href="group__transport.html#gac26eda05f649bbf0399f3d8d78d12fa8">pn_transport_t</a> *transport);</div><div class="line"><a name="l00120"></a><span class="lineno">  120</span>&#160;PN_EXTERN <span class="keyword">const</span> <span class="keywordtype">char</span> *pnx_sasl_get_password(<a class="code" href="group__transport.html#gac26eda05f649bbf0399f3d8d78d12fa8">pn_transport_t</a> *transport);</div><div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160;PN_EXTERN <span class="keywordtype">void</span>  pnx_sasl_clear_password(<a class="code" href="group__transport.html#gac26eda05f649bbf0399f3d8d78d12fa8">pn_transport_t</a> *transport);</div><div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;PN_EXTERN <span class="keyword">const</span> <span class="keywordtype">char</span> *pnx_sasl_get_remote_fqdn(<a class="code" href="group__transport.html#gac26eda05f649bbf0399f3d8d78d
 12fa8">pn_transport_t</a> *transport);</div><div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160;PN_EXTERN <span class="keyword">const</span> <span class="keywordtype">char</span> *pnx_sasl_get_selected_mechanism(<a class="code" href="group__transport.html#gac26eda05f649bbf0399f3d8d78d12fa8">pn_transport_t</a> *transport);</div><div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160;</div><div class="line"><a name="l00125"></a><span class="lineno">  125</span>&#160;PN_EXTERN <span class="keywordtype">void</span>  pnx_sasl_set_bytes_out(<a class="code" href="group__transport.html#gac26eda05f649bbf0399f3d8d78d12fa8">pn_transport_t</a> *transport, <a class="code" href="group__api__types.html#structpn__bytes__t">pn_bytes_t</a> bytes);</div><div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160;PN_EXTERN <span class="keywordtype">void</span>  pnx_sasl_set_desired_state(<a class="code" href="group__transport.html#gac26e
 da05f649bbf0399f3d8d78d12fa8">pn_transport_t</a> *transport, <span class="keyword">enum</span> pnx_sasl_state desired_state);</div><div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;PN_EXTERN <span class="keywordtype">void</span>  pnx_sasl_set_selected_mechanism(<a class="code" href="group__transport.html#gac26eda05f649bbf0399f3d8d78d12fa8">pn_transport_t</a> *transport, <span class="keyword">const</span> <span class="keywordtype">char</span> *mechanism);</div><div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;PN_EXTERN <span class="keywordtype">void</span>  pnx_sasl_set_local_hostname(<a class="code" href="group__transport.html#gac26eda05f649bbf0399f3d8d78d12fa8">pn_transport_t</a> * transport, <span class="keyword">const</span> <span class="keywordtype">char</span> * fqdn);</div><div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;PN_EXTERN <span class="keywordtype">void</span>  pnx_sasl_succeed_authent
 ication(<a class="code" href="group__transport.html#gac26eda05f649bbf0399f3d8d78d12fa8">pn_transport_t</a> *transport, <span class="keyword">const</span> <span class="keywordtype">char</span> *username);</div><div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#160;PN_EXTERN <span class="keywordtype">void</span>  pnx_sasl_fail_authentication(<a class="code" href="group__transport.html#gac26eda05f649bbf0399f3d8d78d12fa8">pn_transport_t</a> *transport);</div><div class="line"><a name="l00131"></a><span class="lineno">  131</span>&#160;</div><div class="line"><a name="l00132"></a><span class="lineno">  132</span>&#160;PN_EXTERN <span class="keywordtype">void</span>  pnx_sasl_set_implementation(<a class="code" href="group__transport.html#gac26eda05f649bbf0399f3d8d78d12fa8">pn_transport_t</a> *transport, <span class="keyword">const</span> pnx_sasl_implementation *impl, <span class="keywordtype">void</span> *context);</div><div class="line"><a name="l00133"></a><span 
 class="lineno">  133</span>&#160;PN_EXTERN <span class="keywordtype">void</span>  pnx_sasl_set_default_implementation(<span class="keyword">const</span> pnx_sasl_implementation *impl);</div><div class="line"><a name="l00134"></a><span class="lineno">  134</span>&#160;</div><div class="line"><a name="l00135"></a><span class="lineno">  135</span>&#160;<span class="preprocessor">#ifdef __cplusplus</span></div><div class="line"><a name="l00136"></a><span class="lineno">  136</span>&#160;}</div><div class="line"><a name="l00137"></a><span class="lineno">  137</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00138"></a><span class="lineno">  138</span>&#160;</div><div class="line"><a name="l00139"></a><span class="lineno">  139</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* sasl-plugin.h */</span><span class="preprocessor"></span></div><div class="ttc" id="types_8h_html"><div class="ttname"><a href="types_8h.html">types.h
 </a></div><div class="ttdoc">AMQP and API data types. </div></div>
+<div class="ttc" id="group__transport_html_gac26eda05f649bbf0399f3d8d78d12fa8"><div class="ttname"><a href="group__transport.html#gac26eda05f649bbf0399f3d8d78d12fa8">pn_transport_t</a></div><div class="ttdeci">struct pn_transport_t pn_transport_t</div><div class="ttdoc">An AMQP Transport object. </div><div class="ttdef"><b>Definition:</b> types.h:421</div></div>
+<div class="ttc" id="group__api__types_html_structpn__bytes__t"><div class="ttname"><a href="group__api__types.html#structpn__bytes__t">pn_bytes_t</a></div><div class="ttdoc">A const byte buffer. </div><div class="ttdef"><b>Definition:</b> types.h:202</div></div>
+</div><!-- fragment --></div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="navelem"><a class="el" href="dir_25143d27009f52d175c1d192441a738a.html">proton</a></li><li class="navelem"><b>sasl-plugin.h</b></li>
+    <li class="footer">Generated by
+    <a href="http://www.doxygen.org/index.html">
+    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.13 </li>
+  </ul>
+</div>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/qpid-site/blob/36c59045/content/releases/qpid-proton-master/proton/c/api/sasl_8h.html
----------------------------------------------------------------------
diff --git a/content/releases/qpid-proton-master/proton/c/api/sasl_8h.html b/content/releases/qpid-proton-master/proton/c/api/sasl_8h.html
index 48005fb..c5a4bd7 100755
--- a/content/releases/qpid-proton-master/proton/c/api/sasl_8h.html
+++ b/content/releases/qpid-proton-master/proton/c/api/sasl_8h.html
@@ -3,7 +3,8 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.11"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
 <title>Qpid Proton C API: proton/sasl.h File Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
@@ -14,7 +15,6 @@
 <script type="text/javascript" src="navtree.js"></script>
 <script type="text/javascript">
   $(document).ready(initResizable);
-  $(window).load(resizeHeight);
 </script>
 <link href="search/search.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="search/searchdata.js"></script>
@@ -55,7 +55,7 @@
 </table>
 </div>
 <!-- end header part -->
-<!-- Generated by Doxygen 1.8.11 -->
+<!-- Generated by Doxygen 1.8.13 -->
 <script type="text/javascript">
 var searchBox = new SearchBox("searchBox", "search",false,'Search');
 </script>
@@ -173,7 +173,7 @@ Functions</h2></td></tr>
     <li class="navelem"><a class="el" href="dir_25143d27009f52d175c1d192441a738a.html">proton</a></li><li class="navelem"><a class="el" href="sasl_8h.html">sasl.h</a></li>
     <li class="footer">Generated by
     <a href="http://www.doxygen.org/index.html">
-    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.11 </li>
+    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.13 </li>
   </ul>
 </div>
 </body>


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