http://git-wip-us.apache.org/repos/asf/qpid-site/blob/53a144b2/content/releases/qpid-proton-0.19.0/proton/c/api/group__messenger.js ---------------------------------------------------------------------- diff --git a/content/releases/qpid-proton-0.19.0/proton/c/api/group__messenger.js b/content/releases/qpid-proton-0.19.0/proton/c/api/group__messenger.js new file mode 100755 index 0000000..55bc8d5 --- /dev/null +++ b/content/releases/qpid-proton-0.19.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/53a144b2/content/releases/qpid-proton-0.19.0/proton/c/api/group__proactor.html ---------------------------------------------------------------------- diff --git a/content/releases/qpid-proton-0.19.0/proton/c/api/group__proactor.html b/content/releases/qpid-proton-0.19.0/proton/c/api/group__proactor.html new file mode 100755 index 0000000..17c00ff --- /dev/null +++ b/content/releases/qpid-proton-0.19.0/proton/c/api/group__proactor.html @@ -0,0 +1,885 @@ +<!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 +  <span id="projectnumber">0.19.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> | +<a href="#typedef-members">Typedefs</a> | +<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 </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"> </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"> </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> </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"> </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"> </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> </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"> </td><td class="mdescRight">A harness for multithreaded IO. <br /></td></tr> +<tr class="separator:gabba42c7929dfceb9d296535bad0c93dc"><td class="memSeparator" colspan="2"> </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 </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"> </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"> </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> * </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"> </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"> </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> * </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"> </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"> </td></tr> +<tr class="memitem:ga00b1a40af2d837915d21cdb52ccb0c58"><td class="memItemLeft" align="right" valign="top">PNP_EXTERN const struct sockaddr * </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"> </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"> </td></tr> +<tr class="memitem:gaddaf2b0b3e107d100e4c3658116a6c3c"><td class="memItemLeft" align="right" valign="top">PNP_EXTERN size_t </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"> </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"> </td></tr> +<tr class="memitem:gaf67a7642c9003b36255b58776b494c96"><td class="memItemLeft" align="right" valign="top">PNP_EXTERN int </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"> </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"> </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> * </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"> </td><td class="mdescRight">Create a proactor. <a href="#gac2a925b3de00efd8cd40fa9920169554">More...</a><br /></td></tr> +<tr class="separator:gac2a925b3de00efd8cd40fa9920169554"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ga5260c2653d4af5eb2f1c8c6190e9d6cf"><td class="memItemLeft" align="right" valign="top">PNP_EXTERN void </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"> </td><td class="mdescRight">Free the proactor. <a href="#ga5260c2653d4af5eb2f1c8c6190e9d6cf">More...</a><br /></td></tr> +<tr class="separator:ga5260c2653d4af5eb2f1c8c6190e9d6cf"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:gabb093e51449351cf5530bb300bd67ba1"><td class="memItemLeft" align="right" valign="top">PNP_EXTERN void </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"> </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"> </td></tr> +<tr class="memitem:ga9a9d1c4138226fa87160f4769b87f8e6"><td class="memItemLeft" align="right" valign="top">PNP_EXTERN void </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"> </td></tr> +<tr class="memitem:gacbed6a4ab75ef8452c10d52e4cd62752"><td class="memItemLeft" align="right" valign="top">PNP_EXTERN void </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"> </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"> </td></tr> +<tr class="memitem:gac600bd88ed0fc6c2b66bed4a8740bd68"><td class="memItemLeft" align="right" valign="top">PNP_EXTERN void </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"> </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"> </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> * </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"> </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"> </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> * </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"> </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"> </td></tr> +<tr class="memitem:gade60ff2292b74841766f953b906285c0"><td class="memItemLeft" align="right" valign="top">PNP_EXTERN void </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"> </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"> </td></tr> +<tr class="memitem:gaa5255cd1bcb5d7f5639b53dc30712711"><td class="memItemLeft" align="right" valign="top">PNP_EXTERN void </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"> </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"> </td></tr> +<tr class="memitem:gad7cd71f06282eb290699d90c316b2d32"><td class="memItemLeft" align="right" valign="top">PNP_EXTERN void </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"> </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"> </td></tr> +<tr class="memitem:gac206e4d0a1b7546d940a83cdd79ce93f"><td class="memItemLeft" align="right" valign="top">PNP_EXTERN void </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"> </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"> </td></tr> +<tr class="memitem:ga1950236260353f82729dbb4589ef6c27"><td class="memItemLeft" align="right" valign="top">PNP_EXTERN void </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"> </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"> </td></tr> +<tr class="memitem:ga0f49c771fe3bff54f58c9d583ca30560"><td class="memItemLeft" align="right" valign="top">PNP_EXTERN void </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"> </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"> </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> * </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"> </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"> </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> * </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"> </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"> </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> </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"> </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"> </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">◆ </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> * </td> + <td class="paramname"><em>addr</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">char * </td> + <td class="paramname"><em>buf</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">size_t </td> + <td class="paramname"><em>size</em> </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 >= size then the address was truncated. </dd></dl> + +</div> +</div> +<a id="ga7edab5e295c55e1c2169e39aaa082f8b"></a> +<h2 class="memtitle"><span class="permalink"><a href="#ga7edab5e295c55e1c2169e39aaa082f8b">◆ </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> * </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">◆ </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> * </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">◆ </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> * </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">◆ </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> * </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">◆ </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 * </td> + <td class="paramname"><em>addr</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">size_t </td> + <td class="paramname"><em>size</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">const char * </td> + <td class="paramname"><em>host</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">const char * </td> + <td class="paramname"><em>port</em> </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 >= size then the address was truncated </dd></dl> + +</div> +</div> +<a id="gac2a925b3de00efd8cd40fa9920169554"></a> +<h2 class="memtitle"><span class="permalink"><a href="#gac2a925b3de00efd8cd40fa9920169554">◆ </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 </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">◆ </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> * </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">◆ </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> * </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> * </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> * </td> + <td class="paramname"><em>transport</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">const char * </td> + <td class="paramname"><em>addr</em> </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">◆ </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> * </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> * </td> + <td class="paramname"><em>connection</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">const char * </td> + <td class="paramname"><em>addr</em> </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">◆ </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> * </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> * </td> + <td class="paramname"><em>listener</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">const char * </td> + <td class="paramname"><em>addr</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">int </td> + <td class="paramname"><em>backlog</em> </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">◆ </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> * </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> * </td> + <td class="paramname"><em>condition</em> </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">◆ </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> * </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">◆ </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> * </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">◆ </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> * </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> * </td> + <td class="paramname"><em>events</em> </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">◆ </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> * </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">◆ </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> * </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> </td> + <td class="paramname"><em>timeout</em> </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">◆ </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> * </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">◆ </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> * </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">◆ </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> * </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">◆ </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> * </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">◆ </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> * </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">◆ </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 </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/53a144b2/content/releases/qpid-proton-0.19.0/proton/c/api/group__proactor.js ---------------------------------------------------------------------- diff --git a/content/releases/qpid-proton-0.19.0/proton/c/api/group__proactor.js b/content/releases/qpid-proton-0.19.0/proton/c/api/group__proactor.js new file mode 100755 index 0000000..df463c6 --- /dev/null +++ b/content/releases/qpid-proton-0.19.0/proton/c/api/group__proactor.js @@ -0,0 +1,29 @@ +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_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: [email protected] For additional commands, e-mail: [email protected]
