http://git-wip-us.apache.org/repos/asf/qpid-site/blob/1859e58c/content/releases/qpid-proton-0.17.0/proton/c/api/group__messenger.js
----------------------------------------------------------------------
diff --git 
a/content/releases/qpid-proton-0.17.0/proton/c/api/group__messenger.js 
b/content/releases/qpid-proton-0.17.0/proton/c/api/group__messenger.js
new file mode 100755
index 0000000..caef443
--- /dev/null
+++ b/content/releases/qpid-proton-0.17.0/proton/c/api/group__messenger.js
@@ -0,0 +1,81 @@
+var group__messenger =
+[
+    [ "PN_CUMULATIVE", 
"group__messenger.html#ga6c2e8d006ec05b913fa1e6dc510d23b9", null ],
+    [ "PN_FLAGS_ALLOW_INSECURE_MECHS", 
"group__messenger.html#ga118fb0c2384257dff5d72eea787e4a0c", null ],
+    [ "PN_FLAGS_CHECK_ROUTES", 
"group__messenger.html#gad5ad0b67fef0e761dc0138b9621ffa14", null ],
+    [ "pn_messenger_t", 
"group__messenger.html#ga0d342bb795d48591ad6b3f867766b8b1", null ],
+    [ "pn_subscription_t", 
"group__messenger.html#gabd73703511b9dae193765e9e57864291", null ],
+    [ "pn_tracker_t", 
"group__messenger.html#gab1173cfe4bcaa0a530c8035dc75f42c7", null ],
+    [ "pn_status_t", 
"group__messenger.html#ga242e4ee54b9c0a416443c7da5f6e045b", [
+      [ "PN_STATUS_UNKNOWN", 
"group__messenger.html#gga242e4ee54b9c0a416443c7da5f6e045ba0b46b1041679460baaba2ddcdb2173f2",
 null ],
+      [ "PN_STATUS_PENDING", 
"group__messenger.html#gga242e4ee54b9c0a416443c7da5f6e045ba4b0354a77173cd75c69159e15c23f611",
 null ],
+      [ "PN_STATUS_ACCEPTED", 
"group__messenger.html#gga242e4ee54b9c0a416443c7da5f6e045ba693fd9044a50a4f02e842d04a4bf1467",
 null ],
+      [ "PN_STATUS_REJECTED", 
"group__messenger.html#gga242e4ee54b9c0a416443c7da5f6e045baf109df703952744009b3547f3b8f32bf",
 null ],
+      [ "PN_STATUS_RELEASED", 
"group__messenger.html#gga242e4ee54b9c0a416443c7da5f6e045ba67079750477effb7935df83381c47852",
 null ],
+      [ "PN_STATUS_MODIFIED", 
"group__messenger.html#gga242e4ee54b9c0a416443c7da5f6e045ba77d94a6b6b745eef9307f144b57e81e8",
 null ],
+      [ "PN_STATUS_ABORTED", 
"group__messenger.html#gga242e4ee54b9c0a416443c7da5f6e045ba1239e8ada7eabe2aeab98f2c881cd2ee",
 null ],
+      [ "PN_STATUS_SETTLED", 
"group__messenger.html#gga242e4ee54b9c0a416443c7da5f6e045ba1181bc7f51502ae11ed240866cd64583",
 null ]
+    ] ],
+    [ "pn_messenger", 
"group__messenger.html#gabe045d16ca8eb1e3cc87387e2ae82433", null ],
+    [ "pn_messenger_accept", 
"group__messenger.html#ga11cd0d3423482e1ddda7a8b0cbb581c7", null ],
+    [ "pn_messenger_buffered", 
"group__messenger.html#ga15adeb707f15b86df1e5486c34a060e6", null ],
+    [ "pn_messenger_deadline", 
"group__messenger.html#ga223e7c16f3e84f4e573864c3881b3b4b", null ],
+    [ "pn_messenger_delivery", 
"group__messenger.html#ga65f22122f08bc93de2bfe155aa12d0b0", null ],
+    [ "pn_messenger_errno", 
"group__messenger.html#gacfd10311abca28521fe7aa9cabfff61c", null ],
+    [ "pn_messenger_error", 
"group__messenger.html#ga0301664be9c54b3a573578776ad2a5d2", null ],
+    [ "pn_messenger_free", 
"group__messenger.html#ga530295575eda95e3c19316d41bd1baa7", null ],
+    [ "pn_messenger_get", 
"group__messenger.html#gaa6d85929e4b4b574690927ddde00c540", null ],
+    [ "pn_messenger_get_certificate", 
"group__messenger.html#ga1d0c003a1fb5e20b894e2deb8b43118b", null ],
+    [ "pn_messenger_get_flags", 
"group__messenger.html#ga9f4e2fbfb7eb7bfd9acd7ad758d24085", null ],
+    [ "pn_messenger_get_incoming_window", 
"group__messenger.html#ga45d578f39673ad59ca65d2042054abee", null ],
+    [ "pn_messenger_get_link", 
"group__messenger.html#ga757aeef23d47ecc2a9a461b882686417", null ],
+    [ "pn_messenger_get_outgoing_window", 
"group__messenger.html#gac191bdb410b7839d6306a0d8e5ac19e1", null ],
+    [ "pn_messenger_get_password", 
"group__messenger.html#ga3f02ad7340a59c5982e6223aaeea803a", null ],
+    [ "pn_messenger_get_private_key", 
"group__messenger.html#gab692f989aed2aa83bd71b7fa7196aeb1", null ],
+    [ "pn_messenger_get_remote_idle_timeout", 
"group__messenger.html#ga9be25d57cda5a6e1c5658b0f362c41c7", null ],
+    [ "pn_messenger_get_timeout", 
"group__messenger.html#ga083ba6296a1ae1dfe45c0fb82da823eb", null ],
+    [ "pn_messenger_get_trusted_certificates", 
"group__messenger.html#ga955b218a8f58560e9e228ca14fba21f2", null ],
+    [ "pn_messenger_incoming", 
"group__messenger.html#ga43cf91b5528c2729b3ff9ae1d2a7d257", null ],
+    [ "pn_messenger_incoming_subscription", 
"group__messenger.html#gae351d031d2ef29bdb137a59d461c4253", null ],
+    [ "pn_messenger_incoming_tracker", 
"group__messenger.html#gafe31e771826f8107d93fc276c9715aab", null ],
+    [ "pn_messenger_interrupt", 
"group__messenger.html#ga9da14c67acc17bc5fec6f34e2749534f", null ],
+    [ "pn_messenger_is_blocking", 
"group__messenger.html#gaf572cbf224105d08898d2906336712f7", null ],
+    [ "pn_messenger_is_passive", 
"group__messenger.html#ga63805c35f18ef041c69a14564dc1bce4", null ],
+    [ "pn_messenger_name", 
"group__messenger.html#ga71197163a69770575df74e3cee617429", null ],
+    [ "pn_messenger_outgoing", 
"group__messenger.html#ga06c3a066422f8a966523b43a61f62eb9", null ],
+    [ "pn_messenger_outgoing_tracker", 
"group__messenger.html#ga0212b5cfe07a7f758ec472d67d0f56e1", null ],
+    [ "pn_messenger_put", 
"group__messenger.html#gafede68af29484d50d531cc48ab0d3d4a", null ],
+    [ "pn_messenger_receiving", 
"group__messenger.html#gaf4e22c8cb1436891d42ca0a658fca9c5", null ],
+    [ "pn_messenger_recv", 
"group__messenger.html#ga16c945185e4eb5dcb9aac2be2fcab0d6", null ],
+    [ "pn_messenger_reject", 
"group__messenger.html#ga22d6de108fa967a43ab2473d6a915e9c", null ],
+    [ "pn_messenger_rewrite", 
"group__messenger.html#gac7dc5d9b82f9e015fd2c7d9743099eff", null ],
+    [ "pn_messenger_route", 
"group__messenger.html#ga6c85a08d72ae73a18f9fb64ccf0c470e", null ],
+    [ "pn_messenger_selectable", 
"group__messenger.html#ga8521b0999200c076bf12568ac10fe925", null ],
+    [ "pn_messenger_send", 
"group__messenger.html#gae31f9a99dcbedffe83588cf25b805325", null ],
+    [ "pn_messenger_set_blocking", 
"group__messenger.html#gae9d7f1aec6e2cf3ef1ee326a4ae15981", null ],
+    [ "pn_messenger_set_certificate", 
"group__messenger.html#gad61fff52c28501171ecbb0b21bbde954", null ],
+    [ "pn_messenger_set_flags", 
"group__messenger.html#gacf39b77df62750343e2f4e90dbcacc75", null ],
+    [ "pn_messenger_set_incoming_window", 
"group__messenger.html#gadf8a9cf14bf8d519026ea8c4eeb275c3", null ],
+    [ "pn_messenger_set_outgoing_window", 
"group__messenger.html#ga96487581bd8348f8bc9bacef25042cfc", null ],
+    [ "pn_messenger_set_passive", 
"group__messenger.html#gac7df7c92396f10f105ec74d35310a7c0", null ],
+    [ "pn_messenger_set_password", 
"group__messenger.html#ga6b04f7dea2ed8752b8672b4cfe0330f2", null ],
+    [ "pn_messenger_set_private_key", 
"group__messenger.html#ga05f059a2fe93e0acbcf76e494e6bf958", null ],
+    [ "pn_messenger_set_rcv_settle_mode", 
"group__messenger.html#gae9f2d3ab15602b27f1b87a4f6349a9f1", null ],
+    [ "pn_messenger_set_snd_settle_mode", 
"group__messenger.html#ga7b0872d6712c53e307bf2babfd91bf6e", null ],
+    [ "pn_messenger_set_ssl_peer_authentication_mode", 
"group__messenger.html#ga59ebaf21eaafaa4b1c359e4284564ff6", null ],
+    [ "pn_messenger_set_timeout", 
"group__messenger.html#ga04119bb2b16bb0f657f1dbcf73827d74", null ],
+    [ "pn_messenger_set_tracer", 
"group__messenger.html#ga6c2cfb88f59980bb13821a6f25cf30f6", null ],
+    [ "pn_messenger_set_trusted_certificates", 
"group__messenger.html#gad901e92e2bee6d5371dcd3b1c8fe2c3b", null ],
+    [ "pn_messenger_settle", 
"group__messenger.html#ga475ce593f6b0c6025516ae48360dee4d", null ],
+    [ "pn_messenger_start", 
"group__messenger.html#ga6fa594235e316cd2a04b44b283194a43", null ],
+    [ "pn_messenger_status", 
"group__messenger.html#gad398544ad1374f67c922115ae1cceacc", null ],
+    [ "pn_messenger_stop", 
"group__messenger.html#gad95ab6daf6b2a61b79d5128a7d1d9f5c", null ],
+    [ "pn_messenger_stopped", 
"group__messenger.html#gae2c4765839c8fd09c0e01d05a118b6d4", null ],
+    [ "pn_messenger_subscribe", 
"group__messenger.html#gac36589fe5dc0378cf62558e40060a26f", null ],
+    [ "pn_messenger_subscribe_ttl", 
"group__messenger.html#ga480a8623fab904690218c0c67493232f", null ],
+    [ "pn_messenger_tracker_link", 
"group__messenger.html#gae4e5e89c6ea2a820a221af61cc741c7d", null ],
+    [ "pn_messenger_work", 
"group__messenger.html#ga47d60cec6a55e0675b8f073067eff9c4", null ],
+    [ "pn_subscription_address", 
"group__messenger.html#ga8e87c040776f1941f21d2c15f24b835e", null ],
+    [ "pn_subscription_get_context", 
"group__messenger.html#ga8ad0f0db6d7cfe0e95d44d433843d787", null ],
+    [ "pn_subscription_set_context", 
"group__messenger.html#ga3a7f95a2a86f64babe692d21ffe9cd10", null ]
+];
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/qpid-site/blob/1859e58c/content/releases/qpid-proton-0.17.0/proton/c/api/group__proactor.html
----------------------------------------------------------------------
diff --git 
a/content/releases/qpid-proton-0.17.0/proton/c/api/group__proactor.html 
b/content/releases/qpid-proton-0.17.0/proton/c/api/group__proactor.html
new file mode 100755
index 0000000..8323742
--- /dev/null
+++ b/content/releases/qpid-proton-0.17.0/proton/c/api/group__proactor.html
@@ -0,0 +1,523 @@
+<!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.3.1"/>
+<title>Qpid Proton C API: Proactor</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="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/search.js"></script>
+<script type="text/javascript">
+  $(document).ready(function() { searchBox.OnSelectItem(0); });
+</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 style="padding-left: 0.5em;">
+   <div id="projectname">Qpid Proton C API
+   &#160;<span id="projectnumber">0.17.0</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.3.1 -->
+<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('group__proactor.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)">
+<a class="SelectItem" href="javascript:void(0)" 
onclick="searchBox.OnSelectItem(0)"><span 
class="SelectionMark">&#160;</span>All</a><a class="SelectItem" 
href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span 
class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" 
href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span 
class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" 
href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span 
class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" 
href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span 
class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" 
href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span 
class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" 
href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span 
class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" 
href="javascript:vo
 id(0)" onclick="searchBox.OnSelectItem(7)"><span 
class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" 
href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span 
class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" 
href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span 
class="SelectionMark">&#160;</span>Pages</a></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="summary">
+<a href="#typedef-members">Typedefs</a> &#124;
+<a href="#func-members">Functions</a>  </div>
+  <div class="headertitle">
+<div class="title">Proactor<div class="ingroups"><a class="el" 
href="group__io.html">IO</a></div></div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p><b>Experimental</b> - Multithreaded IO  
+<a href="#details">More...</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a 
name="typedef-members"></a>
+Typedefs</h2></td></tr>
+<tr class="memitem:ga68ac7072ae60612d0bca5470014bf216"><td class="memItemLeft" 
align="right" valign="top"><a class="anchor" 
id="ga68ac7072ae60612d0bca5470014bf216"></a>
+typedef struct <a class="el" 
href="group__proactor.html#ga68ac7072ae60612d0bca5470014bf216">pn_listener_t</a>&#160;</td><td
 class="memItemRight" valign="bottom"><a class="el" 
href="group__proactor.html#ga68ac7072ae60612d0bca5470014bf216">pn_listener_t</a></td></tr>
+<tr class="memdesc:ga68ac7072ae60612d0bca5470014bf216"><td 
class="mdescLeft">&#160;</td><td class="mdescRight">A listener accepts 
connections. <br/></td></tr>
+<tr class="separator:ga68ac7072ae60612d0bca5470014bf216"><td 
class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gabba42c7929dfceb9d296535bad0c93dc"><td class="memItemLeft" 
align="right" valign="top"><a class="anchor" 
id="gabba42c7929dfceb9d296535bad0c93dc"></a>
+typedef struct <a class="el" 
href="group__proactor.html#gabba42c7929dfceb9d296535bad0c93dc">pn_proactor_t</a>&#160;</td><td
 class="memItemRight" valign="bottom"><a class="el" 
href="group__proactor.html#gabba42c7929dfceb9d296535bad0c93dc">pn_proactor_t</a></td></tr>
+<tr class="memdesc:gabba42c7929dfceb9d296535bad0c93dc"><td 
class="mdescLeft">&#160;</td><td class="mdescRight">The proactor, see <a 
class="el" href="group__proactor.html#ga9d77772be7805709c87eeb01b06d67e2" 
title="Create a proactor.">pn_proactor()</a> <br/></td></tr>
+<tr class="separator:gabba42c7929dfceb9d296535bad0c93dc"><td 
class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a 
name="func-members"></a>
+Functions</h2></td></tr>
+<tr class="memitem:gaaaf34821f3d29274ec41e7ce71022540"><td class="memItemLeft" 
align="right" valign="top"><a class="el" 
href="group__proactor.html#ga68ac7072ae60612d0bca5470014bf216">pn_listener_t</a>
 *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" 
href="group__proactor.html#gaaaf34821f3d29274ec41e7ce71022540">pn_listener</a> 
(void)</td></tr>
+<tr class="memdesc:gaaaf34821f3d29274ec41e7ce71022540"><td 
class="mdescLeft">&#160;</td><td class="mdescRight">Create a listener.  <a 
href="#gaaaf34821f3d29274ec41e7ce71022540">More...</a><br/></td></tr>
+<tr class="separator:gaaaf34821f3d29274ec41e7ce71022540"><td 
class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga76bcf4efdfa82fff28318e1afad083dc"><td class="memItemLeft" 
align="right" valign="top">int&#160;</td><td class="memItemRight" 
valign="bottom"><a class="el" 
href="group__proactor.html#ga76bcf4efdfa82fff28318e1afad083dc">pn_listener_accept</a>
 (<a class="el" 
href="group__proactor.html#ga68ac7072ae60612d0bca5470014bf216">pn_listener_t</a>
 *, <a class="el" 
href="group__connection.html#ga886351d81ff3a977a284a206526c5aff">pn_connection_t</a>
 *connection)</td></tr>
+<tr class="memdesc:ga76bcf4efdfa82fff28318e1afad083dc"><td 
class="mdescLeft">&#160;</td><td class="mdescRight">Asynchronously accept a 
connection using the listener.  <a 
href="#ga76bcf4efdfa82fff28318e1afad083dc">More...</a><br/></td></tr>
+<tr class="separator:ga76bcf4efdfa82fff28318e1afad083dc"><td 
class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga6dba0fded7ca1718397151c62e65535b"><td class="memItemLeft" 
align="right" valign="top"><a class="anchor" 
id="ga6dba0fded7ca1718397151c62e65535b"></a>
+<a class="el" 
href="group__condition.html#ga11eb7db7d2c205169fe3d47c996a95a5">pn_condition_t</a>
 *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" 
href="group__proactor.html#ga6dba0fded7ca1718397151c62e65535b">pn_listener_condition</a>
 (<a class="el" 
href="group__proactor.html#ga68ac7072ae60612d0bca5470014bf216">pn_listener_t</a>
 *l)</td></tr>
+<tr class="memdesc:ga6dba0fded7ca1718397151c62e65535b"><td 
class="mdescLeft">&#160;</td><td class="mdescRight">Get the error condition for 
a listener. <br/></td></tr>
+<tr class="separator:ga6dba0fded7ca1718397151c62e65535b"><td 
class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga471e37ae503bf6b2635b7f5f5c2d88bf"><td class="memItemLeft" 
align="right" valign="top"><a class="anchor" 
id="ga471e37ae503bf6b2635b7f5f5c2d88bf"></a>
+pn_record_t *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" 
href="group__proactor.html#ga471e37ae503bf6b2635b7f5f5c2d88bf">pn_listener_attachments</a>
 (<a class="el" 
href="group__proactor.html#ga68ac7072ae60612d0bca5470014bf216">pn_listener_t</a>
 *listener)</td></tr>
+<tr class="memdesc:ga471e37ae503bf6b2635b7f5f5c2d88bf"><td 
class="mdescLeft">&#160;</td><td class="mdescRight">Get the attachments that 
are associated with a listener object. <br/></td></tr>
+<tr class="separator:ga471e37ae503bf6b2635b7f5f5c2d88bf"><td 
class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga5690239e2a4f97e3ebbccb25fde75d81"><td class="memItemLeft" 
align="right" valign="top"><a class="anchor" 
id="ga5690239e2a4f97e3ebbccb25fde75d81"></a>
+void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" 
href="group__proactor.html#ga5690239e2a4f97e3ebbccb25fde75d81">pn_listener_close</a>
 (<a class="el" 
href="group__proactor.html#ga68ac7072ae60612d0bca5470014bf216">pn_listener_t</a>
 *l)</td></tr>
+<tr class="memdesc:ga5690239e2a4f97e3ebbccb25fde75d81"><td 
class="mdescLeft">&#160;</td><td class="mdescRight">Close the listener (thread 
safe). <br/></td></tr>
+<tr class="separator:ga5690239e2a4f97e3ebbccb25fde75d81"><td 
class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga491561209bfe8934141015c1dd922a4f"><td class="memItemLeft" 
align="right" valign="top"><a class="anchor" 
id="ga491561209bfe8934141015c1dd922a4f"></a>
+<a class="el" 
href="group__proactor.html#gabba42c7929dfceb9d296535bad0c93dc">pn_proactor_t</a>
 *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" 
href="group__proactor.html#ga491561209bfe8934141015c1dd922a4f">pn_listener_proactor</a>
 (<a class="el" 
href="group__proactor.html#ga68ac7072ae60612d0bca5470014bf216">pn_listener_t</a>
 *c)</td></tr>
+<tr class="memdesc:ga491561209bfe8934141015c1dd922a4f"><td 
class="mdescLeft">&#160;</td><td class="mdescRight">The proactor associated 
with a listener. <br/></td></tr>
+<tr class="separator:ga491561209bfe8934141015c1dd922a4f"><td 
class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga9d77772be7805709c87eeb01b06d67e2"><td class="memItemLeft" 
align="right" valign="top"><a class="el" 
href="group__proactor.html#gabba42c7929dfceb9d296535bad0c93dc">pn_proactor_t</a>
 *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" 
href="group__proactor.html#ga9d77772be7805709c87eeb01b06d67e2">pn_proactor</a> 
(void)</td></tr>
+<tr class="memdesc:ga9d77772be7805709c87eeb01b06d67e2"><td 
class="mdescLeft">&#160;</td><td class="mdescRight">Create a proactor.  <a 
href="#ga9d77772be7805709c87eeb01b06d67e2">More...</a><br/></td></tr>
+<tr class="separator:ga9d77772be7805709c87eeb01b06d67e2"><td 
class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga10fa443c109cee057a3c30e69f93fcef"><td class="memItemLeft" 
align="right" valign="top">void&#160;</td><td class="memItemRight" 
valign="bottom"><a class="el" 
href="group__proactor.html#ga10fa443c109cee057a3c30e69f93fcef">pn_proactor_free</a>
 (<a class="el" 
href="group__proactor.html#gabba42c7929dfceb9d296535bad0c93dc">pn_proactor_t</a>
 *proactor)</td></tr>
+<tr class="memdesc:ga10fa443c109cee057a3c30e69f93fcef"><td 
class="mdescLeft">&#160;</td><td class="mdescRight">Free the proactor.  <a 
href="#ga10fa443c109cee057a3c30e69f93fcef">More...</a><br/></td></tr>
+<tr class="separator:ga10fa443c109cee057a3c30e69f93fcef"><td 
class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga523ea983380a1566b3b1a7606d66422c"><td class="memItemLeft" 
align="right" valign="top">int&#160;</td><td class="memItemRight" 
valign="bottom"><a class="el" 
href="group__proactor.html#ga523ea983380a1566b3b1a7606d66422c">pn_proactor_connect</a>
 (<a class="el" 
href="group__proactor.html#gabba42c7929dfceb9d296535bad0c93dc">pn_proactor_t</a>
 *proactor, <a class="el" 
href="group__connection.html#ga886351d81ff3a977a284a206526c5aff">pn_connection_t</a>
 *connection, const char *host, const char *port)</td></tr>
+<tr class="memdesc:ga523ea983380a1566b3b1a7606d66422c"><td 
class="mdescLeft">&#160;</td><td class="mdescRight">Connect connection to 
host/port.  <a 
href="#ga523ea983380a1566b3b1a7606d66422c">More...</a><br/></td></tr>
+<tr class="separator:ga523ea983380a1566b3b1a7606d66422c"><td 
class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga68300a70c58a825564d5b4ee5d147696"><td class="memItemLeft" 
align="right" valign="top">int&#160;</td><td class="memItemRight" 
valign="bottom"><a class="el" 
href="group__proactor.html#ga68300a70c58a825564d5b4ee5d147696">pn_proactor_listen</a>
 (<a class="el" 
href="group__proactor.html#gabba42c7929dfceb9d296535bad0c93dc">pn_proactor_t</a>
 *proactor, <a class="el" 
href="group__proactor.html#ga68ac7072ae60612d0bca5470014bf216">pn_listener_t</a>
 *listener, const char *host, const char *port, int backlog)</td></tr>
+<tr class="memdesc:ga68300a70c58a825564d5b4ee5d147696"><td 
class="mdescLeft">&#160;</td><td class="mdescRight">Start listening with 
listener.  <a 
href="#ga68300a70c58a825564d5b4ee5d147696">More...</a><br/></td></tr>
+<tr class="separator:ga68300a70c58a825564d5b4ee5d147696"><td 
class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga56f5830965c20d3dbfc63e795eb243c4"><td class="memItemLeft" 
align="right" valign="top"><a class="el" 
href="group__event.html#ga6bc581dfeaa8e8d46d07d37229d565c9">pn_event_batch_t</a>
 *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" 
href="group__proactor.html#ga56f5830965c20d3dbfc63e795eb243c4">pn_proactor_wait</a>
 (<a class="el" 
href="group__proactor.html#gabba42c7929dfceb9d296535bad0c93dc">pn_proactor_t</a>
 *proactor)</td></tr>
+<tr class="memdesc:ga56f5830965c20d3dbfc63e795eb243c4"><td 
class="mdescLeft">&#160;</td><td class="mdescRight">Wait for events to handle.  
<a href="#ga56f5830965c20d3dbfc63e795eb243c4">More...</a><br/></td></tr>
+<tr class="separator:ga56f5830965c20d3dbfc63e795eb243c4"><td 
class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gab45680de5c02690a1f1ad1a3c70e9d65"><td class="memItemLeft" 
align="right" valign="top">void&#160;</td><td class="memItemRight" 
valign="bottom"><a class="el" 
href="group__proactor.html#gab45680de5c02690a1f1ad1a3c70e9d65">pn_proactor_done</a>
 (<a class="el" 
href="group__proactor.html#gabba42c7929dfceb9d296535bad0c93dc">pn_proactor_t</a>
 *proactor, <a class="el" 
href="group__event.html#ga6bc581dfeaa8e8d46d07d37229d565c9">pn_event_batch_t</a>
 *events)</td></tr>
+<tr class="memdesc:gab45680de5c02690a1f1ad1a3c70e9d65"><td 
class="mdescLeft">&#160;</td><td class="mdescRight">Call when done handling a 
batch of events.  <a 
href="#gab45680de5c02690a1f1ad1a3c70e9d65">More...</a><br/></td></tr>
+<tr class="separator:gab45680de5c02690a1f1ad1a3c70e9d65"><td 
class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaff37a5b9d3d822ad9a961dae5155ebdb"><td class="memItemLeft" 
align="right" valign="top">void&#160;</td><td class="memItemRight" 
valign="bottom"><a class="el" 
href="group__proactor.html#gaff37a5b9d3d822ad9a961dae5155ebdb">pn_proactor_interrupt</a>
 (<a class="el" 
href="group__proactor.html#gabba42c7929dfceb9d296535bad0c93dc">pn_proactor_t</a>
 *proactor)</td></tr>
+<tr class="memdesc:gaff37a5b9d3d822ad9a961dae5155ebdb"><td 
class="mdescLeft">&#160;</td><td class="mdescRight">Cause PN_PROACTOR_INTERRUPT 
to be returned to exactly one call of <a class="el" 
href="group__proactor.html#ga56f5830965c20d3dbfc63e795eb243c4" title="Wait for 
events to handle.">pn_proactor_wait()</a>.  <a 
href="#gaff37a5b9d3d822ad9a961dae5155ebdb">More...</a><br/></td></tr>
+<tr class="separator:gaff37a5b9d3d822ad9a961dae5155ebdb"><td 
class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga8428d00193008841e529aae6a922fa5f"><td class="memItemLeft" 
align="right" valign="top">void&#160;</td><td class="memItemRight" 
valign="bottom"><a class="el" 
href="group__proactor.html#ga8428d00193008841e529aae6a922fa5f">pn_proactor_set_timeout</a>
 (<a class="el" 
href="group__proactor.html#gabba42c7929dfceb9d296535bad0c93dc">pn_proactor_t</a>
 *proactor, <a class="el" 
href="group__api__types.html#ga9a701bc6dc9af9f42c3f4679172a723c">pn_millis_t</a>
 timeout)</td></tr>
+<tr class="memdesc:ga8428d00193008841e529aae6a922fa5f"><td 
class="mdescLeft">&#160;</td><td class="mdescRight">Cause PN_PROACTOR_TIMEOUT 
to be returned to a thread calling wait() after timeout milliseconds.  <a 
href="#ga8428d00193008841e529aae6a922fa5f">More...</a><br/></td></tr>
+<tr class="separator:ga8428d00193008841e529aae6a922fa5f"><td 
class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga2e5c9fddae8d7aa07fc93438c5ae2d86"><td class="memItemLeft" 
align="right" valign="top">void&#160;</td><td class="memItemRight" 
valign="bottom"><a class="el" 
href="group__proactor.html#ga2e5c9fddae8d7aa07fc93438c5ae2d86">pn_connection_wake</a>
 (<a class="el" 
href="group__connection.html#ga886351d81ff3a977a284a206526c5aff">pn_connection_t</a>
 *connection)</td></tr>
+<tr class="memdesc:ga2e5c9fddae8d7aa07fc93438c5ae2d86"><td 
class="mdescLeft">&#160;</td><td class="mdescRight">Cause a PN_CONNECTION_WAKE 
event to be returned by the proactor, even if there are no IO events pending 
for the connection.  <a 
href="#ga2e5c9fddae8d7aa07fc93438c5ae2d86">More...</a><br/></td></tr>
+<tr class="separator:ga2e5c9fddae8d7aa07fc93438c5ae2d86"><td 
class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga0daf3895a13049783ab1dc40f3ac46b8"><td class="memItemLeft" 
align="right" valign="top"><a class="anchor" 
id="ga0daf3895a13049783ab1dc40f3ac46b8"></a>
+<a class="el" 
href="group__proactor.html#gabba42c7929dfceb9d296535bad0c93dc">pn_proactor_t</a>
 *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" 
href="group__proactor.html#ga0daf3895a13049783ab1dc40f3ac46b8">pn_connection_proactor</a>
 (<a class="el" 
href="group__connection.html#ga886351d81ff3a977a284a206526c5aff">pn_connection_t</a>
 *connection)</td></tr>
+<tr class="memdesc:ga0daf3895a13049783ab1dc40f3ac46b8"><td 
class="mdescLeft">&#160;</td><td class="mdescRight">Return the proactor 
associated with a connection or NULL. <br/></td></tr>
+<tr class="separator:ga0daf3895a13049783ab1dc40f3ac46b8"><td 
class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga01e9b1cf8e0ff18cd4a2d6ed0e73a25a"><td class="memItemLeft" 
align="right" valign="top"><a class="anchor" 
id="ga01e9b1cf8e0ff18cd4a2d6ed0e73a25a"></a>
+<a class="el" 
href="group__proactor.html#gabba42c7929dfceb9d296535bad0c93dc">pn_proactor_t</a>
 *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" 
href="group__proactor.html#ga01e9b1cf8e0ff18cd4a2d6ed0e73a25a">pn_event_proactor</a>
 (<a class="el" 
href="group__event.html#ga87f3028b4888632bbd56fb71ac737ae8">pn_event_t</a> 
*event)</td></tr>
+<tr class="memdesc:ga01e9b1cf8e0ff18cd4a2d6ed0e73a25a"><td 
class="mdescLeft">&#160;</td><td class="mdescRight">Return the proactor 
associated with an event or NULL. <br/></td></tr>
+<tr class="separator:ga01e9b1cf8e0ff18cd4a2d6ed0e73a25a"><td 
class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gad9ea34f659b8bd2d0089fb43fa468300"><td class="memItemLeft" 
align="right" valign="top"><a class="anchor" 
id="gad9ea34f659b8bd2d0089fb43fa468300"></a>
+<a class="el" 
href="group__proactor.html#ga68ac7072ae60612d0bca5470014bf216">pn_listener_t</a>
 *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" 
href="group__proactor.html#gad9ea34f659b8bd2d0089fb43fa468300">pn_event_listener</a>
 (<a class="el" 
href="group__event.html#ga87f3028b4888632bbd56fb71ac737ae8">pn_event_t</a> 
*event)</td></tr>
+<tr class="memdesc:gad9ea34f659b8bd2d0089fb43fa468300"><td 
class="mdescLeft">&#160;</td><td class="mdescRight">Return the listener 
associated with an event or NULL. <br/></td></tr>
+<tr class="separator:gad9ea34f659b8bd2d0089fb43fa468300"><td 
class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed 
Description</h2>
+<p><b>Experimental</b> - Multithreaded IO </p>
+<h2 class="groupheader">Function Documentation</h2>
+<a class="anchor" id="ga2e5c9fddae8d7aa07fc93438c5ae2d86"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void pn_connection_wake </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" 
href="group__connection.html#ga886351d81ff3a977a284a206526c5aff">pn_connection_t</a>
 *&#160;</td>
+          <td class="paramname"><em>connection</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Cause a PN_CONNECTION_WAKE event to be returned by the proactor, even if 
there are no IO events pending for the connection. </p>
+<dl class="section note"><dt>Note</dt><dd>Thread-safe: this is the only 
pn_connection_ function that can be called concurrently.</dd></dl>
+<p>Wakes can be "coalesced" - if several <a class="el" 
href="group__proactor.html#ga2e5c9fddae8d7aa07fc93438c5ae2d86" title="Cause a 
PN_CONNECTION_WAKE event to be returned by the proactor, even if there are no 
IO events pendi...">pn_connection_wake()</a> calls happen concurrently, there 
may be only one PN_CONNECTION_WAKE event. </p>
+<dl><dt><b>Examples: </b></dt><dd><a class="el" 
href="broker_8c-example.html#a13">broker.c</a>, and <a class="el" 
href="send_8c-example.html#a45">send.c</a>.</dd>
+</dl>
+</div>
+</div>
+<a class="anchor" id="gaaaf34821f3d29274ec41e7ce71022540"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" 
href="group__proactor.html#ga68ac7072ae60612d0bca5470014bf216">pn_listener_t</a>*
 pn_listener </td>
+          <td>(</td>
+          <td class="paramtype">void&#160;</td>
+          <td class="paramname"></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Create a listener. </p>
+<p>You can use pn_listener_set_context() or <a class="el" 
href="group__proactor.html#ga471e37ae503bf6b2635b7f5f5c2d88bf" title="Get the 
attachments that are associated with a listener 
object.">pn_listener_attachments()</a> to set application data that can be 
accessed when accepting connections.</p>
+<p>You must pass the returned listener to <a class="el" 
href="group__proactor.html#ga68300a70c58a825564d5b4ee5d147696" title="Start 
listening with listener.">pn_proactor_listen()</a>, the proactor will free the 
listener when it is no longer active. </p>
+<dl><dt><b>Examples: </b></dt><dd><a class="el" 
href="broker_8c-example.html#a90">broker.c</a>.</dd>
+</dl>
+</div>
+</div>
+<a class="anchor" id="ga76bcf4efdfa82fff28318e1afad083dc"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int pn_listener_accept </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" 
href="group__proactor.html#ga68ac7072ae60612d0bca5470014bf216">pn_listener_t</a>
 *&#160;</td>
+          <td class="paramname">, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" 
href="group__connection.html#ga886351d81ff3a977a284a206526c5aff">pn_connection_t</a>
 *&#160;</td>
+          <td class="paramname"><em>connection</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Asynchronously accept a connection using the listener. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramdir">[in]</td><td 
class="paramname">connection</td><td>the listener takes ownership, do not free. 
</td></tr>
+  </table>
+  </dd>
+</dl>
+<dl><dt><b>Examples: </b></dt><dd><a class="el" 
href="broker_8c-example.html#a29">broker.c</a>.</dd>
+</dl>
+</div>
+</div>
+<a class="anchor" id="ga9d77772be7805709c87eeb01b06d67e2"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" 
href="group__proactor.html#gabba42c7929dfceb9d296535bad0c93dc">pn_proactor_t</a>*
 pn_proactor </td>
+          <td>(</td>
+          <td class="paramtype">void&#160;</td>
+          <td class="paramname"></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Create a proactor. </p>
+<p>Must be freed with <a class="el" 
href="group__proactor.html#ga10fa443c109cee057a3c30e69f93fcef" title="Free the 
proactor.">pn_proactor_free()</a> </p>
+<dl><dt><b>Examples: </b></dt><dd><a class="el" 
href="broker_8c-example.html#a14">broker.c</a>, <a class="el" 
href="receive_8c-example.html#a53">receive.c</a>, and <a class="el" 
href="send_8c-example.html#a67">send.c</a>.</dd>
+</dl>
+</div>
+</div>
+<a class="anchor" id="ga523ea983380a1566b3b1a7606d66422c"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int pn_proactor_connect </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" 
href="group__proactor.html#gabba42c7929dfceb9d296535bad0c93dc">pn_proactor_t</a>
 *&#160;</td>
+          <td class="paramname"><em>proactor</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" 
href="group__connection.html#ga886351d81ff3a977a284a206526c5aff">pn_connection_t</a>
 *&#160;</td>
+          <td class="paramname"><em>connection</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char *&#160;</td>
+          <td class="paramname"><em>host</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char *&#160;</td>
+          <td class="paramname"><em>port</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Connect connection to host/port. </p>
+<p>Connection and transport events will be returned by <a class="el" 
href="group__proactor.html#ga56f5830965c20d3dbfc63e795eb243c4" title="Wait for 
events to handle.">pn_proactor_wait()</a></p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramdir">[in]</td><td 
class="paramname">proactor</td><td>the proactor object </td></tr>
+    <tr><td class="paramdir">[in]</td><td 
class="paramname">connection</td><td>the proactor takes ownership, do not free 
</td></tr>
+    <tr><td class="paramdir">[in]</td><td 
class="paramname">host</td><td>address to connect on </td></tr>
+    <tr><td class="paramdir">[in]</td><td class="paramname">port</td><td>port 
to connect to</td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>error on immediate error, e.g. 
an allocation failure. Other errors are indicated by connection or transport 
events via <a class="el" 
href="group__proactor.html#ga56f5830965c20d3dbfc63e795eb243c4" title="Wait for 
events to handle.">pn_proactor_wait()</a> </dd></dl>
+<dl><dt><b>Examples: </b></dt><dd><a class="el" 
href="receive_8c-example.html#a54">receive.c</a>, and <a class="el" 
href="send_8c-example.html#a68">send.c</a>.</dd>
+</dl>
+</div>
+</div>
+<a class="anchor" id="gab45680de5c02690a1f1ad1a3c70e9d65"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void pn_proactor_done </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" 
href="group__proactor.html#gabba42c7929dfceb9d296535bad0c93dc">pn_proactor_t</a>
 *&#160;</td>
+          <td class="paramname"><em>proactor</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" 
href="group__event.html#ga6bc581dfeaa8e8d46d07d37229d565c9">pn_event_batch_t</a>
 *&#160;</td>
+          <td class="paramname"><em>events</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Call when done handling a batch of events. </p>
+<p>Must be called exactly once to match each call to <a class="el" 
href="group__proactor.html#ga56f5830965c20d3dbfc63e795eb243c4" title="Wait for 
events to handle.">pn_proactor_wait()</a>.</p>
+<dl class="section note"><dt>Note</dt><dd>Thread-safe: may be called from any 
thread provided the exactly once rule is respected. </dd></dl>
+<dl><dt><b>Examples: </b></dt><dd><a class="el" 
href="broker_8c-example.html#a87">broker.c</a>, <a class="el" 
href="receive_8c-example.html#a59">receive.c</a>, and <a class="el" 
href="send_8c-example.html#a73">send.c</a>.</dd>
+</dl>
+</div>
+</div>
+<a class="anchor" id="ga10fa443c109cee057a3c30e69f93fcef"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void pn_proactor_free </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" 
href="group__proactor.html#gabba42c7929dfceb9d296535bad0c93dc">pn_proactor_t</a>
 *&#160;</td>
+          <td class="paramname"><em>proactor</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Free the proactor. </p>
+<p>Abort any open network connections and clean up all associated resources. 
</p>
+<dl><dt><b>Examples: </b></dt><dd><a class="el" 
href="broker_8c-example.html#a92">broker.c</a>, <a class="el" 
href="receive_8c-example.html#a60">receive.c</a>, and <a class="el" 
href="send_8c-example.html#a74">send.c</a>.</dd>
+</dl>
+</div>
+</div>
+<a class="anchor" id="gaff37a5b9d3d822ad9a961dae5155ebdb"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void pn_proactor_interrupt </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" 
href="group__proactor.html#gabba42c7929dfceb9d296535bad0c93dc">pn_proactor_t</a>
 *&#160;</td>
+          <td class="paramname"><em>proactor</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Cause PN_PROACTOR_INTERRUPT to be returned to exactly one call of <a 
class="el" href="group__proactor.html#ga56f5830965c20d3dbfc63e795eb243c4" 
title="Wait for events to handle.">pn_proactor_wait()</a>. </p>
+<p>If threads are blocked in <a class="el" 
href="group__proactor.html#ga56f5830965c20d3dbfc63e795eb243c4" title="Wait for 
events to handle.">pn_proactor_wait()</a>, one of them will be interrupted, 
otherwise the interrupt will be returned by a future call to <a class="el" 
href="group__proactor.html#ga56f5830965c20d3dbfc63e795eb243c4" title="Wait for 
events to handle.">pn_proactor_wait()</a>. Calling <a class="el" 
href="group__proactor.html#gaff37a5b9d3d822ad9a961dae5155ebdb" title="Cause 
PN_PROACTOR_INTERRUPT to be returned to exactly one call of 
pn_proactor_wait().">pn_proactor_interrupt()</a> N times will return 
PN_PROACTOR_INTERRUPT to N current or future calls of <a class="el" 
href="group__proactor.html#ga56f5830965c20d3dbfc63e795eb243c4" title="Wait for 
events to handle.">pn_proactor_wait()</a></p>
+<dl class="section note"><dt>Note</dt><dd>Thread-safe. </dd></dl>
+<dl><dt><b>Examples: </b></dt><dd><a class="el" 
href="broker_8c-example.html#a15">broker.c</a>.</dd>
+</dl>
+</div>
+</div>
+<a class="anchor" id="ga68300a70c58a825564d5b4ee5d147696"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int pn_proactor_listen </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" 
href="group__proactor.html#gabba42c7929dfceb9d296535bad0c93dc">pn_proactor_t</a>
 *&#160;</td>
+          <td class="paramname"><em>proactor</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" 
href="group__proactor.html#ga68ac7072ae60612d0bca5470014bf216">pn_listener_t</a>
 *&#160;</td>
+          <td class="paramname"><em>listener</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char *&#160;</td>
+          <td class="paramname"><em>host</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char *&#160;</td>
+          <td class="paramname"><em>port</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int&#160;</td>
+          <td class="paramname"><em>backlog</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Start listening with listener. </p>
+<p><a class="el" 
href="group__proactor.html#ga56f5830965c20d3dbfc63e795eb243c4" title="Wait for 
events to handle.">pn_proactor_wait()</a> will return a PN_LISTENER_ACCEPT 
event when a connection can be accepted.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramdir">[in]</td><td 
class="paramname">proactor</td><td>the proactor object </td></tr>
+    <tr><td class="paramdir">[in]</td><td 
class="paramname">listener</td><td>proactor takes ownership of listener, do not 
free </td></tr>
+    <tr><td class="paramdir">[in]</td><td 
class="paramname">host</td><td>address to listen on </td></tr>
+    <tr><td class="paramdir">[in]</td><td class="paramname">port</td><td>port 
to listen on </td></tr>
+    <tr><td class="paramdir">[in]</td><td 
class="paramname">backlog</td><td>number of connection requests to 
queue</td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>error on immediate error, e.g. 
an allocation failure. Other errors are indicated by <a class="el" 
href="group__proactor.html#ga6dba0fded7ca1718397151c62e65535b" title="Get the 
error condition for a listener.">pn_listener_condition()</a> on the 
PN_LISTENER_CLOSE event. </dd></dl>
+<dl><dt><b>Examples: </b></dt><dd><a class="el" 
href="broker_8c-example.html#a89">broker.c</a>.</dd>
+</dl>
+</div>
+</div>
+<a class="anchor" id="ga8428d00193008841e529aae6a922fa5f"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void pn_proactor_set_timeout </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" 
href="group__proactor.html#gabba42c7929dfceb9d296535bad0c93dc">pn_proactor_t</a>
 *&#160;</td>
+          <td class="paramname"><em>proactor</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" 
href="group__api__types.html#ga9a701bc6dc9af9f42c3f4679172a723c">pn_millis_t</a>&#160;</td>
+          <td class="paramname"><em>timeout</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Cause PN_PROACTOR_TIMEOUT to be returned to a thread calling wait() after 
timeout milliseconds. </p>
+<p>Thread-safe.</p>
+<p>Note that calling <a class="el" 
href="group__proactor.html#ga8428d00193008841e529aae6a922fa5f" title="Cause 
PN_PROACTOR_TIMEOUT to be returned to a thread calling wait() after timeout 
milliseconds...">pn_proactor_set_timeout()</a> again before the 
PN_PROACTOR_TIMEOUT is delivered will cancel the previous timeout and deliver 
an event only after the new timeout. <code>pn_proactor_set_timeout(0)</code> 
will cancel the timeout without setting a new one. </p>
+<dl><dt><b>Examples: </b></dt><dd><a class="el" 
href="send_8c-example.html#a31">send.c</a>.</dd>
+</dl>
+</div>
+</div>
+<a class="anchor" id="ga56f5830965c20d3dbfc63e795eb243c4"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" 
href="group__event.html#ga6bc581dfeaa8e8d46d07d37229d565c9">pn_event_batch_t</a>*
 pn_proactor_wait </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" 
href="group__proactor.html#gabba42c7929dfceb9d296535bad0c93dc">pn_proactor_t</a>
 *&#160;</td>
+          <td class="paramname"><em>proactor</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Wait for events to handle. </p>
+<p>Handle events in the returned batch by calling <a class="el" 
href="group__event.html#gac3fbf151357d3101ac294cb675348c76" title="Experimental 
- Remove the next event from the batch and return 
it.">pn_event_batch_next()</a> until it returns NULL. You must call <a 
class="el" href="group__proactor.html#gab45680de5c02690a1f1ad1a3c70e9d65" 
title="Call when done handling a batch of events.">pn_proactor_done()</a> when 
you are finished with the batch.</p>
+<p>If you call <a class="el" 
href="group__proactor.html#gab45680de5c02690a1f1ad1a3c70e9d65" title="Call when 
done handling a batch of events.">pn_proactor_done()</a> before finishing the 
batch, the remaining events will be returned again by another call <a 
class="el" href="group__proactor.html#ga56f5830965c20d3dbfc63e795eb243c4" 
title="Wait for events to handle.">pn_proactor_wait()</a>. This is less 
efficient, but allows you to handle part of a batch and then hand off the rest 
to another thread.</p>
+<dl class="section note"><dt>Note</dt><dd>Thread-safe: can be called 
concurrently. Events in a single batch must be handled in sequence, but batches 
returned by separate calls to <a class="el" 
href="group__proactor.html#ga56f5830965c20d3dbfc63e795eb243c4" title="Wait for 
events to handle.">pn_proactor_wait()</a> can be handled concurrently. 
</dd></dl>
+<dl><dt><b>Examples: </b></dt><dd><a class="el" 
href="broker_8c-example.html#a85">broker.c</a>, <a class="el" 
href="receive_8c-example.html#a57">receive.c</a>, and <a class="el" 
href="send_8c-example.html#a71">send.c</a>.</dd>
+</dl>
+</div>
+</div>
+</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.3.1 </li>
+  </ul>
+</div>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/qpid-site/blob/1859e58c/content/releases/qpid-proton-0.17.0/proton/c/api/group__proactor.js
----------------------------------------------------------------------
diff --git 
a/content/releases/qpid-proton-0.17.0/proton/c/api/group__proactor.js 
b/content/releases/qpid-proton-0.17.0/proton/c/api/group__proactor.js
new file mode 100755
index 0000000..bef8b32
--- /dev/null
+++ b/content/releases/qpid-proton-0.17.0/proton/c/api/group__proactor.js
@@ -0,0 +1,23 @@
+var group__proactor =
+[
+    [ "pn_listener_t", 
"group__proactor.html#ga68ac7072ae60612d0bca5470014bf216", null ],
+    [ "pn_proactor_t", 
"group__proactor.html#gabba42c7929dfceb9d296535bad0c93dc", null ],
+    [ "pn_connection_proactor", 
"group__proactor.html#ga0daf3895a13049783ab1dc40f3ac46b8", null ],
+    [ "pn_connection_wake", 
"group__proactor.html#ga2e5c9fddae8d7aa07fc93438c5ae2d86", null ],
+    [ "pn_event_listener", 
"group__proactor.html#gad9ea34f659b8bd2d0089fb43fa468300", null ],
+    [ "pn_event_proactor", 
"group__proactor.html#ga01e9b1cf8e0ff18cd4a2d6ed0e73a25a", null ],
+    [ "pn_listener", 
"group__proactor.html#gaaaf34821f3d29274ec41e7ce71022540", null ],
+    [ "pn_listener_accept", 
"group__proactor.html#ga76bcf4efdfa82fff28318e1afad083dc", null ],
+    [ "pn_listener_attachments", 
"group__proactor.html#ga471e37ae503bf6b2635b7f5f5c2d88bf", null ],
+    [ "pn_listener_close", 
"group__proactor.html#ga5690239e2a4f97e3ebbccb25fde75d81", null ],
+    [ "pn_listener_condition", 
"group__proactor.html#ga6dba0fded7ca1718397151c62e65535b", null ],
+    [ "pn_listener_proactor", 
"group__proactor.html#ga491561209bfe8934141015c1dd922a4f", null ],
+    [ "pn_proactor", 
"group__proactor.html#ga9d77772be7805709c87eeb01b06d67e2", null ],
+    [ "pn_proactor_connect", 
"group__proactor.html#ga523ea983380a1566b3b1a7606d66422c", null ],
+    [ "pn_proactor_done", 
"group__proactor.html#gab45680de5c02690a1f1ad1a3c70e9d65", null ],
+    [ "pn_proactor_free", 
"group__proactor.html#ga10fa443c109cee057a3c30e69f93fcef", null ],
+    [ "pn_proactor_interrupt", 
"group__proactor.html#gaff37a5b9d3d822ad9a961dae5155ebdb", null ],
+    [ "pn_proactor_listen", 
"group__proactor.html#ga68300a70c58a825564d5b4ee5d147696", null ],
+    [ "pn_proactor_set_timeout", 
"group__proactor.html#ga8428d00193008841e529aae6a922fa5f", null ],
+    [ "pn_proactor_wait", 
"group__proactor.html#ga56f5830965c20d3dbfc63e795eb243c4", null ]
+];
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/qpid-site/blob/1859e58c/content/releases/qpid-proton-0.17.0/proton/c/api/group__sasl.html
----------------------------------------------------------------------
diff --git a/content/releases/qpid-proton-0.17.0/proton/c/api/group__sasl.html 
b/content/releases/qpid-proton-0.17.0/proton/c/api/group__sasl.html
new file mode 100755
index 0000000..223c584
--- /dev/null
+++ b/content/releases/qpid-proton-0.17.0/proton/c/api/group__sasl.html
@@ -0,0 +1,538 @@
+<!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.3.1"/>
+<title>Qpid Proton C API: SASL</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="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/search.js"></script>
+<script type="text/javascript">
+  $(document).ready(function() { searchBox.OnSelectItem(0); });
+</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 style="padding-left: 0.5em;">
+   <div id="projectname">Qpid Proton C API
+   &#160;<span id="projectnumber">0.17.0</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.3.1 -->
+<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('group__sasl.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)">
+<a class="SelectItem" href="javascript:void(0)" 
onclick="searchBox.OnSelectItem(0)"><span 
class="SelectionMark">&#160;</span>All</a><a class="SelectItem" 
href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span 
class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" 
href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span 
class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" 
href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span 
class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" 
href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span 
class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" 
href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span 
class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" 
href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span 
class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" 
href="javascript:vo
 id(0)" onclick="searchBox.OnSelectItem(7)"><span 
class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" 
href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span 
class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" 
href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span 
class="SelectionMark">&#160;</span>Pages</a></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="summary">
+<a href="#typedef-members">Typedefs</a> &#124;
+<a href="#enum-members">Enumerations</a> &#124;
+<a href="#func-members">Functions</a>  </div>
+  <div class="headertitle">
+<div class="title">SASL<div class="ingroups"><a class="el" 
href="group__core.html">Core</a></div></div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p>SASL secure transport layer.  
+<a href="#details">More...</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a 
name="typedef-members"></a>
+Typedefs</h2></td></tr>
+<tr class="memitem:ga4d21fddba80d3f88d0529aafe12328b0"><td class="memItemLeft" 
align="right" valign="top">typedef struct <a class="el" 
href="group__sasl.html#ga4d21fddba80d3f88d0529aafe12328b0">pn_sasl_t</a>&#160;</td><td
 class="memItemRight" valign="bottom"><a class="el" 
href="group__sasl.html#ga4d21fddba80d3f88d0529aafe12328b0">pn_sasl_t</a></td></tr>
+<tr class="memdesc:ga4d21fddba80d3f88d0529aafe12328b0"><td 
class="mdescLeft">&#160;</td><td class="mdescRight">The SASL layer is 
responsible for establishing an authenticated and/or encrypted tunnel over 
which AMQP frames are passed between peers.  <a 
href="#ga4d21fddba80d3f88d0529aafe12328b0">More...</a><br/></td></tr>
+<tr class="separator:ga4d21fddba80d3f88d0529aafe12328b0"><td 
class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a 
name="enum-members"></a>
+Enumerations</h2></td></tr>
+<tr class="memitem:gad44e79f52e0669b1930689b56dfa9c3b"><td class="memItemLeft" 
align="right" valign="top">enum &#160;</td><td class="memItemRight" 
valign="bottom"><a class="el" 
href="group__sasl.html#gad44e79f52e0669b1930689b56dfa9c3b">pn_sasl_outcome_t</a>
 { <br/>
+&#160;&#160;<b>PN_SASL_NONE</b>, 
+<a class="el" 
href="group__sasl.html#ggad44e79f52e0669b1930689b56dfa9c3ba0050b91650a3826a090e13f57b3b941e">PN_SASL_OK</a>,
 
+<a class="el" 
href="group__sasl.html#ggad44e79f52e0669b1930689b56dfa9c3bac63734ecde7c8170554f6bf04f6ce64a">PN_SASL_AUTH</a>,
 
+<a class="el" 
href="group__sasl.html#ggad44e79f52e0669b1930689b56dfa9c3bacd46a2fda23f674c23ed81e6076c1939">PN_SASL_SYS</a>,
 
+<br/>
+&#160;&#160;<a class="el" 
href="group__sasl.html#ggad44e79f52e0669b1930689b56dfa9c3ba03019f909ba1d98aae94437ca4bd0191">PN_SASL_PERM</a>,
 
+<a class="el" 
href="group__sasl.html#ggad44e79f52e0669b1930689b56dfa9c3baee28d2c03fa80dccf771e37aae1bcdf3">PN_SASL_TEMP</a>
+<br/>
+ }</td></tr>
+<tr class="memdesc:gad44e79f52e0669b1930689b56dfa9c3b"><td 
class="mdescLeft">&#160;</td><td class="mdescRight">The result of the SASL 
negotiation.  <a 
href="group__sasl.html#gad44e79f52e0669b1930689b56dfa9c3b">More...</a><br/></td></tr>
+<tr class="separator:gad44e79f52e0669b1930689b56dfa9c3b"><td 
class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a 
name="func-members"></a>
+Functions</h2></td></tr>
+<tr class="memitem:ga7968e80e2fe9360fc14cf865dd1ac21c"><td class="memItemLeft" 
align="right" valign="top"><a class="el" 
href="group__sasl.html#ga4d21fddba80d3f88d0529aafe12328b0">pn_sasl_t</a> 
*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" 
href="group__sasl.html#ga7968e80e2fe9360fc14cf865dd1ac21c">pn_sasl</a> (<a 
class="el" 
href="group__transport.html#gac26eda05f649bbf0399f3d8d78d12fa8">pn_transport_t</a>
 *transport)</td></tr>
+<tr class="memdesc:ga7968e80e2fe9360fc14cf865dd1ac21c"><td 
class="mdescLeft">&#160;</td><td class="mdescRight">Construct an Authentication 
and Security Layer object.  <a 
href="#ga7968e80e2fe9360fc14cf865dd1ac21c">More...</a><br/></td></tr>
+<tr class="separator:ga7968e80e2fe9360fc14cf865dd1ac21c"><td 
class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga1737191972d5dded0993bf1431e71df0"><td class="memItemLeft" 
align="right" valign="top">bool&#160;</td><td class="memItemRight" 
valign="bottom"><a class="el" 
href="group__sasl.html#ga1737191972d5dded0993bf1431e71df0">pn_sasl_extended</a> 
(void)</td></tr>
+<tr class="memdesc:ga1737191972d5dded0993bf1431e71df0"><td 
class="mdescLeft">&#160;</td><td class="mdescRight">Do we support extended SASL 
negotiation.  <a 
href="#ga1737191972d5dded0993bf1431e71df0">More...</a><br/></td></tr>
+<tr class="separator:ga1737191972d5dded0993bf1431e71df0"><td 
class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga0199871440c4ff89a204cc1d8a09f283"><td class="memItemLeft" 
align="right" valign="top">void&#160;</td><td class="memItemRight" 
valign="bottom"><a class="el" 
href="group__sasl.html#ga0199871440c4ff89a204cc1d8a09f283">pn_sasl_done</a> (<a 
class="el" 
href="group__sasl.html#ga4d21fddba80d3f88d0529aafe12328b0">pn_sasl_t</a> *sasl, 
<a class="el" 
href="group__sasl.html#gad44e79f52e0669b1930689b56dfa9c3b">pn_sasl_outcome_t</a>
 outcome)</td></tr>
+<tr class="memdesc:ga0199871440c4ff89a204cc1d8a09f283"><td 
class="mdescLeft">&#160;</td><td class="mdescRight">Set the outcome of SASL 
negotiation.  <a 
href="#ga0199871440c4ff89a204cc1d8a09f283">More...</a><br/></td></tr>
+<tr class="separator:ga0199871440c4ff89a204cc1d8a09f283"><td 
class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga03b6daf742db6a07bd7d03cb197aedb6"><td class="memItemLeft" 
align="right" valign="top"><a class="el" 
href="group__sasl.html#gad44e79f52e0669b1930689b56dfa9c3b">pn_sasl_outcome_t</a>&#160;</td><td
 class="memItemRight" valign="bottom"><a class="el" 
href="group__sasl.html#ga03b6daf742db6a07bd7d03cb197aedb6">pn_sasl_outcome</a> 
(<a class="el" 
href="group__sasl.html#ga4d21fddba80d3f88d0529aafe12328b0">pn_sasl_t</a> 
*sasl)</td></tr>
+<tr class="memdesc:ga03b6daf742db6a07bd7d03cb197aedb6"><td 
class="mdescLeft">&#160;</td><td class="mdescRight">Retrieve the outcome of 
SASL negotiation.  <a 
href="#ga03b6daf742db6a07bd7d03cb197aedb6">More...</a><br/></td></tr>
+<tr class="separator:ga03b6daf742db6a07bd7d03cb197aedb6"><td 
class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga700e1d505068f895383dd932af55987e"><td class="memItemLeft" 
align="right" valign="top">const char *&#160;</td><td class="memItemRight" 
valign="bottom"><a class="el" 
href="group__sasl.html#ga700e1d505068f895383dd932af55987e">pn_sasl_get_user</a> 
(<a class="el" 
href="group__sasl.html#ga4d21fddba80d3f88d0529aafe12328b0">pn_sasl_t</a> 
*sasl)</td></tr>
+<tr class="memdesc:ga700e1d505068f895383dd932af55987e"><td 
class="mdescLeft">&#160;</td><td class="mdescRight">Retrieve the authenticated 
user.  <a href="#ga700e1d505068f895383dd932af55987e">More...</a><br/></td></tr>
+<tr class="separator:ga700e1d505068f895383dd932af55987e"><td 
class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga895b6a957bf0c0204aaddb3ec5b9d863"><td class="memItemLeft" 
align="right" valign="top">const char *&#160;</td><td class="memItemRight" 
valign="bottom"><a class="el" 
href="group__sasl.html#ga895b6a957bf0c0204aaddb3ec5b9d863">pn_sasl_get_mech</a> 
(<a class="el" 
href="group__sasl.html#ga4d21fddba80d3f88d0529aafe12328b0">pn_sasl_t</a> 
*sasl)</td></tr>
+<tr class="memdesc:ga895b6a957bf0c0204aaddb3ec5b9d863"><td 
class="mdescLeft">&#160;</td><td class="mdescRight">Return the selected SASL 
mechanism.  <a 
href="#ga895b6a957bf0c0204aaddb3ec5b9d863">More...</a><br/></td></tr>
+<tr class="separator:ga895b6a957bf0c0204aaddb3ec5b9d863"><td 
class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga73299a6a22e141e7911a739590032625"><td class="memItemLeft" 
align="right" valign="top">void&#160;</td><td class="memItemRight" 
valign="bottom"><a class="el" 
href="group__sasl.html#ga73299a6a22e141e7911a739590032625">pn_sasl_allowed_mechs</a>
 (<a class="el" 
href="group__sasl.html#ga4d21fddba80d3f88d0529aafe12328b0">pn_sasl_t</a> *sasl, 
const char *mechs)</td></tr>
+<tr class="memdesc:ga73299a6a22e141e7911a739590032625"><td 
class="mdescLeft">&#160;</td><td class="mdescRight">SASL mechanisms that are to 
be considered for authentication.  <a 
href="#ga73299a6a22e141e7911a739590032625">More...</a><br/></td></tr>
+<tr class="separator:ga73299a6a22e141e7911a739590032625"><td 
class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaf472325bc055bb18a5a6f5ca03eda315"><td class="memItemLeft" 
align="right" valign="top">void&#160;</td><td class="memItemRight" 
valign="bottom"><a class="el" 
href="group__sasl.html#gaf472325bc055bb18a5a6f5ca03eda315">pn_sasl_set_allow_insecure_mechs</a>
 (<a class="el" 
href="group__sasl.html#ga4d21fddba80d3f88d0529aafe12328b0">pn_sasl_t</a> *sasl, 
bool insecure)</td></tr>
+<tr class="memdesc:gaf472325bc055bb18a5a6f5ca03eda315"><td 
class="mdescLeft">&#160;</td><td class="mdescRight">Boolean to allow use of 
clear text authentication mechanisms.  <a 
href="#gaf472325bc055bb18a5a6f5ca03eda315">More...</a><br/></td></tr>
+<tr class="separator:gaf472325bc055bb18a5a6f5ca03eda315"><td 
class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gac53ad15ee429b7ce9d0c598d1e347243"><td class="memItemLeft" 
align="right" valign="top">bool&#160;</td><td class="memItemRight" 
valign="bottom"><a class="el" 
href="group__sasl.html#gac53ad15ee429b7ce9d0c598d1e347243">pn_sasl_get_allow_insecure_mechs</a>
 (<a class="el" 
href="group__sasl.html#ga4d21fddba80d3f88d0529aafe12328b0">pn_sasl_t</a> 
*sasl)</td></tr>
+<tr class="memdesc:gac53ad15ee429b7ce9d0c598d1e347243"><td 
class="mdescLeft">&#160;</td><td class="mdescRight">Return the current value 
for allow_insecure_mechs.  <a 
href="#gac53ad15ee429b7ce9d0c598d1e347243">More...</a><br/></td></tr>
+<tr class="separator:gac53ad15ee429b7ce9d0c598d1e347243"><td 
class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gad1a6932135165f0e5b7639b79ac71c56"><td class="memItemLeft" 
align="right" valign="top">void&#160;</td><td class="memItemRight" 
valign="bottom"><a class="el" 
href="group__sasl.html#gad1a6932135165f0e5b7639b79ac71c56">pn_sasl_config_name</a>
 (<a class="el" 
href="group__sasl.html#ga4d21fddba80d3f88d0529aafe12328b0">pn_sasl_t</a> *sasl, 
const char *name)</td></tr>
+<tr class="memdesc:gad1a6932135165f0e5b7639b79ac71c56"><td 
class="mdescLeft">&#160;</td><td class="mdescRight">Set the sasl configuration 
name.  <a href="#gad1a6932135165f0e5b7639b79ac71c56">More...</a><br/></td></tr>
+<tr class="separator:gad1a6932135165f0e5b7639b79ac71c56"><td 
class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gabf4176414424ce02a4e03b4338d30521"><td class="memItemLeft" 
align="right" valign="top">void&#160;</td><td class="memItemRight" 
valign="bottom"><a class="el" 
href="group__sasl.html#gabf4176414424ce02a4e03b4338d30521">pn_sasl_config_path</a>
 (<a class="el" 
href="group__sasl.html#ga4d21fddba80d3f88d0529aafe12328b0">pn_sasl_t</a> *sasl, 
const char *path)</td></tr>
+<tr class="memdesc:gabf4176414424ce02a4e03b4338d30521"><td 
class="mdescLeft">&#160;</td><td class="mdescRight">Set the sasl configuration 
path.  <a href="#gabf4176414424ce02a4e03b4338d30521">More...</a><br/></td></tr>
+<tr class="separator:gabf4176414424ce02a4e03b4338d30521"><td 
class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed 
Description</h2>
+<p>SASL secure transport layer. </p>
+<h2 class="groupheader">Typedef Documentation</h2>
+<a class="anchor" id="ga4d21fddba80d3f88d0529aafe12328b0"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef struct <a class="el" 
href="group__sasl.html#ga4d21fddba80d3f88d0529aafe12328b0">pn_sasl_t</a> <a 
class="el" 
href="group__sasl.html#ga4d21fddba80d3f88d0529aafe12328b0">pn_sasl_t</a></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>The SASL layer is responsible for establishing an authenticated and/or 
encrypted tunnel over which AMQP frames are passed between peers. </p>
+<p>The peer acting as the SASL Client must provide authentication credentials. 
The peer acting as the SASL Server must provide authentication against the 
received credentials. </p>
+
+</div>
+</div>
+<h2 class="groupheader">Enumeration Type Documentation</h2>
+<a class="anchor" id="gad44e79f52e0669b1930689b56dfa9c3b"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">enum <a class="el" 
href="group__sasl.html#gad44e79f52e0669b1930689b56dfa9c3b">pn_sasl_outcome_t</a></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>The result of the SASL negotiation. </p>
+<table class="fieldtable">
+<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><em><a 
class="anchor" 
id="ggad44e79f52e0669b1930689b56dfa9c3ba0050b91650a3826a090e13f57b3b941e"></a>PN_SASL_OK</em>&nbsp;</td><td
 class="fielddoc">
+<p>negotiation not completed </p>
+</td></tr>
+<tr><td class="fieldname"><em><a class="anchor" 
id="ggad44e79f52e0669b1930689b56dfa9c3bac63734ecde7c8170554f6bf04f6ce64a"></a>PN_SASL_AUTH</em>&nbsp;</td><td
 class="fielddoc">
+<p>authentication succeeded </p>
+</td></tr>
+<tr><td class="fieldname"><em><a class="anchor" 
id="ggad44e79f52e0669b1930689b56dfa9c3bacd46a2fda23f674c23ed81e6076c1939"></a>PN_SASL_SYS</em>&nbsp;</td><td
 class="fielddoc">
+<p>failed due to bad credentials </p>
+</td></tr>
+<tr><td class="fieldname"><em><a class="anchor" 
id="ggad44e79f52e0669b1930689b56dfa9c3ba03019f909ba1d98aae94437ca4bd0191"></a>PN_SASL_PERM</em>&nbsp;</td><td
 class="fielddoc">
+<p>failed due to a system error </p>
+</td></tr>
+<tr><td class="fieldname"><em><a class="anchor" 
id="ggad44e79f52e0669b1930689b56dfa9c3baee28d2c03fa80dccf771e37aae1bcdf3"></a>PN_SASL_TEMP</em>&nbsp;</td><td
 class="fielddoc">
+<p>failed due to unrecoverable error </p>
+</td></tr>
+</table>
+
+</div>
+</div>
+<h2 class="groupheader">Function Documentation</h2>
+<a class="anchor" id="ga7968e80e2fe9360fc14cf865dd1ac21c"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" 
href="group__sasl.html#ga4d21fddba80d3f88d0529aafe12328b0">pn_sasl_t</a>* 
pn_sasl </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" 
href="group__transport.html#gac26eda05f649bbf0399f3d8d78d12fa8">pn_transport_t</a>
 *&#160;</td>
+          <td class="paramname"><em>transport</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Construct an Authentication and Security Layer object. </p>
+<p>This will return the SASL layer object for the supplied transport object. 
If there is currently no SASL layer one will be created.</p>
+<p>On the client side of an AMQP connection this will have the effect of 
ensuring that the AMQP SASL layer is used for that connection.</p>
+<dl class="section return"><dt>Returns</dt><dd>an object representing the SASL 
layer. </dd></dl>
+<dl><dt><b>Examples: </b></dt><dd><a class="el" 
href="broker_8c-example.html#a38">broker.c</a>.</dd>
+</dl>
+</div>
+</div>
+<a class="anchor" id="ga73299a6a22e141e7911a739590032625"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void pn_sasl_allowed_mechs </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" 
href="group__sasl.html#ga4d21fddba80d3f88d0529aafe12328b0">pn_sasl_t</a> 
*&#160;</td>
+          <td class="paramname"><em>sasl</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char *&#160;</td>
+          <td class="paramname"><em>mechs</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>SASL mechanisms that are to be considered for authentication. </p>
+<p>This can be used on either the client or the server to restrict the SASL 
mechanisms that may be used to the mechanisms on the list.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramdir">[in]</td><td class="paramname">sasl</td><td>the 
SASL layer </td></tr>
+    <tr><td class="paramdir">[in]</td><td 
class="paramname">mechs</td><td>space separated list of mechanisms that are 
allowed for authentication </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl><dt><b>Examples: </b></dt><dd><a class="el" 
href="broker_8c-example.html#a37">broker.c</a>.</dd>
+</dl>
+</div>
+</div>
+<a class="anchor" id="gad1a6932135165f0e5b7639b79ac71c56"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void pn_sasl_config_name </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" 
href="group__sasl.html#ga4d21fddba80d3f88d0529aafe12328b0">pn_sasl_t</a> 
*&#160;</td>
+          <td class="paramname"><em>sasl</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char *&#160;</td>
+          <td class="paramname"><em>name</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Set the sasl configuration name. </p>
+<p>This is used to construct the SASL configuration filename. In the current 
implementation it ".conf" is added to the name and the file is looked for in 
the configuration directory.</p>
+<p>If not set it will default to "proton-server" for a sasl server and 
"proton-client" for a client.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramdir">[in]</td><td class="paramname">sasl</td><td>the 
SASL layer </td></tr>
+    <tr><td class="paramdir">[in]</td><td class="paramname">name</td><td>the 
configuration name </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="gabf4176414424ce02a4e03b4338d30521"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void pn_sasl_config_path </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" 
href="group__sasl.html#ga4d21fddba80d3f88d0529aafe12328b0">pn_sasl_t</a> 
*&#160;</td>
+          <td class="paramname"><em>sasl</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char *&#160;</td>
+          <td class="paramname"><em>path</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Set the sasl configuration path. </p>
+<p>This is used to tell SASL where to look for the configuration file. In the 
current implementation it can be a colon separated list of directories.</p>
+<p>The environment variable PN_SASL_CONFIG_PATH can also be used to set this 
path, but if both methods are used then this <a class="el" 
href="group__sasl.html#gabf4176414424ce02a4e03b4338d30521" title="Set the sasl 
configuration path.">pn_sasl_config_path()</a> will take precedence.</p>
+<p>If not set the underlying implementation default will be used. for a 
client.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramdir">[in]</td><td class="paramname">sasl</td><td>the 
SASL layer </td></tr>
+    <tr><td class="paramdir">[in]</td><td class="paramname">path</td><td>the 
configuration path </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="ga0199871440c4ff89a204cc1d8a09f283"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void pn_sasl_done </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" 
href="group__sasl.html#ga4d21fddba80d3f88d0529aafe12328b0">pn_sasl_t</a> 
*&#160;</td>
+          <td class="paramname"><em>sasl</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" 
href="group__sasl.html#gad44e79f52e0669b1930689b56dfa9c3b">pn_sasl_outcome_t</a>&#160;</td>
+          <td class="paramname"><em>outcome</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Set the outcome of SASL negotiation. </p>
+<p>Used by the server to set the result of the negotiation process.</p>
+
+</div>
+</div>
+<a class="anchor" id="ga1737191972d5dded0993bf1431e71df0"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">bool pn_sasl_extended </td>
+          <td>(</td>
+          <td class="paramtype">void&#160;</td>
+          <td class="paramname"></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Do we support extended SASL negotiation. </p>
+<p>Do we support extended SASL negotiation? All implementations of Proton 
support ANONYMOUS and EXTERNAL on both client and server sides and PLAIN on the 
client side.</p>
+<p>Extended SASL implememtations use an external library (Cyrus SASL) to 
support other mechanisms beyond these basic ones.</p>
+<dl class="section return"><dt>Returns</dt><dd>true if we support extended 
SASL negotiation, false if we only support basic negotiation. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="gac53ad15ee429b7ce9d0c598d1e347243"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">bool pn_sasl_get_allow_insecure_mechs </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" 
href="group__sasl.html#ga4d21fddba80d3f88d0529aafe12328b0">pn_sasl_t</a> 
*&#160;</td>
+          <td class="paramname"><em>sasl</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Return the current value for allow_insecure_mechs. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramdir">[in]</td><td class="paramname">sasl</td><td>the 
SASL layer </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="ga895b6a957bf0c0204aaddb3ec5b9d863"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">const char* pn_sasl_get_mech </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" 
href="group__sasl.html#ga4d21fddba80d3f88d0529aafe12328b0">pn_sasl_t</a> 
*&#160;</td>
+          <td class="paramname"><em>sasl</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Return the selected SASL mechanism. </p>
+<p>The returned value is only reliable after the PN_TRANSPORT_AUTHENTICATED 
event has been received.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramdir">[in]</td><td class="paramname">sasl</td><td>the 
SASL layer</td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The authentication mechanism 
selected by the SASL layer </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="ga700e1d505068f895383dd932af55987e"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">const char* pn_sasl_get_user </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" 
href="group__sasl.html#ga4d21fddba80d3f88d0529aafe12328b0">pn_sasl_t</a> 
*&#160;</td>
+          <td class="paramname"><em>sasl</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Retrieve the authenticated user. </p>
+<p>This is usually used at the the server end to find the name of the 
authenticated user. On the client it will merely return whatever user was 
passed in to the pn_transport_set_user_password() API.</p>
+<p>If <a class="el" href="group__sasl.html#ga03b6daf742db6a07bd7d03cb197aedb6" 
title="Retrieve the outcome of SASL negotiation.">pn_sasl_outcome()</a> returns 
a value other than PN_SASL_OK, then there will be no user to return. The 
returned value is only reliable after the PN_TRANSPORT_AUTHENTICATED event has 
been received.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramdir">[in]</td><td class="paramname">sasl</td><td>the 
sasl layer</td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>If the SASL layer was not 
negotiated then 0 is returned If the ANONYMOUS mechanism is used then the user 
will be "anonymous" Otherwise a string containing the user is returned. 
</dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="ga03b6daf742db6a07bd7d03cb197aedb6"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" 
href="group__sasl.html#gad44e79f52e0669b1930689b56dfa9c3b">pn_sasl_outcome_t</a>
 pn_sasl_outcome </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" 
href="group__sasl.html#ga4d21fddba80d3f88d0529aafe12328b0">pn_sasl_t</a> 
*&#160;</td>
+          <td class="paramname"><em>sasl</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Retrieve the outcome of SASL negotiation. </p>
+
+</div>
+</div>
+<a class="anchor" id="gaf472325bc055bb18a5a6f5ca03eda315"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void pn_sasl_set_allow_insecure_mechs </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" 
href="group__sasl.html#ga4d21fddba80d3f88d0529aafe12328b0">pn_sasl_t</a> 
*&#160;</td>
+          <td class="paramname"><em>sasl</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">bool&#160;</td>
+          <td class="paramname"><em>insecure</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Boolean to allow use of clear text authentication mechanisms. </p>
+<p>By default the SASL layer is configured not to allow mechanisms that 
disclose the clear text of the password over an unencrypted AMQP connection. 
This specifically will disallow the use of the PLAIN mechanism without using 
SSL encryption.</p>
+<p>This default is to avoid disclosing password information accidentally over 
an insecure network.</p>
+<p>If you actually wish to use a clear text password unencrypted then you can 
use this API to set allow_insecure_mechs to true.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramdir">[in]</td><td class="paramname">sasl</td><td>the 
SASL layer </td></tr>
+    <tr><td class="paramdir">[in]</td><td 
class="paramname">insecure</td><td>set this to true to allow unencrypted PLAIN 
authentication. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+</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.3.1 </li>
+  </ul>
+</div>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/qpid-site/blob/1859e58c/content/releases/qpid-proton-0.17.0/proton/c/api/group__sasl.js
----------------------------------------------------------------------
diff --git a/content/releases/qpid-proton-0.17.0/proton/c/api/group__sasl.js 
b/content/releases/qpid-proton-0.17.0/proton/c/api/group__sasl.js
new file mode 100755
index 0000000..ac06fa9
--- /dev/null
+++ b/content/releases/qpid-proton-0.17.0/proton/c/api/group__sasl.js
@@ -0,0 +1,22 @@
+var group__sasl =
+[
+    [ "pn_sasl_t", "group__sasl.html#ga4d21fddba80d3f88d0529aafe12328b0", null 
],
+    [ "pn_sasl_outcome_t", 
"group__sasl.html#gad44e79f52e0669b1930689b56dfa9c3b", [
+      [ "PN_SASL_OK", 
"group__sasl.html#ggad44e79f52e0669b1930689b56dfa9c3ba0050b91650a3826a090e13f57b3b941e",
 null ],
+      [ "PN_SASL_AUTH", 
"group__sasl.html#ggad44e79f52e0669b1930689b56dfa9c3bac63734ecde7c8170554f6bf04f6ce64a",
 null ],
+      [ "PN_SASL_SYS", 
"group__sasl.html#ggad44e79f52e0669b1930689b56dfa9c3bacd46a2fda23f674c23ed81e6076c1939",
 null ],
+      [ "PN_SASL_PERM", 
"group__sasl.html#ggad44e79f52e0669b1930689b56dfa9c3ba03019f909ba1d98aae94437ca4bd0191",
 null ],
+      [ "PN_SASL_TEMP", 
"group__sasl.html#ggad44e79f52e0669b1930689b56dfa9c3baee28d2c03fa80dccf771e37aae1bcdf3",
 null ]
+    ] ],
+    [ "pn_sasl", "group__sasl.html#ga7968e80e2fe9360fc14cf865dd1ac21c", null ],
+    [ "pn_sasl_allowed_mechs", 
"group__sasl.html#ga73299a6a22e141e7911a739590032625", null ],
+    [ "pn_sasl_config_name", 
"group__sasl.html#gad1a6932135165f0e5b7639b79ac71c56", null ],
+    [ "pn_sasl_config_path", 
"group__sasl.html#gabf4176414424ce02a4e03b4338d30521", null ],
+    [ "pn_sasl_done", "group__sasl.html#ga0199871440c4ff89a204cc1d8a09f283", 
null ],
+    [ "pn_sasl_extended", 
"group__sasl.html#ga1737191972d5dded0993bf1431e71df0", null ],
+    [ "pn_sasl_get_allow_insecure_mechs", 
"group__sasl.html#gac53ad15ee429b7ce9d0c598d1e347243", null ],
+    [ "pn_sasl_get_mech", 
"group__sasl.html#ga895b6a957bf0c0204aaddb3ec5b9d863", null ],
+    [ "pn_sasl_get_user", 
"group__sasl.html#ga700e1d505068f895383dd932af55987e", null ],
+    [ "pn_sasl_outcome", 
"group__sasl.html#ga03b6daf742db6a07bd7d03cb197aedb6", null ],
+    [ "pn_sasl_set_allow_insecure_mechs", 
"group__sasl.html#gaf472325bc055bb18a5a6f5ca03eda315", null ]
+];
\ No newline at end of file


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

Reply via email to