http://git-wip-us.apache.org/repos/asf/qpid-site/blob/8dabb34e/content/releases/qpid-proton-0.21.0/proton/c/api/group__messenger.js
----------------------------------------------------------------------
diff --git 
a/content/releases/qpid-proton-0.21.0/proton/c/api/group__messenger.js 
b/content/releases/qpid-proton-0.21.0/proton/c/api/group__messenger.js
new file mode 100755
index 0000000..55bc8d5
--- /dev/null
+++ b/content/releases/qpid-proton-0.21.0/proton/c/api/group__messenger.js
@@ -0,0 +1,81 @@
+var group__messenger =
+[
+    [ "PN_CUMULATIVE", 
"group__messenger.html#ga6c2e8d006ec05b913fa1e6dc510d23b9", null ],
+    [ "PN_FLAGS_CHECK_ROUTES", 
"group__messenger.html#gad5ad0b67fef0e761dc0138b9621ffa14", null ],
+    [ "PN_FLAGS_ALLOW_INSECURE_MECHS", 
"group__messenger.html#ga118fb0c2384257dff5d72eea787e4a0c", 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_name", 
"group__messenger.html#ga71197163a69770575df74e3cee617429", null ],
+    [ "pn_messenger_set_certificate", 
"group__messenger.html#gad61fff52c28501171ecbb0b21bbde954", null ],
+    [ "pn_messenger_get_certificate", 
"group__messenger.html#ga1d0c003a1fb5e20b894e2deb8b43118b", null ],
+    [ "pn_messenger_set_private_key", 
"group__messenger.html#ga05f059a2fe93e0acbcf76e494e6bf958", null ],
+    [ "pn_messenger_get_private_key", 
"group__messenger.html#gab692f989aed2aa83bd71b7fa7196aeb1", null ],
+    [ "pn_messenger_set_password", 
"group__messenger.html#ga6b04f7dea2ed8752b8672b4cfe0330f2", null ],
+    [ "pn_messenger_get_password", 
"group__messenger.html#ga3f02ad7340a59c5982e6223aaeea803a", null ],
+    [ "pn_messenger_set_trusted_certificates", 
"group__messenger.html#gad901e92e2bee6d5371dcd3b1c8fe2c3b", null ],
+    [ "pn_messenger_get_trusted_certificates", 
"group__messenger.html#ga955b218a8f58560e9e228ca14fba21f2", null ],
+    [ "pn_messenger_set_timeout", 
"group__messenger.html#ga04119bb2b16bb0f657f1dbcf73827d74", null ],
+    [ "pn_messenger_get_timeout", 
"group__messenger.html#ga083ba6296a1ae1dfe45c0fb82da823eb", null ],
+    [ "pn_messenger_is_blocking", 
"group__messenger.html#gaf572cbf224105d08898d2906336712f7", null ],
+    [ "pn_messenger_set_blocking", 
"group__messenger.html#gae9d7f1aec6e2cf3ef1ee326a4ae15981", null ],
+    [ "pn_messenger_is_passive", 
"group__messenger.html#ga63805c35f18ef041c69a14564dc1bce4", null ],
+    [ "pn_messenger_set_passive", 
"group__messenger.html#gac7df7c92396f10f105ec74d35310a7c0", null ],
+    [ "pn_messenger_free", 
"group__messenger.html#ga530295575eda95e3c19316d41bd1baa7", null ],
+    [ "pn_messenger_errno", 
"group__messenger.html#gacfd10311abca28521fe7aa9cabfff61c", null ],
+    [ "pn_messenger_error", 
"group__messenger.html#ga0301664be9c54b3a573578776ad2a5d2", null ],
+    [ "pn_messenger_get_outgoing_window", 
"group__messenger.html#gac191bdb410b7839d6306a0d8e5ac19e1", null ],
+    [ "pn_messenger_set_outgoing_window", 
"group__messenger.html#ga96487581bd8348f8bc9bacef25042cfc", null ],
+    [ "pn_messenger_get_incoming_window", 
"group__messenger.html#ga45d578f39673ad59ca65d2042054abee", null ],
+    [ "pn_messenger_set_incoming_window", 
"group__messenger.html#gadf8a9cf14bf8d519026ea8c4eeb275c3", null ],
+    [ "pn_messenger_start", 
"group__messenger.html#ga6fa594235e316cd2a04b44b283194a43", 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_get_link", 
"group__messenger.html#ga757aeef23d47ecc2a9a461b882686417", null ],
+    [ "pn_subscription_get_context", 
"group__messenger.html#ga8ad0f0db6d7cfe0e95d44d433843d787", null ],
+    [ "pn_subscription_set_context", 
"group__messenger.html#ga3a7f95a2a86f64babe692d21ffe9cd10", null ],
+    [ "pn_subscription_address", 
"group__messenger.html#ga8e87c040776f1941f21d2c15f24b835e", null ],
+    [ "pn_messenger_put", 
"group__messenger.html#gafede68af29484d50d531cc48ab0d3d4a", null ],
+    [ "pn_messenger_status", 
"group__messenger.html#gad398544ad1374f67c922115ae1cceacc", null ],
+    [ "pn_messenger_delivery", 
"group__messenger.html#ga65f22122f08bc93de2bfe155aa12d0b0", null ],
+    [ "pn_messenger_buffered", 
"group__messenger.html#ga15adeb707f15b86df1e5486c34a060e6", null ],
+    [ "pn_messenger_settle", 
"group__messenger.html#ga475ce593f6b0c6025516ae48360dee4d", null ],
+    [ "pn_messenger_outgoing_tracker", 
"group__messenger.html#ga0212b5cfe07a7f758ec472d67d0f56e1", null ],
+    [ "pn_messenger_work", 
"group__messenger.html#ga47d60cec6a55e0675b8f073067eff9c4", null ],
+    [ "pn_messenger_interrupt", 
"group__messenger.html#ga9da14c67acc17bc5fec6f34e2749534f", null ],
+    [ "pn_messenger_send", 
"group__messenger.html#gae31f9a99dcbedffe83588cf25b805325", null ],
+    [ "pn_messenger_recv", 
"group__messenger.html#ga16c945185e4eb5dcb9aac2be2fcab0d6", null ],
+    [ "pn_messenger_receiving", 
"group__messenger.html#gaf4e22c8cb1436891d42ca0a658fca9c5", null ],
+    [ "pn_messenger_get", 
"group__messenger.html#gaa6d85929e4b4b574690927ddde00c540", null ],
+    [ "pn_messenger_incoming_tracker", 
"group__messenger.html#gafe31e771826f8107d93fc276c9715aab", null ],
+    [ "pn_messenger_incoming_subscription", 
"group__messenger.html#gae351d031d2ef29bdb137a59d461c4253", null ],
+    [ "pn_messenger_accept", 
"group__messenger.html#ga11cd0d3423482e1ddda7a8b0cbb581c7", null ],
+    [ "pn_messenger_reject", 
"group__messenger.html#ga22d6de108fa967a43ab2473d6a915e9c", null ],
+    [ "pn_messenger_tracker_link", 
"group__messenger.html#gae4e5e89c6ea2a820a221af61cc741c7d", null ],
+    [ "pn_messenger_outgoing", 
"group__messenger.html#ga06c3a066422f8a966523b43a61f62eb9", null ],
+    [ "pn_messenger_incoming", 
"group__messenger.html#ga43cf91b5528c2729b3ff9ae1d2a7d257", null ],
+    [ "pn_messenger_route", 
"group__messenger.html#ga6c85a08d72ae73a18f9fb64ccf0c470e", null ],
+    [ "pn_messenger_rewrite", 
"group__messenger.html#gac7dc5d9b82f9e015fd2c7d9743099eff", null ],
+    [ "pn_messenger_selectable", 
"group__messenger.html#ga8521b0999200c076bf12568ac10fe925", null ],
+    [ "pn_messenger_deadline", 
"group__messenger.html#ga223e7c16f3e84f4e573864c3881b3b4b", null ],
+    [ "pn_messenger_set_flags", 
"group__messenger.html#gacf39b77df62750343e2f4e90dbcacc75", null ],
+    [ "pn_messenger_get_flags", 
"group__messenger.html#ga9f4e2fbfb7eb7bfd9acd7ad758d24085", null ],
+    [ "pn_messenger_set_snd_settle_mode", 
"group__messenger.html#ga7b0872d6712c53e307bf2babfd91bf6e", null ],
+    [ "pn_messenger_set_rcv_settle_mode", 
"group__messenger.html#gae9f2d3ab15602b27f1b87a4f6349a9f1", null ],
+    [ "pn_messenger_set_tracer", 
"group__messenger.html#ga6c2cfb88f59980bb13821a6f25cf30f6", null ],
+    [ "pn_messenger_get_remote_idle_timeout", 
"group__messenger.html#ga9be25d57cda5a6e1c5658b0f362c41c7", null ],
+    [ "pn_messenger_set_ssl_peer_authentication_mode", 
"group__messenger.html#ga59ebaf21eaafaa4b1c359e4284564ff6", null ]
+];
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/qpid-site/blob/8dabb34e/content/releases/qpid-proton-0.21.0/proton/c/api/group__proactor.html
----------------------------------------------------------------------
diff --git 
a/content/releases/qpid-proton-0.21.0/proton/c/api/group__proactor.html 
b/content/releases/qpid-proton-0.21.0/proton/c/api/group__proactor.html
new file mode 100755
index 0000000..4ce0807
--- /dev/null
+++ b/content/releases/qpid-proton-0.21.0/proton/c/api/group__proactor.html
@@ -0,0 +1,995 @@
+<!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: 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="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">0.21.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.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('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)">
+</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="#define-members">Macros</a> &#124;
+<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>Unsettled API</b> - An API for multithreaded IO.  
+<a href="#details">More...</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a 
name="define-members"></a>
+Macros</h2></td></tr>
+<tr class="memitem:ga29ae114b42fb797c103dc9883ebcb256"><td class="memItemLeft" 
align="right" valign="top"><a id="ga29ae114b42fb797c103dc9883ebcb256"></a>
+#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" 
href="group__proactor.html#ga29ae114b42fb797c103dc9883ebcb256">PN_MAX_ADDR</a></td></tr>
+<tr class="memdesc:ga29ae114b42fb797c103dc9883ebcb256"><td 
class="mdescLeft">&#160;</td><td class="mdescRight">Size of buffer that can 
hold the largest connection or listening address. <br /></td></tr>
+<tr class="separator:ga29ae114b42fb797c103dc9883ebcb256"><td 
class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a 
name="typedef-members"></a>
+Typedefs</h2></td></tr>
+<tr class="memitem:ga79d820cd3ad391cc5207c83dbb373a9c"><td class="memItemLeft" 
align="right" valign="top"><a id="ga79d820cd3ad391cc5207c83dbb373a9c"></a>
+typedef struct <a class="el" 
href="group__proactor.html#ga79d820cd3ad391cc5207c83dbb373a9c">pn_netaddr_t</a>&#160;</td><td
 class="memItemRight" valign="bottom"><a class="el" 
href="group__proactor.html#ga79d820cd3ad391cc5207c83dbb373a9c">pn_netaddr_t</a></td></tr>
+<tr class="memdesc:ga79d820cd3ad391cc5207c83dbb373a9c"><td 
class="mdescLeft">&#160;</td><td class="mdescRight"><b>Unsettled API</b> - The 
network address of a proactor transport. <br /></td></tr>
+<tr class="separator:ga79d820cd3ad391cc5207c83dbb373a9c"><td 
class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gabba42c7929dfceb9d296535bad0c93dc"><td class="memItemLeft" 
align="right" valign="top"><a 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">A harness for multithreaded 
IO. <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:ga9f6a27999303c6082edc581f880de37c"><td class="memItemLeft" 
align="right" valign="top">PNP_EXTERN int&#160;</td><td class="memItemRight" 
valign="bottom"><a class="el" 
href="group__proactor.html#ga9f6a27999303c6082edc581f880de37c">pn_netaddr_str</a>
 (const <a class="el" 
href="group__proactor.html#ga79d820cd3ad391cc5207c83dbb373a9c">pn_netaddr_t</a> 
*addr, char *buf, size_t size)</td></tr>
+<tr class="memdesc:ga9f6a27999303c6082edc581f880de37c"><td 
class="mdescLeft">&#160;</td><td class="mdescRight">Format a network address as 
a human-readable string in <code>buf</code>.  <a 
href="#ga9f6a27999303c6082edc581f880de37c">More...</a><br /></td></tr>
+<tr class="separator:ga9f6a27999303c6082edc581f880de37c"><td 
class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga7edab5e295c55e1c2169e39aaa082f8b"><td class="memItemLeft" 
align="right" valign="top">PNP_EXTERN const <a class="el" 
href="group__proactor.html#ga79d820cd3ad391cc5207c83dbb373a9c">pn_netaddr_t</a> 
*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" 
href="group__proactor.html#ga7edab5e295c55e1c2169e39aaa082f8b">pn_netaddr_local</a>
 (<a class="el" 
href="group__transport.html#gac26eda05f649bbf0399f3d8d78d12fa8">pn_transport_t</a>
 *t)</td></tr>
+<tr class="memdesc:ga7edab5e295c55e1c2169e39aaa082f8b"><td 
class="mdescLeft">&#160;</td><td class="mdescRight">Get the local address of a 
transport.  <a href="#ga7edab5e295c55e1c2169e39aaa082f8b">More...</a><br 
/></td></tr>
+<tr class="separator:ga7edab5e295c55e1c2169e39aaa082f8b"><td 
class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga59fa5ba7adc39bc8549645d5d33082c0"><td class="memItemLeft" 
align="right" valign="top">PNP_EXTERN const <a class="el" 
href="group__proactor.html#ga79d820cd3ad391cc5207c83dbb373a9c">pn_netaddr_t</a> 
*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" 
href="group__proactor.html#ga59fa5ba7adc39bc8549645d5d33082c0">pn_netaddr_remote</a>
 (<a class="el" 
href="group__transport.html#gac26eda05f649bbf0399f3d8d78d12fa8">pn_transport_t</a>
 *t)</td></tr>
+<tr class="memdesc:ga59fa5ba7adc39bc8549645d5d33082c0"><td 
class="mdescLeft">&#160;</td><td class="mdescRight">Get the local address of a 
transport.  <a href="#ga59fa5ba7adc39bc8549645d5d33082c0">More...</a><br 
/></td></tr>
+<tr class="separator:ga59fa5ba7adc39bc8549645d5d33082c0"><td 
class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga955471a53dd486a6f227d8d57322a44c"><td class="memItemLeft" 
align="right" valign="top">PNP_EXTERN const <a class="el" 
href="group__proactor.html#ga79d820cd3ad391cc5207c83dbb373a9c">pn_netaddr_t</a> 
*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" 
href="group__proactor.html#ga955471a53dd486a6f227d8d57322a44c">pn_netaddr_listening</a>
 (<a class="el" 
href="group__listener.html#ga68ac7072ae60612d0bca5470014bf216">pn_listener_t</a>
 *l)</td></tr>
+<tr class="memdesc:ga955471a53dd486a6f227d8d57322a44c"><td 
class="mdescLeft">&#160;</td><td class="mdescRight">Get the listening addresses 
of a listener.  <a href="#ga955471a53dd486a6f227d8d57322a44c">More...</a><br 
/></td></tr>
+<tr class="separator:ga955471a53dd486a6f227d8d57322a44c"><td 
class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga6163449ac3b87782628448f192930eb0"><td class="memItemLeft" 
align="right" valign="top">PNP_EXTERN const <a class="el" 
href="group__proactor.html#ga79d820cd3ad391cc5207c83dbb373a9c">pn_netaddr_t</a> 
*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" 
href="group__proactor.html#ga6163449ac3b87782628448f192930eb0">pn_netaddr_next</a>
 (const <a class="el" 
href="group__proactor.html#ga79d820cd3ad391cc5207c83dbb373a9c">pn_netaddr_t</a> 
*na)</td></tr>
+<tr class="separator:ga6163449ac3b87782628448f192930eb0"><td 
class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga00b1a40af2d837915d21cdb52ccb0c58"><td class="memItemLeft" 
align="right" valign="top">PNP_EXTERN const struct sockaddr *&#160;</td><td 
class="memItemRight" valign="bottom"><a class="el" 
href="group__proactor.html#ga00b1a40af2d837915d21cdb52ccb0c58">pn_netaddr_sockaddr</a>
 (const <a class="el" 
href="group__proactor.html#ga79d820cd3ad391cc5207c83dbb373a9c">pn_netaddr_t</a> 
*na)</td></tr>
+<tr class="memdesc:ga00b1a40af2d837915d21cdb52ccb0c58"><td 
class="mdescLeft">&#160;</td><td class="mdescRight">On POSIX or Windows, get 
the underlying <code>struct sockaddr</code>.  <a 
href="#ga00b1a40af2d837915d21cdb52ccb0c58">More...</a><br /></td></tr>
+<tr class="separator:ga00b1a40af2d837915d21cdb52ccb0c58"><td 
class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaddaf2b0b3e107d100e4c3658116a6c3c"><td class="memItemLeft" 
align="right" valign="top">PNP_EXTERN size_t&#160;</td><td class="memItemRight" 
valign="bottom"><a class="el" 
href="group__proactor.html#gaddaf2b0b3e107d100e4c3658116a6c3c">pn_netaddr_socklen</a>
 (const <a class="el" 
href="group__proactor.html#ga79d820cd3ad391cc5207c83dbb373a9c">pn_netaddr_t</a> 
*na)</td></tr>
+<tr class="memdesc:gaddaf2b0b3e107d100e4c3658116a6c3c"><td 
class="mdescLeft">&#160;</td><td class="mdescRight">On POSIX or Windows, get 
the size of the underlying <code>struct sockaddr</code>.  <a 
href="#gaddaf2b0b3e107d100e4c3658116a6c3c">More...</a><br /></td></tr>
+<tr class="separator:gaddaf2b0b3e107d100e4c3658116a6c3c"><td 
class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga8cdeab8554e7d376a422dae8ac6d474b"><td class="memItemLeft" 
align="right" valign="top">PNP_EXTERN int&#160;</td><td class="memItemRight" 
valign="bottom"><a class="el" 
href="group__proactor.html#ga8cdeab8554e7d376a422dae8ac6d474b">pn_netaddr_host_port</a>
 (const <a class="el" 
href="group__proactor.html#ga79d820cd3ad391cc5207c83dbb373a9c">pn_netaddr_t</a> 
*na, char *host, size_t hlen, char *port, size_t plen)</td></tr>
+<tr class="memdesc:ga8cdeab8554e7d376a422dae8ac6d474b"><td 
class="mdescLeft">&#160;</td><td class="mdescRight">Get the host and port name 
from na as separate strings.  <a 
href="#ga8cdeab8554e7d376a422dae8ac6d474b">More...</a><br /></td></tr>
+<tr class="separator:ga8cdeab8554e7d376a422dae8ac6d474b"><td 
class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaf67a7642c9003b36255b58776b494c96"><td class="memItemLeft" 
align="right" valign="top">PNP_EXTERN int&#160;</td><td class="memItemRight" 
valign="bottom"><a class="el" 
href="group__proactor.html#gaf67a7642c9003b36255b58776b494c96">pn_proactor_addr</a>
 (char *addr, size_t size, const char *host, const char *port)</td></tr>
+<tr class="memdesc:gaf67a7642c9003b36255b58776b494c96"><td 
class="mdescLeft">&#160;</td><td class="mdescRight">Format a host:port address 
string for <a class="el" 
href="group__proactor.html#gabb093e51449351cf5530bb300bd67ba1" title="Connect 
transport to addr and bind to connection. ">pn_proactor_connect2()</a> or 
pn_proactor_listen2()  <a 
href="#gaf67a7642c9003b36255b58776b494c96">More...</a><br /></td></tr>
+<tr class="separator:gaf67a7642c9003b36255b58776b494c96"><td 
class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gac2a925b3de00efd8cd40fa9920169554"><td class="memItemLeft" 
align="right" valign="top">PNP_EXTERN <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#gac2a925b3de00efd8cd40fa9920169554">pn_proactor</a> 
(void)</td></tr>
+<tr class="memdesc:gac2a925b3de00efd8cd40fa9920169554"><td 
class="mdescLeft">&#160;</td><td class="mdescRight">Create a proactor.  <a 
href="#gac2a925b3de00efd8cd40fa9920169554">More...</a><br /></td></tr>
+<tr class="separator:gac2a925b3de00efd8cd40fa9920169554"><td 
class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga5260c2653d4af5eb2f1c8c6190e9d6cf"><td class="memItemLeft" 
align="right" valign="top">PNP_EXTERN void&#160;</td><td class="memItemRight" 
valign="bottom"><a class="el" 
href="group__proactor.html#ga5260c2653d4af5eb2f1c8c6190e9d6cf">pn_proactor_free</a>
 (<a class="el" 
href="group__proactor.html#gabba42c7929dfceb9d296535bad0c93dc">pn_proactor_t</a>
 *proactor)</td></tr>
+<tr class="memdesc:ga5260c2653d4af5eb2f1c8c6190e9d6cf"><td 
class="mdescLeft">&#160;</td><td class="mdescRight">Free the proactor.  <a 
href="#ga5260c2653d4af5eb2f1c8c6190e9d6cf">More...</a><br /></td></tr>
+<tr class="separator:ga5260c2653d4af5eb2f1c8c6190e9d6cf"><td 
class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gabb093e51449351cf5530bb300bd67ba1"><td class="memItemLeft" 
align="right" valign="top">PNP_EXTERN void&#160;</td><td class="memItemRight" 
valign="bottom"><a class="el" 
href="group__proactor.html#gabb093e51449351cf5530bb300bd67ba1">pn_proactor_connect2</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, <a class="el" 
href="group__transport.html#gac26eda05f649bbf0399f3d8d78d12fa8">pn_transport_t</a>
 *transport, const char *addr)</td></tr>
+<tr class="memdesc:gabb093e51449351cf5530bb300bd67ba1"><td 
class="mdescLeft">&#160;</td><td class="mdescRight">Connect 
<code>transport</code> to <code>addr</code> and bind to 
<code>connection</code>.  <a 
href="#gabb093e51449351cf5530bb300bd67ba1">More...</a><br /></td></tr>
+<tr class="separator:gabb093e51449351cf5530bb300bd67ba1"><td 
class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga9a9d1c4138226fa87160f4769b87f8e6"><td class="memItemLeft" 
align="right" valign="top">PNP_EXTERN void&#160;</td><td class="memItemRight" 
valign="bottom"><a class="el" 
href="group__proactor.html#ga9a9d1c4138226fa87160f4769b87f8e6">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 *addr)</td></tr>
+<tr class="separator:ga9a9d1c4138226fa87160f4769b87f8e6"><td 
class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gacbed6a4ab75ef8452c10d52e4cd62752"><td class="memItemLeft" 
align="right" valign="top">PNP_EXTERN void&#160;</td><td class="memItemRight" 
valign="bottom"><a class="el" 
href="group__proactor.html#gacbed6a4ab75ef8452c10d52e4cd62752">pn_proactor_listen</a>
 (<a class="el" 
href="group__proactor.html#gabba42c7929dfceb9d296535bad0c93dc">pn_proactor_t</a>
 *proactor, <a class="el" 
href="group__listener.html#ga68ac7072ae60612d0bca5470014bf216">pn_listener_t</a>
 *listener, const char *addr, int backlog)</td></tr>
+<tr class="memdesc:gacbed6a4ab75ef8452c10d52e4cd62752"><td 
class="mdescLeft">&#160;</td><td class="mdescRight">Start listening for 
incoming connections.  <a 
href="#gacbed6a4ab75ef8452c10d52e4cd62752">More...</a><br /></td></tr>
+<tr class="separator:gacbed6a4ab75ef8452c10d52e4cd62752"><td 
class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gac600bd88ed0fc6c2b66bed4a8740bd68"><td class="memItemLeft" 
align="right" valign="top">PNP_EXTERN void&#160;</td><td class="memItemRight" 
valign="bottom"><a class="el" 
href="group__proactor.html#gac600bd88ed0fc6c2b66bed4a8740bd68">pn_proactor_disconnect</a>
 (<a class="el" 
href="group__proactor.html#gabba42c7929dfceb9d296535bad0c93dc">pn_proactor_t</a>
 *proactor, <a class="el" 
href="group__condition.html#ga11eb7db7d2c205169fe3d47c996a95a5">pn_condition_t</a>
 *condition)</td></tr>
+<tr class="memdesc:gac600bd88ed0fc6c2b66bed4a8740bd68"><td 
class="mdescLeft">&#160;</td><td class="mdescRight">Disconnect all connections 
and listeners belonging to the proactor.  <a 
href="#gac600bd88ed0fc6c2b66bed4a8740bd68">More...</a><br /></td></tr>
+<tr class="separator:gac600bd88ed0fc6c2b66bed4a8740bd68"><td 
class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga2b66a46f3e557010ec61bd105326753d"><td class="memItemLeft" 
align="right" valign="top">PNP_EXTERN <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#ga2b66a46f3e557010ec61bd105326753d">pn_proactor_wait</a>
 (<a class="el" 
href="group__proactor.html#gabba42c7929dfceb9d296535bad0c93dc">pn_proactor_t</a>
 *proactor)</td></tr>
+<tr class="memdesc:ga2b66a46f3e557010ec61bd105326753d"><td 
class="mdescLeft">&#160;</td><td class="mdescRight">Wait until there are <a 
class="el" href="group__proactor__events.html">Proactor events</a> to handle.  
<a href="#ga2b66a46f3e557010ec61bd105326753d">More...</a><br /></td></tr>
+<tr class="separator:ga2b66a46f3e557010ec61bd105326753d"><td 
class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga957eae24db6ec4962af79c5a06106115"><td class="memItemLeft" 
align="right" valign="top">PNP_EXTERN <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#ga957eae24db6ec4962af79c5a06106115">pn_proactor_get</a>
 (<a class="el" 
href="group__proactor.html#gabba42c7929dfceb9d296535bad0c93dc">pn_proactor_t</a>
 *proactor)</td></tr>
+<tr class="memdesc:ga957eae24db6ec4962af79c5a06106115"><td 
class="mdescLeft">&#160;</td><td class="mdescRight">Return <a class="el" 
href="group__proactor__events.html">Proactor events</a> if any are available 
immediately.  <a href="#ga957eae24db6ec4962af79c5a06106115">More...</a><br 
/></td></tr>
+<tr class="separator:ga957eae24db6ec4962af79c5a06106115"><td 
class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gade60ff2292b74841766f953b906285c0"><td class="memItemLeft" 
align="right" valign="top">PNP_EXTERN void&#160;</td><td class="memItemRight" 
valign="bottom"><a class="el" 
href="group__proactor.html#gade60ff2292b74841766f953b906285c0">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:gade60ff2292b74841766f953b906285c0"><td 
class="mdescLeft">&#160;</td><td class="mdescRight">Call when finished handling 
a batch of events.  <a 
href="#gade60ff2292b74841766f953b906285c0">More...</a><br /></td></tr>
+<tr class="separator:gade60ff2292b74841766f953b906285c0"><td 
class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaa5255cd1bcb5d7f5639b53dc30712711"><td class="memItemLeft" 
align="right" valign="top">PNP_EXTERN void&#160;</td><td class="memItemRight" 
valign="bottom"><a class="el" 
href="group__proactor.html#gaa5255cd1bcb5d7f5639b53dc30712711">pn_proactor_interrupt</a>
 (<a class="el" 
href="group__proactor.html#gabba42c7929dfceb9d296535bad0c93dc">pn_proactor_t</a>
 *proactor)</td></tr>
+<tr class="memdesc:gaa5255cd1bcb5d7f5639b53dc30712711"><td 
class="mdescLeft">&#160;</td><td class="mdescRight">Return a <a class="el" 
href="group__event.html#gga4876e2eed24a4d4e4c52b99842103cdaaee05826a80e94b5b86c4544e4715f499">PN_PROACTOR_INTERRUPT</a>
 event as soon as possible.  <a 
href="#gaa5255cd1bcb5d7f5639b53dc30712711">More...</a><br /></td></tr>
+<tr class="separator:gaa5255cd1bcb5d7f5639b53dc30712711"><td 
class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gad7cd71f06282eb290699d90c316b2d32"><td class="memItemLeft" 
align="right" valign="top">PNP_EXTERN void&#160;</td><td class="memItemRight" 
valign="bottom"><a class="el" 
href="group__proactor.html#gad7cd71f06282eb290699d90c316b2d32">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:gad7cd71f06282eb290699d90c316b2d32"><td 
class="mdescLeft">&#160;</td><td class="mdescRight">Return a <a class="el" 
href="group__event.html#gga4876e2eed24a4d4e4c52b99842103cdaa4afa8c2da61f4c665c669fbe37b1c5fe">PN_PROACTOR_TIMEOUT</a>
 after <code>timeout</code> milliseconds elapse.  <a 
href="#gad7cd71f06282eb290699d90c316b2d32">More...</a><br /></td></tr>
+<tr class="separator:gad7cd71f06282eb290699d90c316b2d32"><td 
class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gac206e4d0a1b7546d940a83cdd79ce93f"><td class="memItemLeft" 
align="right" valign="top">PNP_EXTERN void&#160;</td><td class="memItemRight" 
valign="bottom"><a class="el" 
href="group__proactor.html#gac206e4d0a1b7546d940a83cdd79ce93f">pn_proactor_cancel_timeout</a>
 (<a class="el" 
href="group__proactor.html#gabba42c7929dfceb9d296535bad0c93dc">pn_proactor_t</a>
 *proactor)</td></tr>
+<tr class="memdesc:gac206e4d0a1b7546d940a83cdd79ce93f"><td 
class="mdescLeft">&#160;</td><td class="mdescRight">Cancel the pending timeout 
set by <a class="el" 
href="group__proactor.html#gad7cd71f06282eb290699d90c316b2d32" title="Return a 
PN_PROACTOR_TIMEOUT after timeout milliseconds elapse. 
">pn_proactor_set_timeout()</a>.  <a 
href="#gac206e4d0a1b7546d940a83cdd79ce93f">More...</a><br /></td></tr>
+<tr class="separator:gac206e4d0a1b7546d940a83cdd79ce93f"><td 
class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga1950236260353f82729dbb4589ef6c27"><td class="memItemLeft" 
align="right" valign="top">PNP_EXTERN void&#160;</td><td class="memItemRight" 
valign="bottom"><a class="el" 
href="group__proactor.html#ga1950236260353f82729dbb4589ef6c27">pn_proactor_release_connection</a>
 (<a class="el" 
href="group__connection.html#ga886351d81ff3a977a284a206526c5aff">pn_connection_t</a>
 *connection)</td></tr>
+<tr class="memdesc:ga1950236260353f82729dbb4589ef6c27"><td 
class="mdescLeft">&#160;</td><td class="mdescRight">Release ownership of 
<code>connection</code>, disassociate it from its proactor.  <a 
href="#ga1950236260353f82729dbb4589ef6c27">More...</a><br /></td></tr>
+<tr class="separator:ga1950236260353f82729dbb4589ef6c27"><td 
class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga0f49c771fe3bff54f58c9d583ca30560"><td class="memItemLeft" 
align="right" valign="top">PNP_EXTERN void&#160;</td><td class="memItemRight" 
valign="bottom"><a class="el" 
href="group__proactor.html#ga0f49c771fe3bff54f58c9d583ca30560">pn_connection_wake</a>
 (<a class="el" 
href="group__connection.html#ga886351d81ff3a977a284a206526c5aff">pn_connection_t</a>
 *connection)</td></tr>
+<tr class="memdesc:ga0f49c771fe3bff54f58c9d583ca30560"><td 
class="mdescLeft">&#160;</td><td class="mdescRight">Return a <a class="el" 
href="group__event.html#gga4876e2eed24a4d4e4c52b99842103cdaa28a2bfee806bbc1fe31499c8eec39db0">PN_CONNECTION_WAKE</a>
 event for <code>connection</code> as soon as possible.  <a 
href="#ga0f49c771fe3bff54f58c9d583ca30560">More...</a><br /></td></tr>
+<tr class="separator:ga0f49c771fe3bff54f58c9d583ca30560"><td 
class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga4727a4e26f19efcff0d48960cbba2f40"><td class="memItemLeft" 
align="right" valign="top">PNP_EXTERN <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#ga4727a4e26f19efcff0d48960cbba2f40">pn_connection_proactor</a>
 (<a class="el" 
href="group__connection.html#ga886351d81ff3a977a284a206526c5aff">pn_connection_t</a>
 *connection)</td></tr>
+<tr class="memdesc:ga4727a4e26f19efcff0d48960cbba2f40"><td 
class="mdescLeft">&#160;</td><td class="mdescRight">Return the proactor 
associated with a connection.  <a 
href="#ga4727a4e26f19efcff0d48960cbba2f40">More...</a><br /></td></tr>
+<tr class="separator:ga4727a4e26f19efcff0d48960cbba2f40"><td 
class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gac412771217decd84bd70931acbd0828a"><td class="memItemLeft" 
align="right" valign="top">PNP_EXTERN <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#gac412771217decd84bd70931acbd0828a">pn_event_proactor</a>
 (<a class="el" 
href="group__event.html#ga87f3028b4888632bbd56fb71ac737ae8">pn_event_t</a> 
*event)</td></tr>
+<tr class="memdesc:gac412771217decd84bd70931acbd0828a"><td 
class="mdescLeft">&#160;</td><td class="mdescRight">Return the proactor 
associated with an event.  <a 
href="#gac412771217decd84bd70931acbd0828a">More...</a><br /></td></tr>
+<tr class="separator:gac412771217decd84bd70931acbd0828a"><td 
class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gad45b60b98f2bf385ee6ca5dca7b3f42d"><td class="memItemLeft" 
align="right" valign="top">PNP_EXTERN <a class="el" 
href="group__api__types.html#ga9a701bc6dc9af9f42c3f4679172a723c">pn_millis_t</a>&#160;</td><td
 class="memItemRight" valign="bottom"><a class="el" 
href="group__proactor.html#gad45b60b98f2bf385ee6ca5dca7b3f42d">pn_proactor_now</a>
 (void)</td></tr>
+<tr class="memdesc:gad45b60b98f2bf385ee6ca5dca7b3f42d"><td 
class="mdescLeft">&#160;</td><td class="mdescRight">Get the real elapsed time 
since an arbitrary point in the past in milliseconds.  <a 
href="#gad45b60b98f2bf385ee6ca5dca7b3f42d">More...</a><br /></td></tr>
+<tr class="separator:gad45b60b98f2bf385ee6ca5dca7b3f42d"><td 
class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed 
Description</h2>
+<p><b>Unsettled API</b> - An API for multithreaded IO. </p>
+<p>The proactor associates an abstract AMQP protocol <a class="el" 
href="group__connection.html">Connection</a> with a concrete IO <a class="el" 
href="group__transport.html">Transport</a> implementation for outgoing and 
incoming connections.</p>
+<p><a class="el" 
href="group__proactor.html#ga2b66a46f3e557010ec61bd105326753d" title="Wait 
until there are Proactor events to handle. ">pn_proactor_wait()</a> returns <a 
class="el" href="group__proactor__events.html">Proactor events</a> to 
application threads for handling.</p>
+<p>The <code>pn_proactor_*</code> functions are thread-safe, but to handle <a 
class="el" href="group__proactor__events.html">Proactor events</a> you must 
also use the <a class="el" href="group__core.html">Core</a> APIs, which are 
not. <a class="el" href="group__core.html">Core</a> objects associated with 
different connections can be used concurrently, but objects associated with a 
single connection can only be used from their own thread.</p>
+<p>The proactor <em>serializes</em> <a class="el" 
href="group__proactor__events.html">Proactor events</a> for each 
connection</p><ul>
+<li>it never returns <a class="el" 
href="group__proactor__events.html">Proactor events</a> for the same connection 
concurrently in different threads. Event-handling code can safely use any <a 
class="el" href="group__core.html">Core</a> object obtained from the current 
event. You can attach application data to <a class="el" 
href="group__core.html">Core</a> objects (for example with <a class="el" 
href="group__connection.html#gad8b6c777b525c9da9401e3a770db15da" title="Get the 
attachments that are associated with a connection object. 
">pn_connection_attachments()</a>).</li>
+</ul>
+<p><a class="el" 
href="group__proactor.html#ga0f49c771fe3bff54f58c9d583ca30560" title="Return a 
PN_CONNECTION_WAKE event for connection as soon as possible. 
">pn_connection_wake()</a> allows any thread to "wake up" a connection. It 
causes <a class="el" 
href="group__proactor.html#ga2b66a46f3e557010ec61bd105326753d" title="Wait 
until there are Proactor events to handle. ">pn_proactor_wait()</a> to return a 
<a class="el" 
href="group__event.html#gga4876e2eed24a4d4e4c52b99842103cdaa28a2bfee806bbc1fe31499c8eec39db0">PN_CONNECTION_WAKE</a>
 event that is serialized with the connection's other <a class="el" 
href="group__proactor__events.html">Proactor events</a>. You can use this to 
implement communication between different connections, or from non-proactor 
threads.</p>
+<p>Serialization and <a class="el" 
href="group__proactor.html#ga0f49c771fe3bff54f58c9d583ca30560" title="Return a 
PN_CONNECTION_WAKE event for connection as soon as possible. 
">pn_connection_wake()</a> simplify building applications with a shared thread 
pool, which serialize work per connection. Many other variations are possible, 
but you are responsible for any additional synchronization needed. </p>
+<h2 class="groupheader">Function Documentation</h2>
+<a id="ga9f6a27999303c6082edc581f880de37c"></a>
+<h2 class="memtitle"><span class="permalink"><a 
href="#ga9f6a27999303c6082edc581f880de37c">&#9670;&nbsp;</a></span>pn_netaddr_str()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">PNP_EXTERN int pn_netaddr_str </td>
+          <td>(</td>
+          <td class="paramtype">const <a class="el" 
href="group__proactor.html#ga79d820cd3ad391cc5207c83dbb373a9c">pn_netaddr_t</a> 
*&#160;</td>
+          <td class="paramname"><em>addr</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">char *&#160;</td>
+          <td class="paramname"><em>buf</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">size_t&#160;</td>
+          <td class="paramname"><em>size</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Format a network address as a human-readable string in <code>buf</code>. 
</p>
+<dl class="section return"><dt>Returns</dt><dd>the length of the string 
(excluding trailing '\0'), if &gt;= size then the address was truncated. 
</dd></dl>
+
+</div>
+</div>
+<a id="ga7edab5e295c55e1c2169e39aaa082f8b"></a>
+<h2 class="memtitle"><span class="permalink"><a 
href="#ga7edab5e295c55e1c2169e39aaa082f8b">&#9670;&nbsp;</a></span>pn_netaddr_local()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">PNP_EXTERN const <a class="el" 
href="group__proactor.html#ga79d820cd3ad391cc5207c83dbb373a9c">pn_netaddr_t</a>*
 pn_netaddr_local </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" 
href="group__transport.html#gac26eda05f649bbf0399f3d8d78d12fa8">pn_transport_t</a>
 *&#160;</td>
+          <td class="paramname"><em>t</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Get the local address of a transport. </p>
+<p>Return <code>NULL</code> if not available. Pointer is invalid after the 
transport closes (PN_TRANSPORT_CLOSED event is handled) </p>
+
+</div>
+</div>
+<a id="ga59fa5ba7adc39bc8549645d5d33082c0"></a>
+<h2 class="memtitle"><span class="permalink"><a 
href="#ga59fa5ba7adc39bc8549645d5d33082c0">&#9670;&nbsp;</a></span>pn_netaddr_remote()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">PNP_EXTERN const <a class="el" 
href="group__proactor.html#ga79d820cd3ad391cc5207c83dbb373a9c">pn_netaddr_t</a>*
 pn_netaddr_remote </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" 
href="group__transport.html#gac26eda05f649bbf0399f3d8d78d12fa8">pn_transport_t</a>
 *&#160;</td>
+          <td class="paramname"><em>t</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Get the local address of a transport. </p>
+<p>Return <code>NULL</code> if not available. Pointer is invalid after the 
transport closes (PN_TRANSPORT_CLOSED event is handled) </p>
+
+</div>
+</div>
+<a id="ga955471a53dd486a6f227d8d57322a44c"></a>
+<h2 class="memtitle"><span class="permalink"><a 
href="#ga955471a53dd486a6f227d8d57322a44c">&#9670;&nbsp;</a></span>pn_netaddr_listening()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">PNP_EXTERN const <a class="el" 
href="group__proactor.html#ga79d820cd3ad391cc5207c83dbb373a9c">pn_netaddr_t</a>*
 pn_netaddr_listening </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" 
href="group__listener.html#ga68ac7072ae60612d0bca5470014bf216">pn_listener_t</a>
 *&#160;</td>
+          <td class="paramname"><em>l</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Get the listening addresses of a listener. </p>
+<p>Addresses are only available after the <a class="el" 
href="group__event.html#gga4876e2eed24a4d4e4c52b99842103cdaa6e25f00110ab278fd8b34fee00bd5fd7">PN_LISTENER_OPEN</a>
 event for the listener.</p>
+<p>A listener can have more than one address for several reasons:</p><ul>
+<li>DNS host records may indicate more than one address</li>
+<li>On a multi-homed host, listening on the default host "" will listen on all 
local addresses.</li>
+<li>Some IPv4/IPV6 configurations may expand a single address into a v4/v6 
pair.</li>
+</ul>
+<p><a class="el" 
href="group__proactor.html#ga6163449ac3b87782628448f192930eb0">pn_netaddr_next()</a>
 will iterate over the addresses in the list.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">l</td><td>points to the listener </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The first listening address or 
NULL if there are no addresses are available. Use <a class="el" 
href="group__proactor.html#ga6163449ac3b87782628448f192930eb0">pn_netaddr_next()</a>
 to iterate over the list. Pointer is invalid after the listener closes 
(PN_LISTENER_CLOSED event is handled) </dd></dl>
+
+</div>
+</div>
+<a id="ga6163449ac3b87782628448f192930eb0"></a>
+<h2 class="memtitle"><span class="permalink"><a 
href="#ga6163449ac3b87782628448f192930eb0">&#9670;&nbsp;</a></span>pn_netaddr_next()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">PNP_EXTERN const <a class="el" 
href="group__proactor.html#ga79d820cd3ad391cc5207c83dbb373a9c">pn_netaddr_t</a>*
 pn_netaddr_next </td>
+          <td>(</td>
+          <td class="paramtype">const <a class="el" 
href="group__proactor.html#ga79d820cd3ad391cc5207c83dbb373a9c">pn_netaddr_t</a> 
*&#160;</td>
+          <td class="paramname"><em>na</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<dl class="section return"><dt>Returns</dt><dd>Pointer to the next address in 
a list of addresses, NULL if at the end of the list or if this address is not 
part of a list. </dd></dl>
+
+</div>
+</div>
+<a id="ga00b1a40af2d837915d21cdb52ccb0c58"></a>
+<h2 class="memtitle"><span class="permalink"><a 
href="#ga00b1a40af2d837915d21cdb52ccb0c58">&#9670;&nbsp;</a></span>pn_netaddr_sockaddr()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">PNP_EXTERN const struct sockaddr* 
pn_netaddr_sockaddr </td>
+          <td>(</td>
+          <td class="paramtype">const <a class="el" 
href="group__proactor.html#ga79d820cd3ad391cc5207c83dbb373a9c">pn_netaddr_t</a> 
*&#160;</td>
+          <td class="paramname"><em>na</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>On POSIX or Windows, get the underlying <code>struct sockaddr</code>. </p>
+<p>Return NULL if not available. </p>
+
+</div>
+</div>
+<a id="gaddaf2b0b3e107d100e4c3658116a6c3c"></a>
+<h2 class="memtitle"><span class="permalink"><a 
href="#gaddaf2b0b3e107d100e4c3658116a6c3c">&#9670;&nbsp;</a></span>pn_netaddr_socklen()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">PNP_EXTERN size_t pn_netaddr_socklen </td>
+          <td>(</td>
+          <td class="paramtype">const <a class="el" 
href="group__proactor.html#ga79d820cd3ad391cc5207c83dbb373a9c">pn_netaddr_t</a> 
*&#160;</td>
+          <td class="paramname"><em>na</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>On POSIX or Windows, get the size of the underlying <code>struct 
sockaddr</code>. </p>
+<p>Return 0 if not available. </p>
+
+</div>
+</div>
+<a id="ga8cdeab8554e7d376a422dae8ac6d474b"></a>
+<h2 class="memtitle"><span class="permalink"><a 
href="#ga8cdeab8554e7d376a422dae8ac6d474b">&#9670;&nbsp;</a></span>pn_netaddr_host_port()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">PNP_EXTERN int pn_netaddr_host_port </td>
+          <td>(</td>
+          <td class="paramtype">const <a class="el" 
href="group__proactor.html#ga79d820cd3ad391cc5207c83dbb373a9c">pn_netaddr_t</a> 
*&#160;</td>
+          <td class="paramname"><em>na</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">char *&#160;</td>
+          <td class="paramname"><em>host</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">size_t&#160;</td>
+          <td class="paramname"><em>hlen</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">char *&#160;</td>
+          <td class="paramname"><em>port</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">size_t&#160;</td>
+          <td class="paramname"><em>plen</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Get the host and port name from na as separate strings. </p>
+<p>Returns 0 if successful, non-0 on error. </p>
+
+</div>
+</div>
+<a id="gaf67a7642c9003b36255b58776b494c96"></a>
+<h2 class="memtitle"><span class="permalink"><a 
href="#gaf67a7642c9003b36255b58776b494c96">&#9670;&nbsp;</a></span>pn_proactor_addr()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">PNP_EXTERN int pn_proactor_addr </td>
+          <td>(</td>
+          <td class="paramtype">char *&#160;</td>
+          <td class="paramname"><em>addr</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">size_t&#160;</td>
+          <td class="paramname"><em>size</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>Format a host:port address string for <a class="el" 
href="group__proactor.html#gabb093e51449351cf5530bb300bd67ba1" title="Connect 
transport to addr and bind to connection. ">pn_proactor_connect2()</a> or 
pn_proactor_listen2() </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramdir">[out]</td><td 
class="paramname">addr</td><td>address is copied to this buffer, with trailing 
'\0' </td></tr>
+    <tr><td class="paramdir">[in]</td><td class="paramname">size</td><td>size 
of addr buffer </td></tr>
+    <tr><td class="paramdir">[in]</td><td 
class="paramname">host</td><td>network host name, DNS name or IP address 
</td></tr>
+    <tr><td class="paramdir">[in]</td><td 
class="paramname">port</td><td>network service name or decimal port number, 
e.g. "amqp" or "5672" </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>the length of network address 
(excluding trailing '\0'), if &gt;= size then the address was truncated 
</dd></dl>
+
+</div>
+</div>
+<a id="gac2a925b3de00efd8cd40fa9920169554"></a>
+<h2 class="memtitle"><span class="permalink"><a 
href="#gac2a925b3de00efd8cd40fa9920169554">&#9670;&nbsp;</a></span>pn_proactor()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">PNP_EXTERN <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#ga5260c2653d4af5eb2f1c8c6190e9d6cf" title="Free the 
proactor. ">pn_proactor_free()</a> </p>
+
+</div>
+</div>
+<a id="ga5260c2653d4af5eb2f1c8c6190e9d6cf"></a>
+<h2 class="memtitle"><span class="permalink"><a 
href="#ga5260c2653d4af5eb2f1c8c6190e9d6cf">&#9670;&nbsp;</a></span>pn_proactor_free()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">PNP_EXTERN 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 open connections/listeners, clean up all resources. </p>
+
+</div>
+</div>
+<a id="gabb093e51449351cf5530bb300bd67ba1"></a>
+<h2 class="memtitle"><span class="permalink"><a 
href="#gabb093e51449351cf5530bb300bd67ba1">&#9670;&nbsp;</a></span>pn_proactor_connect2()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">PNP_EXTERN void pn_proactor_connect2 </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"><a class="el" 
href="group__transport.html#gac26eda05f649bbf0399f3d8d78d12fa8">pn_transport_t</a>
 *&#160;</td>
+          <td class="paramname"><em>transport</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char *&#160;</td>
+          <td class="paramname"><em>addr</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Connect <code>transport</code> to <code>addr</code> and bind to 
<code>connection</code>. </p>
+<p>Errors are returned as <a class="el" 
href="group__event.html#gga4876e2eed24a4d4e4c52b99842103cdaa1ca722ce3c0b2c13a33636cded8430ba">PN_TRANSPORT_CLOSED</a>
 events by <a class="el" 
href="group__proactor.html#ga2b66a46f3e557010ec61bd105326753d" title="Wait 
until there are Proactor events to handle. ">pn_proactor_wait()</a>.</p>
+<dl class="section note"><dt>Note</dt><dd>Thread-safe</dd></dl>
+<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>If NULL a new connection is created. 
<code>proactor</code> <em>takes ownership</em> of <code>connection</code> and 
will automatically call <a class="el" 
href="group__connection.html#ga00cbef1a9f5062a6e1f113fda923f65e" title="Free a 
connection object. ">pn_connection_free()</a> after the final <a class="el" 
href="group__event.html#gga4876e2eed24a4d4e4c52b99842103cdaa1ca722ce3c0b2c13a33636cded8430ba">PN_TRANSPORT_CLOSED</a>
 event is handled, or when <a class="el" 
href="group__proactor.html#ga5260c2653d4af5eb2f1c8c6190e9d6cf" title="Free the 
proactor. ">pn_proactor_free()</a> is called. You can prevent the automatic 
free with <a class="el" 
href="group__proactor.html#ga1950236260353f82729dbb4589ef6c27" title="Release 
ownership of connection, disassociate it from its proactor. 
">pn_proactor_release_connection()</a></td></tr>
+    <tr><td class="paramdir">[in]</td><td 
class="paramname">transport</td><td>If NULL a new transport is created. 
<code>proactor</code> <em>takes ownership</em> of <code>transport</code>, it 
will be freed even if <a class="el" 
href="group__proactor.html#ga1950236260353f82729dbb4589ef6c27" title="Release 
ownership of connection, disassociate it from its proactor. 
">pn_proactor_release_connection()</a> is called.</td></tr>
+    <tr><td class="paramdir">[in]</td><td class="paramname">addr</td><td>the 
"host:port" network address, constructed by <a class="el" 
href="group__proactor.html#gaf67a7642c9003b36255b58776b494c96" title="Format a 
host:port address string for pn_proactor_connect2() or pn_proactor_listen2() 
...">pn_proactor_addr()</a> An empty host will connect to the local host via 
the default protocol (IPV6 or IPV4). An empty port will connect to the standard 
AMQP port (5672). </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a id="ga9a9d1c4138226fa87160f4769b87f8e6"></a>
+<h2 class="memtitle"><span class="permalink"><a 
href="#ga9a9d1c4138226fa87160f4769b87f8e6">&#9670;&nbsp;</a></span>pn_proactor_connect()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">PNP_EXTERN void 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>addr</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="gacbed6a4ab75ef8452c10d52e4cd62752"></a>
+<h2 class="memtitle"><span class="permalink"><a 
href="#gacbed6a4ab75ef8452c10d52e4cd62752">&#9670;&nbsp;</a></span>pn_proactor_listen()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">PNP_EXTERN void 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__listener.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>addr</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 for incoming connections. </p>
+<p><a class="el" 
href="group__proactor.html#ga2b66a46f3e557010ec61bd105326753d" title="Wait 
until there are Proactor events to handle. ">pn_proactor_wait()</a> will return 
a <a class="el" 
href="group__event.html#gga4876e2eed24a4d4e4c52b99842103cdaa6e25f00110ab278fd8b34fee00bd5fd7">PN_LISTENER_OPEN</a>
 event when the listener is ready to accept connections, or a PN_LISTENER_CLOSE 
if the listen operation fails. If the listen failed, <a class="el" 
href="group__listener.html#gaa49d0d11a9f46a75fbbbebf6def2d4b2" title="Get the 
error condition for a listener. ">pn_listener_condition()</a> will be set.</p>
+<p>When the listener is closed by <a class="el" 
href="group__listener.html#ga17a5b8573f00e16b233c59a3bb17c104" title="Close the 
listener. ">pn_listener_close()</a>, or because of an error, a 
PN_LISTENER_CLOSE event will be returned and <a class="el" 
href="group__listener.html#gaa49d0d11a9f46a75fbbbebf6def2d4b2" title="Get the 
error condition for a listener. ">pn_listener_condition()</a> will be set for 
an error.</p>
+<dl class="section note"><dt>Note</dt><dd>Thread-safe</dd></dl>
+<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><code>proactor</code> <em>takes 
ownership</em> of <code>listener</code>, and will automatically call <a 
class="el" href="group__listener.html#gaf5769baf81fdfa80e5c4326dd4a9ab63" 
title="Free a listener. ">pn_listener_free()</a> after the final 
PN_LISTENER_CLOSE event is handled, or when <a class="el" 
href="group__proactor.html#ga5260c2653d4af5eb2f1c8c6190e9d6cf" title="Free the 
proactor. ">pn_proactor_free()</a> is called.</td></tr>
+    <tr><td class="paramdir">[in]</td><td class="paramname">addr</td><td>the 
"host:port" network address, constructed by <a class="el" 
href="group__proactor.html#gaf67a7642c9003b36255b58776b494c96" title="Format a 
host:port address string for pn_proactor_connect2() or pn_proactor_listen2() 
...">pn_proactor_addr()</a> An empty host will listen for all protocols (IPV6 
and IPV4) on all local interfaces. An empty port will listen on the standard 
AMQP port (5672).</td></tr>
+    <tr><td class="paramdir">[in]</td><td class="paramname">backlog</td><td>of 
un-handled connection requests to allow before refusing connections. If 
<code>addr</code> resolves to multiple interface/protocol combinations, the 
backlog applies to each separately. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a id="gac600bd88ed0fc6c2b66bed4a8740bd68"></a>
+<h2 class="memtitle"><span class="permalink"><a 
href="#gac600bd88ed0fc6c2b66bed4a8740bd68">&#9670;&nbsp;</a></span>pn_proactor_disconnect()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">PNP_EXTERN void pn_proactor_disconnect </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__condition.html#ga11eb7db7d2c205169fe3d47c996a95a5">pn_condition_t</a>
 *&#160;</td>
+          <td class="paramname"><em>condition</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Disconnect all connections and listeners belonging to the proactor. </p>
+<p><a class="el" 
href="group__event.html#gga4876e2eed24a4d4e4c52b99842103cdaad5920df168cd28daaf253cad789d8aca">PN_LISTENER_CLOSE</a>,
 <a class="el" 
href="group__event.html#gga4876e2eed24a4d4e4c52b99842103cdaa1ca722ce3c0b2c13a33636cded8430ba">PN_TRANSPORT_CLOSED</a>
 and other <a class="el" href="group__proactor__events.html">Proactor 
events</a> are generated as usual.</p>
+<p>A <a class="el" 
href="group__event.html#gga4876e2eed24a4d4e4c52b99842103cdaa894e93f167ef39e28a07c9cdf6b1181b">PN_PROACTOR_INACTIVE</a>
 event will be generated when all connections and listeners are disconnected 
and no timeout is pending. The event will also be generated if there are no 
listeners, connections or timeout when <a class="el" 
href="group__proactor.html#gac600bd88ed0fc6c2b66bed4a8740bd68" 
title="Disconnect all connections and listeners belonging to the proactor. 
">pn_proactor_disconnect()</a> is called.</p>
+<p>Creating new connections and listeners after this call and before the 
PN_PROACTOR_INACTIVE event may prevent the proactor from becoming inactive. 
After the PN_PROACTOR_INACTIVE event, the proactor can be used normally.</p>
+<dl class="section note"><dt>Note</dt><dd>Thread-safe</dd></dl>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">proactor</td><td>the proactor</td></tr>
+    <tr><td class="paramname">condition</td><td>if not NULL the condition data 
is copied to each disconnected transports and listener and is available in the 
close event. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a id="ga2b66a46f3e557010ec61bd105326753d"></a>
+<h2 class="memtitle"><span class="permalink"><a 
href="#ga2b66a46f3e557010ec61bd105326753d">&#9670;&nbsp;</a></span>pn_proactor_wait()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">PNP_EXTERN <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 until there are <a class="el" 
href="group__proactor__events.html">Proactor events</a> to handle. </p>
+<p>You must call <a class="el" 
href="group__proactor.html#gade60ff2292b74841766f953b906285c0" title="Call when 
finished handling a batch of events. ">pn_proactor_done()</a> when you are 
finished with the batch, you must not use the batch pointer after calling <a 
class="el" href="group__proactor.html#gade60ff2292b74841766f953b906285c0" 
title="Call when finished handling a batch of events. 
">pn_proactor_done()</a>.</p>
+<p>Normally it is most efficient to handle the entire batch in the calling 
thread and then call <a class="el" 
href="group__proactor.html#gade60ff2292b74841766f953b906285c0" title="Call when 
finished handling a batch of events. ">pn_proactor_done()</a>, but see <a 
class="el" href="group__proactor.html#gade60ff2292b74841766f953b906285c0" 
title="Call when finished handling a batch of events. ">pn_proactor_done()</a> 
for more options.</p>
+<p><a class="el" 
href="group__proactor.html#ga957eae24db6ec4962af79c5a06106115" title="Return 
Proactor events if any are available immediately. ">pn_proactor_get()</a> is a 
non-blocking version of this call.</p>
+<dl class="section note"><dt>Note</dt><dd>Thread-safe</dd></dl>
+<dl class="section return"><dt>Returns</dt><dd>a non-empty batch of events 
that must be processed in sequence. </dd></dl>
+
+</div>
+</div>
+<a id="ga957eae24db6ec4962af79c5a06106115"></a>
+<h2 class="memtitle"><span class="permalink"><a 
href="#ga957eae24db6ec4962af79c5a06106115">&#9670;&nbsp;</a></span>pn_proactor_get()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">PNP_EXTERN <a class="el" 
href="group__event.html#ga6bc581dfeaa8e8d46d07d37229d565c9">pn_event_batch_t</a>*
 pn_proactor_get </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>Return <a class="el" href="group__proactor__events.html">Proactor 
events</a> if any are available immediately. </p>
+<p>If not, return NULL. If the return value is not NULL, the behavior is the 
same as <a class="el" 
href="group__proactor.html#ga2b66a46f3e557010ec61bd105326753d" title="Wait 
until there are Proactor events to handle. ">pn_proactor_wait()</a></p>
+<dl class="section note"><dt>Note</dt><dd>Thread-safe </dd></dl>
+
+</div>
+</div>
+<a id="gade60ff2292b74841766f953b906285c0"></a>
+<h2 class="memtitle"><span class="permalink"><a 
href="#gade60ff2292b74841766f953b906285c0">&#9670;&nbsp;</a></span>pn_proactor_done()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">PNP_EXTERN 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 finished handling a batch of events. </p>
+<p>Must be called exactly once to match each call to <a class="el" 
href="group__proactor.html#ga2b66a46f3e557010ec61bd105326753d" title="Wait 
until there are Proactor 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>
+
+</div>
+</div>
+<a id="gaa5255cd1bcb5d7f5639b53dc30712711"></a>
+<h2 class="memtitle"><span class="permalink"><a 
href="#gaa5255cd1bcb5d7f5639b53dc30712711">&#9670;&nbsp;</a></span>pn_proactor_interrupt()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">PNP_EXTERN 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>Return a <a class="el" 
href="group__event.html#gga4876e2eed24a4d4e4c52b99842103cdaaee05826a80e94b5b86c4544e4715f499">PN_PROACTOR_INTERRUPT</a>
 event as soon as possible. </p>
+<p>At least one PN_PROACTOR_INTERRUPT event will be returned after this call. 
Interrupts can be "coalesced" - if several <a class="el" 
href="group__proactor.html#gaa5255cd1bcb5d7f5639b53dc30712711" title="Return a 
PN_PROACTOR_INTERRUPT event as soon as possible. ">pn_proactor_interrupt()</a> 
calls happen close together, there may be only one PN_PROACTOR_INTERRUPT event 
that occurs after all of them.</p>
+<dl class="section note"><dt>Note</dt><dd>Thread-safe and async-signal-safe: 
can be called in a signal handler. This is the only pn_proactor function that 
is async-signal-safe. </dd></dl>
+
+</div>
+</div>
+<a id="gad7cd71f06282eb290699d90c316b2d32"></a>
+<h2 class="memtitle"><span class="permalink"><a 
href="#gad7cd71f06282eb290699d90c316b2d32">&#9670;&nbsp;</a></span>pn_proactor_set_timeout()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">PNP_EXTERN 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>Return a <a class="el" 
href="group__event.html#gga4876e2eed24a4d4e4c52b99842103cdaa4afa8c2da61f4c665c669fbe37b1c5fe">PN_PROACTOR_TIMEOUT</a>
 after <code>timeout</code> milliseconds elapse. </p>
+<p>If no threads are blocked in <a class="el" 
href="group__proactor.html#ga2b66a46f3e557010ec61bd105326753d" title="Wait 
until there are Proactor events to handle. ">pn_proactor_wait()</a> when the 
timeout elapses, the event will be delivered to the next available thread.</p>
+<p>Calling <a class="el" 
href="group__proactor.html#gad7cd71f06282eb290699d90c316b2d32" title="Return a 
PN_PROACTOR_TIMEOUT after timeout milliseconds elapse. 
">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.</p>
+<dl class="section note"><dt>Note</dt><dd>Thread-safe </dd></dl>
+
+</div>
+</div>
+<a id="gac206e4d0a1b7546d940a83cdd79ce93f"></a>
+<h2 class="memtitle"><span class="permalink"><a 
href="#gac206e4d0a1b7546d940a83cdd79ce93f">&#9670;&nbsp;</a></span>pn_proactor_cancel_timeout()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">PNP_EXTERN void pn_proactor_cancel_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><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Cancel the pending timeout set by <a class="el" 
href="group__proactor.html#gad7cd71f06282eb290699d90c316b2d32" title="Return a 
PN_PROACTOR_TIMEOUT after timeout milliseconds elapse. 
">pn_proactor_set_timeout()</a>. </p>
+<p>Does nothing if no timeout is set.</p>
+<dl class="section note"><dt>Note</dt><dd>Thread-safe </dd></dl>
+
+</div>
+</div>
+<a id="ga1950236260353f82729dbb4589ef6c27"></a>
+<h2 class="memtitle"><span class="permalink"><a 
href="#ga1950236260353f82729dbb4589ef6c27">&#9670;&nbsp;</a></span>pn_proactor_release_connection()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">PNP_EXTERN void pn_proactor_release_connection 
</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>Release ownership of <code>connection</code>, disassociate it from its 
proactor. </p>
+<p>The connection and related objects (<a class="el" 
href="group__session.html">sessions</a>, <a class="el" 
href="group__link.html">links</a> and so on) remain intact, but the transport 
is closed and unbound. The proactor will not return any more events for this 
connection. The caller must call <a class="el" 
href="group__connection.html#ga00cbef1a9f5062a6e1f113fda923f65e" title="Free a 
connection object. ">pn_connection_free()</a>, either directly or indirectly by 
re-using <code>connection</code> in another call to <a class="el" 
href="group__proactor.html#gabb093e51449351cf5530bb300bd67ba1" title="Connect 
transport to addr and bind to connection. ">pn_proactor_connect2()</a> or 
pn_proactor_listen2().</p>
+<dl class="section note"><dt>Note</dt><dd><b>Not thread-safe</b>. Call this 
function from a connection event handler.</dd>
+<dd>
+If <code>connection</code> does not belong to a proactor, this call does 
nothing.</dd>
+<dd>
+This has nothing to do with <a class="el" 
href="group__connection.html#ga7c88b4833cf81d801b27d00b45d137b5" title="Release 
a connection object. ">pn_connection_release()</a>. </dd></dl>
+
+</div>
+</div>
+<a id="ga0f49c771fe3bff54f58c9d583ca30560"></a>
+<h2 class="memtitle"><span class="permalink"><a 
href="#ga0f49c771fe3bff54f58c9d583ca30560">&#9670;&nbsp;</a></span>pn_connection_wake()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">PNP_EXTERN 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>Return a <a class="el" 
href="group__event.html#gga4876e2eed24a4d4e4c52b99842103cdaa28a2bfee806bbc1fe31499c8eec39db0">PN_CONNECTION_WAKE</a>
 event for <code>connection</code> as soon as possible. </p>
+<p>At least one wake event will be returned, serialized with other <a 
class="el" href="group__proactor__events.html">Proactor events</a> for the same 
connection. Wakes can be "coalesced" - if several <a class="el" 
href="group__proactor.html#ga0f49c771fe3bff54f58c9d583ca30560" title="Return a 
PN_CONNECTION_WAKE event for connection as soon as possible. 
">pn_connection_wake()</a> calls happen close together, there may be only one 
PN_CONNECTION_WAKE event that occurs after all of them.</p>
+<dl class="section note"><dt>Note</dt><dd>If <code>connection</code> does not 
belong to a proactor, this call does nothing.</dd>
+<dd>
+Thread-safe </dd></dl>
+
+</div>
+</div>
+<a id="ga4727a4e26f19efcff0d48960cbba2f40"></a>
+<h2 class="memtitle"><span class="permalink"><a 
href="#ga4727a4e26f19efcff0d48960cbba2f40">&#9670;&nbsp;</a></span>pn_connection_proactor()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">PNP_EXTERN <a class="el" 
href="group__proactor.html#gabba42c7929dfceb9d296535bad0c93dc">pn_proactor_t</a>*
 pn_connection_proactor </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>Return the proactor associated with a connection. </p>
+<dl class="section note"><dt>Note</dt><dd><b>Not thread-safe</b></dd></dl>
+<dl class="section return"><dt>Returns</dt><dd>the proactor or NULL if the 
connection does not belong to a proactor. </dd></dl>
+
+</div>
+</div>
+<a id="gac412771217decd84bd70931acbd0828a"></a>
+<h2 class="memtitle"><span class="permalink"><a 
href="#gac412771217decd84bd70931acbd0828a">&#9670;&nbsp;</a></span>pn_event_proactor()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">PNP_EXTERN <a class="el" 
href="group__proactor.html#gabba42c7929dfceb9d296535bad0c93dc">pn_proactor_t</a>*
 pn_event_proactor </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" 
href="group__event.html#ga87f3028b4888632bbd56fb71ac737ae8">pn_event_t</a> 
*&#160;</td>
+          <td class="paramname"><em>event</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Return the proactor associated with an event. </p>
+<dl class="section note"><dt>Note</dt><dd><b>Not thread-safe</b></dd></dl>
+<dl class="section return"><dt>Returns</dt><dd>the proactor or NULL if the 
connection does not belong to a proactor. </dd></dl>
+
+</div>
+</div>
+<a id="gad45b60b98f2bf385ee6ca5dca7b3f42d"></a>
+<h2 class="memtitle"><span class="permalink"><a 
href="#gad45b60b98f2bf385ee6ca5dca7b3f42d">&#9670;&nbsp;</a></span>pn_proactor_now()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">PNP_EXTERN <a class="el" 
href="group__api__types.html#ga9a701bc6dc9af9f42c3f4679172a723c">pn_millis_t</a>
 pn_proactor_now </td>
+          <td>(</td>
+          <td class="paramtype">void&#160;</td>
+          <td class="paramname"></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Get the real elapsed time since an arbitrary point in the past in 
milliseconds. </p>
+<p>This may be used as a portable way to get a process-local timestamp for the 
current time. It is monotonically increasing and will never go backwards.</p>
+<p>Note: this is not a suitable value for an AMQP timestamp to be sent as part 
of a message. Such a timestamp should use the real time in milliseconds since 
the epoch.</p>
+<dl class="section note"><dt>Note</dt><dd>Thread-safe </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.13 </li>
+  </ul>
+</div>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/qpid-site/blob/8dabb34e/content/releases/qpid-proton-0.21.0/proton/c/api/group__proactor.js
----------------------------------------------------------------------
diff --git 
a/content/releases/qpid-proton-0.21.0/proton/c/api/group__proactor.js 
b/content/releases/qpid-proton-0.21.0/proton/c/api/group__proactor.js
new file mode 100755
index 0000000..59e460d
--- /dev/null
+++ b/content/releases/qpid-proton-0.21.0/proton/c/api/group__proactor.js
@@ -0,0 +1,32 @@
+var group__proactor =
+[
+    [ "PN_MAX_ADDR", 
"group__proactor.html#ga29ae114b42fb797c103dc9883ebcb256", null ],
+    [ "pn_netaddr_t", 
"group__proactor.html#ga79d820cd3ad391cc5207c83dbb373a9c", null ],
+    [ "pn_proactor_t", 
"group__proactor.html#gabba42c7929dfceb9d296535bad0c93dc", null ],
+    [ "pn_netaddr_str", 
"group__proactor.html#ga9f6a27999303c6082edc581f880de37c", null ],
+    [ "pn_netaddr_local", 
"group__proactor.html#ga7edab5e295c55e1c2169e39aaa082f8b", null ],
+    [ "pn_netaddr_remote", 
"group__proactor.html#ga59fa5ba7adc39bc8549645d5d33082c0", null ],
+    [ "pn_netaddr_listening", 
"group__proactor.html#ga955471a53dd486a6f227d8d57322a44c", null ],
+    [ "pn_netaddr_next", 
"group__proactor.html#ga6163449ac3b87782628448f192930eb0", null ],
+    [ "pn_netaddr_sockaddr", 
"group__proactor.html#ga00b1a40af2d837915d21cdb52ccb0c58", null ],
+    [ "pn_netaddr_socklen", 
"group__proactor.html#gaddaf2b0b3e107d100e4c3658116a6c3c", null ],
+    [ "pn_netaddr_host_port", 
"group__proactor.html#ga8cdeab8554e7d376a422dae8ac6d474b", null ],
+    [ "pn_proactor_addr", 
"group__proactor.html#gaf67a7642c9003b36255b58776b494c96", null ],
+    [ "pn_proactor", 
"group__proactor.html#gac2a925b3de00efd8cd40fa9920169554", null ],
+    [ "pn_proactor_free", 
"group__proactor.html#ga5260c2653d4af5eb2f1c8c6190e9d6cf", null ],
+    [ "pn_proactor_connect2", 
"group__proactor.html#gabb093e51449351cf5530bb300bd67ba1", null ],
+    [ "pn_proactor_connect", 
"group__proactor.html#ga9a9d1c4138226fa87160f4769b87f8e6", null ],
+    [ "pn_proactor_listen", 
"group__proactor.html#gacbed6a4ab75ef8452c10d52e4cd62752", null ],
+    [ "pn_proactor_disconnect", 
"group__proactor.html#gac600bd88ed0fc6c2b66bed4a8740bd68", null ],
+    [ "pn_proactor_wait", 
"group__proactor.html#ga2b66a46f3e557010ec61bd105326753d", null ],
+    [ "pn_proactor_get", 
"group__proactor.html#ga957eae24db6ec4962af79c5a06106115", null ],
+    [ "pn_proactor_done", 
"group__proactor.html#gade60ff2292b74841766f953b906285c0", null ],
+    [ "pn_proactor_interrupt", 
"group__proactor.html#gaa5255cd1bcb5d7f5639b53dc30712711", null ],
+    [ "pn_proactor_set_timeout", 
"group__proactor.html#gad7cd71f06282eb290699d90c316b2d32", null ],
+    [ "pn_proactor_cancel_timeout", 
"group__proactor.html#gac206e4d0a1b7546d940a83cdd79ce93f", null ],
+    [ "pn_proactor_release_connection", 
"group__proactor.html#ga1950236260353f82729dbb4589ef6c27", null ],
+    [ "pn_connection_wake", 
"group__proactor.html#ga0f49c771fe3bff54f58c9d583ca30560", null ],
+    [ "pn_connection_proactor", 
"group__proactor.html#ga4727a4e26f19efcff0d48960cbba2f40", null ],
+    [ "pn_event_proactor", 
"group__proactor.html#gac412771217decd84bd70931acbd0828a", null ],
+    [ "pn_proactor_now", 
"group__proactor.html#gad45b60b98f2bf385ee6ca5dca7b3f42d", null ]
+];
\ No newline at end of file


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

Reply via email to