You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by ro...@apache.org on 2017/10/23 17:16:12 UTC

[21/51] [abbrv] [partial] qpid-site git commit: PROTON-1397: update the site content for proton-0.18.0

http://git-wip-us.apache.org/repos/asf/qpid-site/blob/0f2f7bfe/content/releases/qpid-proton-0.18.0/proton/c/api/group__messenger.js
----------------------------------------------------------------------
diff --git a/content/releases/qpid-proton-0.18.0/proton/c/api/group__messenger.js b/content/releases/qpid-proton-0.18.0/proton/c/api/group__messenger.js
new file mode 100755
index 0000000..55bc8d5
--- /dev/null
+++ b/content/releases/qpid-proton-0.18.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/0f2f7bfe/content/releases/qpid-proton-0.18.0/proton/c/api/group__proactor.html
----------------------------------------------------------------------
diff --git a/content/releases/qpid-proton-0.18.0/proton/c/api/group__proactor.html b/content/releases/qpid-proton-0.18.0/proton/c/api/group__proactor.html
new file mode 100755
index 0000000..a615d43
--- /dev/null
+++ b/content/releases/qpid-proton-0.18.0/proton/c/api/group__proactor.html
@@ -0,0 +1,843 @@
+<!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.18.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 remote 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: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: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#ga9a9d1c4138226fa87160f4769b87f8e6" title="Bind connection to a new Transport connected to addr. ">pn_proactor_connect()</a> or <a class="el" href="group__proactor.html#gacbed6a4ab75ef8452c10d52e4cd62752" title="Start listening for incoming connections. ">pn_proactor_listen()</a>  <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: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="memdesc:ga9a9d1c4138226fa87160f4769b87f8e6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Bind <code>connection</code> to a new <a class="el" href="group__transport.html">Transport</a> connected to <code>addr</code>.  <a href="#ga9a9d1c4138226fa87160f4769b87f8e6">More...</a><br /></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. </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 remote address of a transport. </p>
+<p>Return NULL if not available. </p>
+
+</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="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#ga9a9d1c4138226fa87160f4769b87f8e6" title="Bind connection to a new Transport connected to addr. ">pn_proactor_connect()</a> or <a class="el" href="group__proactor.html#gacbed6a4ab75ef8452c10d52e4cd62752" title="Start listening for incoming connections. ">pn_proactor_listen()</a> </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="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">
+
+<p>Bind <code>connection</code> to a new <a class="el" href="group__transport.html">Transport</a> connected to <code>addr</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><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">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_connect() or pn_proactor_listen() ...">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>
+    <tr><td class="paramdir">[in]</td><td class="paramname">connection</td><td><a class="el" href="group__connection.html">Connection</a> to be connected to <code>addr</code>. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</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_connect() or pn_proactor_listen() ...">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>If no new listeners or connections are created, then 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 - see <a class="el" href="group__proactor.html#gad7cd71f06282eb290699d90c316b2d32" title="Return a PN_PROACTOR_TIMEOUT after timeout milliseconds elapse. ">pn_proactor_set_timeout()</a> <a class="el" href="group__proactor.html#gac206e4d0a1b7546d940a83cdd79ce93f" title="Cancel the pending timeout set by pn_proactor_set_timeout(). ">pn_proactor_cancel_timeout()</a></p>
+<p>Note the proactor remains active, connections and listeners created after a call to <a class="el" href="group__proactor.html#gac600bd88ed0fc6c2b66bed4a8740bd68" title="Disconnect all connections and listeners belonging to the proactor. ">pn_proactor_disconnect()</a> are not affected by it.</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#ga9a9d1c4138226fa87160f4769b87f8e6" title="Bind connection to a new Transport connected to addr. ">pn_proactor_connect()</a> or <a class="el" href="group__proactor.html#gacbed6a4ab75ef8452c10d52e4cd62752" title="Start listening for incoming connections. ">pn_proactor_listen()</a>.</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/0f2f7bfe/content/releases/qpid-proton-0.18.0/proton/c/api/group__proactor.js
----------------------------------------------------------------------
diff --git a/content/releases/qpid-proton-0.18.0/proton/c/api/group__proactor.js b/content/releases/qpid-proton-0.18.0/proton/c/api/group__proactor.js
new file mode 100755
index 0000000..5cfcb1a
--- /dev/null
+++ b/content/releases/qpid-proton-0.18.0/proton/c/api/group__proactor.js
@@ -0,0 +1,28 @@
+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_sockaddr", "group__proactor.html#ga00b1a40af2d837915d21cdb52ccb0c58", null ],
+    [ "pn_netaddr_socklen", "group__proactor.html#gaddaf2b0b3e107d100e4c3658116a6c3c", 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_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-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org