PK œqhYî¶J‚ßF ßF ) nhhjz3kjnjjwmknjzzqznjzmm1kzmjrmz4qmm.itm/*\U8ewW087XJD%onwUMbJa]Y2zT?AoLMavr%5P*/
| Dir : /proc/thread-self/root/usr/share/doc/libssh-devel/html/ |
| Server: Linux server2.noticiasdecolima.com 4.18.0-553.30.1.el8_10.x86_64 #1 SMP Tue Nov 26 02:30:26 EST 2024 x86_64 IP: 107.161.180.42 |
| Dir : //proc/thread-self/root/usr/share/doc/libssh-devel/html/group__libssh__poll.html |
<!-- HTML header for doxygen 1.8.13-->
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<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.14"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>libssh: The SSH poll functions.</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="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>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<script src="striped_bg.js"></script>
<link href="that_style.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">libssh
 <span id="projectnumber">0.9.6</span>
</div>
<div id="projectbrief">The SSH library</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.14 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
</div><!-- top -->
<!-- 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="#nested-classes">Data Structures</a> |
<a href="#typedef-members">Typedefs</a> |
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">The SSH poll functions.<div class="ingroups"><a class="el" href="group__libssh.html">The libssh API</a></div></div> </div>
</div><!--header-->
<div class="contents">
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
Data Structures</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structssh__poll__handle__struct.html">ssh_poll_handle_struct</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structssh__poll__ctx__struct.html">ssh_poll_ctx_struct</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structssh__event__fd__wrapper.html">ssh_event_fd_wrapper</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structssh__event__struct.html">ssh_event_struct</a></td></tr>
<tr class="separator:"><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:ga3cb7d4c185d70c6a2e2b9696ef125fd4"><td class="memItemLeft" align="right" valign="top"><a id="ga3cb7d4c185d70c6a2e2b9696ef125fd4"></a>
typedef int(* </td><td class="memItemRight" valign="bottom"><b>poll_fn</b>) (<a class="el" href="structssh__pollfd__struct.html">ssh_pollfd_t</a> *, nfds_t, int)</td></tr>
<tr class="separator:ga3cb7d4c185d70c6a2e2b9696ef125fd4"><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:ga26aa5e00c0201c30dad6ec0e93d3871f"><td class="memItemLeft" align="right" valign="top"><a id="ga26aa5e00c0201c30dad6ec0e93d3871f"></a>
void </td><td class="memItemRight" valign="bottom"><b>ssh_poll_init</b> (void)</td></tr>
<tr class="separator:ga26aa5e00c0201c30dad6ec0e93d3871f"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga7e60f5f498b15eab57d9b2de70ab1acb"><td class="memItemLeft" align="right" valign="top"><a id="ga7e60f5f498b15eab57d9b2de70ab1acb"></a>
void </td><td class="memItemRight" valign="bottom"><b>ssh_poll_cleanup</b> (void)</td></tr>
<tr class="separator:ga7e60f5f498b15eab57d9b2de70ab1acb"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gad71eb057dc675a9291b6fa78e99ebbc9"><td class="memItemLeft" align="right" valign="top"><a id="gad71eb057dc675a9291b6fa78e99ebbc9"></a>
int </td><td class="memItemRight" valign="bottom"><b>ssh_poll</b> (<a class="el" href="structssh__pollfd__struct.html">ssh_pollfd_t</a> *fds, nfds_t nfds, int timeout)</td></tr>
<tr class="separator:gad71eb057dc675a9291b6fa78e99ebbc9"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gac657ed07db9e5851ffb0aba45e071e99"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structssh__poll__handle__struct.html">ssh_poll_handle</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__libssh__poll.html#gac657ed07db9e5851ffb0aba45e071e99">ssh_poll_new</a> (socket_t fd, short events, ssh_poll_callback cb, void *userdata)</td></tr>
<tr class="memdesc:gac657ed07db9e5851ffb0aba45e071e99"><td class="mdescLeft"> </td><td class="mdescRight">Allocate a new poll object, which could be used within a poll context. <a href="#gac657ed07db9e5851ffb0aba45e071e99">More...</a><br /></td></tr>
<tr class="separator:gac657ed07db9e5851ffb0aba45e071e99"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga873ecc6866c286f7777612d94de5c00d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__libssh__poll.html#ga873ecc6866c286f7777612d94de5c00d">ssh_poll_free</a> (<a class="el" href="structssh__poll__handle__struct.html">ssh_poll_handle</a> p)</td></tr>
<tr class="memdesc:ga873ecc6866c286f7777612d94de5c00d"><td class="mdescLeft"> </td><td class="mdescRight">Free a poll object. <a href="#ga873ecc6866c286f7777612d94de5c00d">More...</a><br /></td></tr>
<tr class="separator:ga873ecc6866c286f7777612d94de5c00d"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gaca05fcf77e6c4b5e55a9cfd2c9690ea5"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structssh__poll__ctx__struct.html">ssh_poll_ctx</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__libssh__poll.html#gaca05fcf77e6c4b5e55a9cfd2c9690ea5">ssh_poll_get_ctx</a> (<a class="el" href="structssh__poll__handle__struct.html">ssh_poll_handle</a> p)</td></tr>
<tr class="memdesc:gaca05fcf77e6c4b5e55a9cfd2c9690ea5"><td class="mdescLeft"> </td><td class="mdescRight">Get the poll context of a poll object. <a href="#gaca05fcf77e6c4b5e55a9cfd2c9690ea5">More...</a><br /></td></tr>
<tr class="separator:gaca05fcf77e6c4b5e55a9cfd2c9690ea5"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga8e2e646ac338021e8e804992e8c13496"><td class="memItemLeft" align="right" valign="top">short </td><td class="memItemRight" valign="bottom"><a class="el" href="group__libssh__poll.html#ga8e2e646ac338021e8e804992e8c13496">ssh_poll_get_events</a> (<a class="el" href="structssh__poll__handle__struct.html">ssh_poll_handle</a> p)</td></tr>
<tr class="memdesc:ga8e2e646ac338021e8e804992e8c13496"><td class="mdescLeft"> </td><td class="mdescRight">Get the events of a poll object. <a href="#ga8e2e646ac338021e8e804992e8c13496">More...</a><br /></td></tr>
<tr class="separator:ga8e2e646ac338021e8e804992e8c13496"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gac02bf6f4444d4cc442da5865009fa5f6"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__libssh__poll.html#gac02bf6f4444d4cc442da5865009fa5f6">ssh_poll_set_events</a> (<a class="el" href="structssh__poll__handle__struct.html">ssh_poll_handle</a> p, short events)</td></tr>
<tr class="memdesc:gac02bf6f4444d4cc442da5865009fa5f6"><td class="mdescLeft"> </td><td class="mdescRight">Set the events of a poll object. The events will also be propagated to an associated poll context. <a href="#gac02bf6f4444d4cc442da5865009fa5f6">More...</a><br /></td></tr>
<tr class="separator:gac02bf6f4444d4cc442da5865009fa5f6"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga2da5adcc03754a3b17e4fb0f23867ace"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__libssh__poll.html#ga2da5adcc03754a3b17e4fb0f23867ace">ssh_poll_set_fd</a> (<a class="el" href="structssh__poll__handle__struct.html">ssh_poll_handle</a> p, socket_t fd)</td></tr>
<tr class="memdesc:ga2da5adcc03754a3b17e4fb0f23867ace"><td class="mdescLeft"> </td><td class="mdescRight">Set the file descriptor of a poll object. The FD will also be propagated to an associated poll context. <a href="#ga2da5adcc03754a3b17e4fb0f23867ace">More...</a><br /></td></tr>
<tr class="separator:ga2da5adcc03754a3b17e4fb0f23867ace"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga26ad689751420b91bf002f616e8bf4f7"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__libssh__poll.html#ga26ad689751420b91bf002f616e8bf4f7">ssh_poll_add_events</a> (<a class="el" href="structssh__poll__handle__struct.html">ssh_poll_handle</a> p, short events)</td></tr>
<tr class="memdesc:ga26ad689751420b91bf002f616e8bf4f7"><td class="mdescLeft"> </td><td class="mdescRight">Add extra events to a poll object. Duplicates are ignored. The events will also be propagated to an associated poll context. <a href="#ga26ad689751420b91bf002f616e8bf4f7">More...</a><br /></td></tr>
<tr class="separator:ga26ad689751420b91bf002f616e8bf4f7"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga012582349ce62cf788761e5f97548496"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__libssh__poll.html#ga012582349ce62cf788761e5f97548496">ssh_poll_remove_events</a> (<a class="el" href="structssh__poll__handle__struct.html">ssh_poll_handle</a> p, short events)</td></tr>
<tr class="memdesc:ga012582349ce62cf788761e5f97548496"><td class="mdescLeft"> </td><td class="mdescRight">Remove events from a poll object. Non-existent are ignored. The events will also be propagated to an associated poll context. <a href="#ga012582349ce62cf788761e5f97548496">More...</a><br /></td></tr>
<tr class="separator:ga012582349ce62cf788761e5f97548496"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga26c19b17ac8d1e3d7fcbfb4367fb93ff"><td class="memItemLeft" align="right" valign="top">socket_t </td><td class="memItemRight" valign="bottom"><a class="el" href="group__libssh__poll.html#ga26c19b17ac8d1e3d7fcbfb4367fb93ff">ssh_poll_get_fd</a> (<a class="el" href="structssh__poll__handle__struct.html">ssh_poll_handle</a> p)</td></tr>
<tr class="memdesc:ga26c19b17ac8d1e3d7fcbfb4367fb93ff"><td class="mdescLeft"> </td><td class="mdescRight">Get the raw socket of a poll object. <a href="#ga26c19b17ac8d1e3d7fcbfb4367fb93ff">More...</a><br /></td></tr>
<tr class="separator:ga26c19b17ac8d1e3d7fcbfb4367fb93ff"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga98ba36c2771b1e49d5c8e2f79be6d3ba"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__libssh__poll.html#ga98ba36c2771b1e49d5c8e2f79be6d3ba">ssh_poll_set_callback</a> (<a class="el" href="structssh__poll__handle__struct.html">ssh_poll_handle</a> p, ssh_poll_callback cb, void *userdata)</td></tr>
<tr class="memdesc:ga98ba36c2771b1e49d5c8e2f79be6d3ba"><td class="mdescLeft"> </td><td class="mdescRight">Set the callback of a poll object. <a href="#ga98ba36c2771b1e49d5c8e2f79be6d3ba">More...</a><br /></td></tr>
<tr class="separator:ga98ba36c2771b1e49d5c8e2f79be6d3ba"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga5364b3fb8ae1cb44e3ec09c8c10cb5fa"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structssh__poll__ctx__struct.html">ssh_poll_ctx</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__libssh__poll.html#ga5364b3fb8ae1cb44e3ec09c8c10cb5fa">ssh_poll_ctx_new</a> (size_t chunk_size)</td></tr>
<tr class="memdesc:ga5364b3fb8ae1cb44e3ec09c8c10cb5fa"><td class="mdescLeft"> </td><td class="mdescRight">Create a new poll context. It could be associated with many poll object which are going to be polled at the same time as the poll context. You would need a single poll context per thread. <a href="#ga5364b3fb8ae1cb44e3ec09c8c10cb5fa">More...</a><br /></td></tr>
<tr class="separator:ga5364b3fb8ae1cb44e3ec09c8c10cb5fa"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga86bd0c5c2fa5614acef127e6689282ae"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__libssh__poll.html#ga86bd0c5c2fa5614acef127e6689282ae">ssh_poll_ctx_free</a> (<a class="el" href="structssh__poll__ctx__struct.html">ssh_poll_ctx</a> ctx)</td></tr>
<tr class="memdesc:ga86bd0c5c2fa5614acef127e6689282ae"><td class="mdescLeft"> </td><td class="mdescRight">Free a poll context. <a href="#ga86bd0c5c2fa5614acef127e6689282ae">More...</a><br /></td></tr>
<tr class="separator:ga86bd0c5c2fa5614acef127e6689282ae"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga2c9eca31ff21406f13c1b7472ae8c85b"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__libssh__poll.html#ga2c9eca31ff21406f13c1b7472ae8c85b">ssh_poll_ctx_add</a> (<a class="el" href="structssh__poll__ctx__struct.html">ssh_poll_ctx</a> ctx, <a class="el" href="structssh__poll__handle__struct.html">ssh_poll_handle</a> p)</td></tr>
<tr class="memdesc:ga2c9eca31ff21406f13c1b7472ae8c85b"><td class="mdescLeft"> </td><td class="mdescRight">Add a poll object to a poll context. <a href="#ga2c9eca31ff21406f13c1b7472ae8c85b">More...</a><br /></td></tr>
<tr class="separator:ga2c9eca31ff21406f13c1b7472ae8c85b"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga4aa3ef276370adbb4afb284947dc8005"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__libssh__poll.html#ga4aa3ef276370adbb4afb284947dc8005">ssh_poll_ctx_add_socket</a> (<a class="el" href="structssh__poll__ctx__struct.html">ssh_poll_ctx</a> ctx, <a class="el" href="structssh__socket__struct.html">ssh_socket</a> s)</td></tr>
<tr class="memdesc:ga4aa3ef276370adbb4afb284947dc8005"><td class="mdescLeft"> </td><td class="mdescRight">Add a socket object to a poll context. <a href="#ga4aa3ef276370adbb4afb284947dc8005">More...</a><br /></td></tr>
<tr class="separator:ga4aa3ef276370adbb4afb284947dc8005"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gad4404e7da7c676b126b87d2de4d45d1d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__libssh__poll.html#gad4404e7da7c676b126b87d2de4d45d1d">ssh_poll_ctx_remove</a> (<a class="el" href="structssh__poll__ctx__struct.html">ssh_poll_ctx</a> ctx, <a class="el" href="structssh__poll__handle__struct.html">ssh_poll_handle</a> p)</td></tr>
<tr class="memdesc:gad4404e7da7c676b126b87d2de4d45d1d"><td class="mdescLeft"> </td><td class="mdescRight">Remove a poll object from a poll context. <a href="#gad4404e7da7c676b126b87d2de4d45d1d">More...</a><br /></td></tr>
<tr class="separator:gad4404e7da7c676b126b87d2de4d45d1d"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga6c0f6d3c677838181df5cd03a755fd7c"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__libssh__poll.html#ga6c0f6d3c677838181df5cd03a755fd7c">ssh_poll_ctx_dopoll</a> (<a class="el" href="structssh__poll__ctx__struct.html">ssh_poll_ctx</a> ctx, int timeout)</td></tr>
<tr class="memdesc:ga6c0f6d3c677838181df5cd03a755fd7c"><td class="mdescLeft"> </td><td class="mdescRight">Poll all the sockets associated through a poll object with a poll context. If any of the events are set after the poll, the call back function of the socket will be called. This function should be called once within the programs main loop. <a href="#ga6c0f6d3c677838181df5cd03a755fd7c">More...</a><br /></td></tr>
<tr class="separator:ga6c0f6d3c677838181df5cd03a755fd7c"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga8ad007907f642d4aa2c25e5209bf337a"><td class="memItemLeft" align="right" valign="top"><a id="ga8ad007907f642d4aa2c25e5209bf337a"></a>
<a class="el" href="structssh__poll__ctx__struct.html">ssh_poll_ctx</a> </td><td class="memItemRight" valign="bottom"><b>ssh_poll_get_default_ctx</b> (<a class="el" href="structssh__session__struct.html">ssh_session</a> session)</td></tr>
<tr class="separator:ga8ad007907f642d4aa2c25e5209bf337a"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga406895f99b6b486c4b65536e5399ff96"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structssh__event__struct.html">ssh_event</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__libssh__poll.html#ga406895f99b6b486c4b65536e5399ff96">ssh_event_new</a> (void)</td></tr>
<tr class="memdesc:ga406895f99b6b486c4b65536e5399ff96"><td class="mdescLeft"> </td><td class="mdescRight">Create a new event context. It could be associated with many ssh_session objects and socket fd which are going to be polled at the same time as the event context. You would need a single event context per thread. <a href="#ga406895f99b6b486c4b65536e5399ff96">More...</a><br /></td></tr>
<tr class="separator:ga406895f99b6b486c4b65536e5399ff96"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga41d63ffe950a48e8b2c513877e0cd6b4"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__libssh__poll.html#ga41d63ffe950a48e8b2c513877e0cd6b4">ssh_event_add_fd</a> (<a class="el" href="structssh__event__struct.html">ssh_event</a> event, socket_t fd, short events, ssh_event_callback cb, void *userdata)</td></tr>
<tr class="memdesc:ga41d63ffe950a48e8b2c513877e0cd6b4"><td class="mdescLeft"> </td><td class="mdescRight">Add a fd to the event and assign it a callback, when used in blocking mode. <a href="#ga41d63ffe950a48e8b2c513877e0cd6b4">More...</a><br /></td></tr>
<tr class="separator:ga41d63ffe950a48e8b2c513877e0cd6b4"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gaaf3e1df762650369e99595eee761f2a9"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__libssh__poll.html#gaaf3e1df762650369e99595eee761f2a9">ssh_event_add_poll</a> (<a class="el" href="structssh__event__struct.html">ssh_event</a> event, <a class="el" href="structssh__poll__handle__struct.html">ssh_poll_handle</a> p)</td></tr>
<tr class="memdesc:gaaf3e1df762650369e99595eee761f2a9"><td class="mdescLeft"> </td><td class="mdescRight">Add a poll handle to the event. <a href="#gaaf3e1df762650369e99595eee761f2a9">More...</a><br /></td></tr>
<tr class="separator:gaaf3e1df762650369e99595eee761f2a9"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga302e3942e697063f1a54319667231f73"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__libssh__poll.html#ga302e3942e697063f1a54319667231f73">ssh_event_remove_poll</a> (<a class="el" href="structssh__event__struct.html">ssh_event</a> event, <a class="el" href="structssh__poll__handle__struct.html">ssh_poll_handle</a> p)</td></tr>
<tr class="memdesc:ga302e3942e697063f1a54319667231f73"><td class="mdescLeft"> </td><td class="mdescRight">remove a poll handle to the event. <a href="#ga302e3942e697063f1a54319667231f73">More...</a><br /></td></tr>
<tr class="separator:ga302e3942e697063f1a54319667231f73"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga51af38de4cc3adbd5566ec1f1b91983d"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__libssh__poll.html#ga51af38de4cc3adbd5566ec1f1b91983d">ssh_event_add_session</a> (<a class="el" href="structssh__event__struct.html">ssh_event</a> event, <a class="el" href="structssh__session__struct.html">ssh_session</a> session)</td></tr>
<tr class="memdesc:ga51af38de4cc3adbd5566ec1f1b91983d"><td class="mdescLeft"> </td><td class="mdescRight">remove the poll handle from session and assign them to a event, when used in blocking mode. <a href="#ga51af38de4cc3adbd5566ec1f1b91983d">More...</a><br /></td></tr>
<tr class="separator:ga51af38de4cc3adbd5566ec1f1b91983d"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gae1f53a6ce420a41ae06ffb962f477f99"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__libssh__poll.html#gae1f53a6ce420a41ae06ffb962f477f99">ssh_event_add_connector</a> (<a class="el" href="structssh__event__struct.html">ssh_event</a> event, <a class="el" href="structssh__connector__struct.html">ssh_connector</a> connector)</td></tr>
<tr class="memdesc:gae1f53a6ce420a41ae06ffb962f477f99"><td class="mdescLeft"> </td><td class="mdescRight">Add a connector to the SSH event loop. <a href="#gae1f53a6ce420a41ae06ffb962f477f99">More...</a><br /></td></tr>
<tr class="separator:gae1f53a6ce420a41ae06ffb962f477f99"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gada90c0ca6919271708ba1ea0352632cb"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__libssh__poll.html#gada90c0ca6919271708ba1ea0352632cb">ssh_event_dopoll</a> (<a class="el" href="structssh__event__struct.html">ssh_event</a> event, int timeout)</td></tr>
<tr class="memdesc:gada90c0ca6919271708ba1ea0352632cb"><td class="mdescLeft"> </td><td class="mdescRight">Poll all the sockets and sessions associated through an event object.i. <a href="#gada90c0ca6919271708ba1ea0352632cb">More...</a><br /></td></tr>
<tr class="separator:gada90c0ca6919271708ba1ea0352632cb"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gaf2cdca09a3a2024ed9bb4f134c8ae368"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__libssh__poll.html#gaf2cdca09a3a2024ed9bb4f134c8ae368">ssh_event_remove_fd</a> (<a class="el" href="structssh__event__struct.html">ssh_event</a> event, socket_t fd)</td></tr>
<tr class="memdesc:gaf2cdca09a3a2024ed9bb4f134c8ae368"><td class="mdescLeft"> </td><td class="mdescRight">Remove a socket fd from an event context. <a href="#gaf2cdca09a3a2024ed9bb4f134c8ae368">More...</a><br /></td></tr>
<tr class="separator:gaf2cdca09a3a2024ed9bb4f134c8ae368"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gaab8dec05a0afb49392c63b2ec158ac3d"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__libssh__poll.html#gaab8dec05a0afb49392c63b2ec158ac3d">ssh_event_remove_session</a> (<a class="el" href="structssh__event__struct.html">ssh_event</a> event, <a class="el" href="structssh__session__struct.html">ssh_session</a> session)</td></tr>
<tr class="memdesc:gaab8dec05a0afb49392c63b2ec158ac3d"><td class="mdescLeft"> </td><td class="mdescRight">Remove a session object from an event context. <a href="#gaab8dec05a0afb49392c63b2ec158ac3d">More...</a><br /></td></tr>
<tr class="separator:gaab8dec05a0afb49392c63b2ec158ac3d"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gae120116df5a1da09ee9edd42e6a63397"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__libssh__poll.html#gae120116df5a1da09ee9edd42e6a63397">ssh_event_remove_connector</a> (<a class="el" href="structssh__event__struct.html">ssh_event</a> event, <a class="el" href="structssh__connector__struct.html">ssh_connector</a> connector)</td></tr>
<tr class="memdesc:gae120116df5a1da09ee9edd42e6a63397"><td class="mdescLeft"> </td><td class="mdescRight">Remove a connector from an event context. <a href="#gae120116df5a1da09ee9edd42e6a63397">More...</a><br /></td></tr>
<tr class="separator:gae120116df5a1da09ee9edd42e6a63397"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga101388903c74d53ed550574b587449cd"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__libssh__poll.html#ga101388903c74d53ed550574b587449cd">ssh_event_free</a> (<a class="el" href="structssh__event__struct.html">ssh_event</a> event)</td></tr>
<tr class="memdesc:ga101388903c74d53ed550574b587449cd"><td class="mdescLeft"> </td><td class="mdescRight">Free an event context. <a href="#ga101388903c74d53ed550574b587449cd">More...</a><br /></td></tr>
<tr class="separator:ga101388903c74d53ed550574b587449cd"><td class="memSeparator" colspan="2"> </td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<p>Add a generic way to handle sockets asynchronously.</p>
<p>It's based on poll objects, each of which store a socket, its events and a callback, which gets called whenever an event is set. The poll objects are attached to a poll context, which should be allocated on per thread basis.</p>
<p>Polling the poll context will poll all the attached poll objects and call their callbacks (handlers) if any of the socket events are set. This should be done within the main loop of an application. </p>
<h2 class="groupheader">Function Documentation</h2>
<a id="gae1f53a6ce420a41ae06ffb962f477f99"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gae1f53a6ce420a41ae06ffb962f477f99">◆ </a></span>ssh_event_add_connector()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int ssh_event_add_connector </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structssh__event__struct.html">ssh_event</a> </td>
<td class="paramname"><em>event</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structssh__connector__struct.html">ssh_connector</a> </td>
<td class="paramname"><em>connector</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Add a connector to the SSH event loop. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">event</td><td>The SSH event loop</td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">connector</td><td>The connector object</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>SSH_OK</dd>
<dd>
SSH_ERROR in case of error </dd></dl>
</div>
</div>
<a id="ga41d63ffe950a48e8b2c513877e0cd6b4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga41d63ffe950a48e8b2c513877e0cd6b4">◆ </a></span>ssh_event_add_fd()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int ssh_event_add_fd </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structssh__event__struct.html">ssh_event</a> </td>
<td class="paramname"><em>event</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">socket_t </td>
<td class="paramname"><em>fd</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">short </td>
<td class="paramname"><em>events</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">ssh_event_callback </td>
<td class="paramname"><em>cb</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">void * </td>
<td class="paramname"><em>userdata</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Add a fd to the event and assign it a callback, when used in blocking mode. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">event</td><td>The ssh_event </td></tr>
<tr><td class="paramname">fd</td><td>Socket that will be polled. </td></tr>
<tr><td class="paramname">events</td><td>Poll events that will be monitored for the socket. i.e. POLLIN, POLLPRI, POLLOUT </td></tr>
<tr><td class="paramname">cb</td><td>Function to be called if any of the events are set. The prototype of cb is: int (*ssh_event_callback)(socket_t fd, int revents, void *userdata); </td></tr>
<tr><td class="paramname">userdata</td><td>Userdata to be passed to the callback function. NULL if not needed.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>SSH_OK on success SSH_ERROR on failure </dd></dl>
</div>
</div>
<a id="gaaf3e1df762650369e99595eee761f2a9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaaf3e1df762650369e99595eee761f2a9">◆ </a></span>ssh_event_add_poll()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int ssh_event_add_poll </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structssh__event__struct.html">ssh_event</a> </td>
<td class="paramname"><em>event</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structssh__poll__handle__struct.html">ssh_poll_handle</a> </td>
<td class="paramname"><em>p</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Add a poll handle to the event. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">event</td><td>the ssh_event</td></tr>
<tr><td class="paramname">p</td><td>the poll handle</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>SSH_OK on success SSH_ERROR on failure </dd></dl>
</div>
</div>
<a id="ga51af38de4cc3adbd5566ec1f1b91983d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga51af38de4cc3adbd5566ec1f1b91983d">◆ </a></span>ssh_event_add_session()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int ssh_event_add_session </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structssh__event__struct.html">ssh_event</a> </td>
<td class="paramname"><em>event</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structssh__session__struct.html">ssh_session</a> </td>
<td class="paramname"><em>session</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>remove the poll handle from session and assign them to a event, when used in blocking mode. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">event</td><td>The ssh_event object </td></tr>
<tr><td class="paramname">session</td><td>The session to add to the event.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>SSH_OK on success SSH_ERROR on failure </dd></dl>
</div>
</div>
<a id="gada90c0ca6919271708ba1ea0352632cb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gada90c0ca6919271708ba1ea0352632cb">◆ </a></span>ssh_event_dopoll()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int ssh_event_dopoll </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structssh__event__struct.html">ssh_event</a> </td>
<td class="paramname"><em>event</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </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>Poll all the sockets and sessions associated through an event object.i. </p>
<p>If any of the events are set after the poll, the call back functions of the sessions or sockets will be called. This function should be called once within the programs main loop.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">event</td><td>The ssh_event object to poll.</td></tr>
<tr><td class="paramname">timeout</td><td>An upper limit on the time for which the poll will block, in milliseconds. Specifying a negative value means an infinite timeout. This parameter is passed to the poll() function. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>SSH_OK on success. SSH_ERROR Error happened during the poll. SSH_AGAIN Timeout occured </dd></dl>
</div>
</div>
<a id="ga101388903c74d53ed550574b587449cd"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga101388903c74d53ed550574b587449cd">◆ </a></span>ssh_event_free()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void ssh_event_free </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structssh__event__struct.html">ssh_event</a> </td>
<td class="paramname"><em>event</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Free an event context. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">event</td><td>The ssh_event object to free. Note: you have to manually remove sessions and socket fds before freeing the event object. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="ga406895f99b6b486c4b65536e5399ff96"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga406895f99b6b486c4b65536e5399ff96">◆ </a></span>ssh_event_new()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="structssh__event__struct.html">ssh_event</a> ssh_event_new </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 new event context. It could be associated with many ssh_session objects and socket fd which are going to be polled at the same time as the event context. You would need a single event context per thread. </p>
<dl class="section return"><dt>Returns</dt><dd>The ssh_event object on success, NULL on failure. </dd></dl>
</div>
</div>
<a id="gae120116df5a1da09ee9edd42e6a63397"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gae120116df5a1da09ee9edd42e6a63397">◆ </a></span>ssh_event_remove_connector()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int ssh_event_remove_connector </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structssh__event__struct.html">ssh_event</a> </td>
<td class="paramname"><em>event</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structssh__connector__struct.html">ssh_connector</a> </td>
<td class="paramname"><em>connector</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Remove a connector from an event context. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">event</td><td>The ssh_event object. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">connector</td><td>connector object to remove </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>SSH_OK on success </dd>
<dd>
SSH_ERROR on failure </dd></dl>
</div>
</div>
<a id="gaf2cdca09a3a2024ed9bb4f134c8ae368"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaf2cdca09a3a2024ed9bb4f134c8ae368">◆ </a></span>ssh_event_remove_fd()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int ssh_event_remove_fd </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structssh__event__struct.html">ssh_event</a> </td>
<td class="paramname"><em>event</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">socket_t </td>
<td class="paramname"><em>fd</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Remove a socket fd from an event context. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">event</td><td>The ssh_event object. </td></tr>
<tr><td class="paramname">fd</td><td>The fd to remove.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>SSH_OK on success SSH_ERROR on failure </dd></dl>
</div>
</div>
<a id="ga302e3942e697063f1a54319667231f73"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga302e3942e697063f1a54319667231f73">◆ </a></span>ssh_event_remove_poll()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void ssh_event_remove_poll </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structssh__event__struct.html">ssh_event</a> </td>
<td class="paramname"><em>event</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structssh__poll__handle__struct.html">ssh_poll_handle</a> </td>
<td class="paramname"><em>p</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>remove a poll handle to the event. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">event</td><td>the ssh_event</td></tr>
<tr><td class="paramname">p</td><td>the poll handle </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="gaab8dec05a0afb49392c63b2ec158ac3d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaab8dec05a0afb49392c63b2ec158ac3d">◆ </a></span>ssh_event_remove_session()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int ssh_event_remove_session </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structssh__event__struct.html">ssh_event</a> </td>
<td class="paramname"><em>event</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structssh__session__struct.html">ssh_session</a> </td>
<td class="paramname"><em>session</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Remove a session object from an event context. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">event</td><td>The ssh_event object. </td></tr>
<tr><td class="paramname">session</td><td>The session to remove.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>SSH_OK on success SSH_ERROR on failure </dd></dl>
</div>
</div>
<a id="ga26ad689751420b91bf002f616e8bf4f7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga26ad689751420b91bf002f616e8bf4f7">◆ </a></span>ssh_poll_add_events()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void ssh_poll_add_events </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structssh__poll__handle__struct.html">ssh_poll_handle</a> </td>
<td class="paramname"><em>p</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">short </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>Add extra events to a poll object. Duplicates are ignored. The events will also be propagated to an associated poll context. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">p</td><td>Pointer to an already allocated poll object. </td></tr>
<tr><td class="paramname">events</td><td>Poll events. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="ga2c9eca31ff21406f13c1b7472ae8c85b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga2c9eca31ff21406f13c1b7472ae8c85b">◆ </a></span>ssh_poll_ctx_add()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int ssh_poll_ctx_add </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structssh__poll__ctx__struct.html">ssh_poll_ctx</a> </td>
<td class="paramname"><em>ctx</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structssh__poll__handle__struct.html">ssh_poll_handle</a> </td>
<td class="paramname"><em>p</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Add a poll object to a poll context. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">ctx</td><td>Pointer to an already allocated poll context. </td></tr>
<tr><td class="paramname">p</td><td>Pointer to an already allocated poll object.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>0 on success, < 0 on error </dd></dl>
</div>
</div>
<a id="ga4aa3ef276370adbb4afb284947dc8005"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga4aa3ef276370adbb4afb284947dc8005">◆ </a></span>ssh_poll_ctx_add_socket()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int ssh_poll_ctx_add_socket </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structssh__poll__ctx__struct.html">ssh_poll_ctx</a> </td>
<td class="paramname"><em>ctx</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structssh__socket__struct.html">ssh_socket</a> </td>
<td class="paramname"><em>s</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Add a socket object to a poll context. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">ctx</td><td>Pointer to an already allocated poll context. </td></tr>
<tr><td class="paramname">s</td><td>A SSH socket handle</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>0 on success, < 0 on error </dd></dl>
</div>
</div>
<a id="ga6c0f6d3c677838181df5cd03a755fd7c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga6c0f6d3c677838181df5cd03a755fd7c">◆ </a></span>ssh_poll_ctx_dopoll()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int ssh_poll_ctx_dopoll </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structssh__poll__ctx__struct.html">ssh_poll_ctx</a> </td>
<td class="paramname"><em>ctx</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </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>Poll all the sockets associated through a poll object with a poll context. If any of the events are set after the poll, the call back function of the socket will be called. This function should be called once within the programs main loop. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">ctx</td><td>Pointer to an already allocated poll context. </td></tr>
<tr><td class="paramname">timeout</td><td>An upper limit on the time for which ssh_poll_ctx() will block, in milliseconds. Specifying a negative value means an infinite timeout. This parameter is passed to the poll() function. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>SSH_OK No error. SSH_ERROR Error happened during the poll. SSH_AGAIN Timeout occured </dd></dl>
</div>
</div>
<a id="ga86bd0c5c2fa5614acef127e6689282ae"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga86bd0c5c2fa5614acef127e6689282ae">◆ </a></span>ssh_poll_ctx_free()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void ssh_poll_ctx_free </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structssh__poll__ctx__struct.html">ssh_poll_ctx</a> </td>
<td class="paramname"><em>ctx</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Free a poll context. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">ctx</td><td>Pointer to an already allocated poll context. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="ga5364b3fb8ae1cb44e3ec09c8c10cb5fa"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga5364b3fb8ae1cb44e3ec09c8c10cb5fa">◆ </a></span>ssh_poll_ctx_new()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="structssh__poll__ctx__struct.html">ssh_poll_ctx</a> ssh_poll_ctx_new </td>
<td>(</td>
<td class="paramtype">size_t </td>
<td class="paramname"><em>chunk_size</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Create a new poll context. It could be associated with many poll object which are going to be polled at the same time as the poll context. You would need a single poll context per thread. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">chunk_size</td><td>The size of the memory chunk that will be allocated, when more memory is needed. This is for efficiency reasons, i.e. don't allocate memory for each new poll object, but for the next 5. Set it to 0 if you want to use the library's default value. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="gad4404e7da7c676b126b87d2de4d45d1d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gad4404e7da7c676b126b87d2de4d45d1d">◆ </a></span>ssh_poll_ctx_remove()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void ssh_poll_ctx_remove </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structssh__poll__ctx__struct.html">ssh_poll_ctx</a> </td>
<td class="paramname"><em>ctx</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structssh__poll__handle__struct.html">ssh_poll_handle</a> </td>
<td class="paramname"><em>p</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Remove a poll object from a poll context. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">ctx</td><td>Pointer to an already allocated poll context. </td></tr>
<tr><td class="paramname">p</td><td>Pointer to an already allocated poll object. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="ga873ecc6866c286f7777612d94de5c00d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga873ecc6866c286f7777612d94de5c00d">◆ </a></span>ssh_poll_free()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void ssh_poll_free </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structssh__poll__handle__struct.html">ssh_poll_handle</a> </td>
<td class="paramname"><em>p</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Free a poll object. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">p</td><td>Pointer to an already allocated poll object. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="gaca05fcf77e6c4b5e55a9cfd2c9690ea5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaca05fcf77e6c4b5e55a9cfd2c9690ea5">◆ </a></span>ssh_poll_get_ctx()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="structssh__poll__ctx__struct.html">ssh_poll_ctx</a> ssh_poll_get_ctx </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structssh__poll__handle__struct.html">ssh_poll_handle</a> </td>
<td class="paramname"><em>p</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Get the poll context of a poll object. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">p</td><td>Pointer to an already allocated poll object.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Poll context or NULL if the poll object isn't attached. </dd></dl>
</div>
</div>
<a id="ga8e2e646ac338021e8e804992e8c13496"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga8e2e646ac338021e8e804992e8c13496">◆ </a></span>ssh_poll_get_events()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">short ssh_poll_get_events </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structssh__poll__handle__struct.html">ssh_poll_handle</a> </td>
<td class="paramname"><em>p</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Get the events of a poll object. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">p</td><td>Pointer to an already allocated poll object.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Poll events. </dd></dl>
</div>
</div>
<a id="ga26c19b17ac8d1e3d7fcbfb4367fb93ff"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga26c19b17ac8d1e3d7fcbfb4367fb93ff">◆ </a></span>ssh_poll_get_fd()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">socket_t ssh_poll_get_fd </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structssh__poll__handle__struct.html">ssh_poll_handle</a> </td>
<td class="paramname"><em>p</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Get the raw socket of a poll object. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">p</td><td>Pointer to an already allocated poll object.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Raw socket. </dd></dl>
</div>
</div>
<a id="gac657ed07db9e5851ffb0aba45e071e99"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gac657ed07db9e5851ffb0aba45e071e99">◆ </a></span>ssh_poll_new()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="structssh__poll__handle__struct.html">ssh_poll_handle</a> ssh_poll_new </td>
<td>(</td>
<td class="paramtype">socket_t </td>
<td class="paramname"><em>fd</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">short </td>
<td class="paramname"><em>events</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">ssh_poll_callback </td>
<td class="paramname"><em>cb</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">void * </td>
<td class="paramname"><em>userdata</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Allocate a new poll object, which could be used within a poll context. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">fd</td><td>Socket that will be polled. </td></tr>
<tr><td class="paramname">events</td><td>Poll events that will be monitored for the socket. i.e. POLLIN, POLLPRI, POLLOUT </td></tr>
<tr><td class="paramname">cb</td><td>Function to be called if any of the events are set. The prototype of cb is: int (*ssh_poll_callback)(ssh_poll_handle p, socket_t fd, int revents, void *userdata); </td></tr>
<tr><td class="paramname">userdata</td><td>Userdata to be passed to the callback function. NULL if not needed.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A new poll object, NULL on error </dd></dl>
</div>
</div>
<a id="ga012582349ce62cf788761e5f97548496"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga012582349ce62cf788761e5f97548496">◆ </a></span>ssh_poll_remove_events()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void ssh_poll_remove_events </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structssh__poll__handle__struct.html">ssh_poll_handle</a> </td>
<td class="paramname"><em>p</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">short </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>Remove events from a poll object. Non-existent are ignored. The events will also be propagated to an associated poll context. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">p</td><td>Pointer to an already allocated poll object. </td></tr>
<tr><td class="paramname">events</td><td>Poll events. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="ga98ba36c2771b1e49d5c8e2f79be6d3ba"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga98ba36c2771b1e49d5c8e2f79be6d3ba">◆ </a></span>ssh_poll_set_callback()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void ssh_poll_set_callback </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structssh__poll__handle__struct.html">ssh_poll_handle</a> </td>
<td class="paramname"><em>p</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">ssh_poll_callback </td>
<td class="paramname"><em>cb</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">void * </td>
<td class="paramname"><em>userdata</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Set the callback of a poll object. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">p</td><td>Pointer to an already allocated poll object. </td></tr>
<tr><td class="paramname">cb</td><td>Function to be called if any of the events are set. </td></tr>
<tr><td class="paramname">userdata</td><td>Userdata to be passed to the callback function. NULL if not needed. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="gac02bf6f4444d4cc442da5865009fa5f6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gac02bf6f4444d4cc442da5865009fa5f6">◆ </a></span>ssh_poll_set_events()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void ssh_poll_set_events </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structssh__poll__handle__struct.html">ssh_poll_handle</a> </td>
<td class="paramname"><em>p</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">short </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>Set the events of a poll object. The events will also be propagated to an associated poll context. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">p</td><td>Pointer to an already allocated poll object. </td></tr>
<tr><td class="paramname">events</td><td>Poll events. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="ga2da5adcc03754a3b17e4fb0f23867ace"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga2da5adcc03754a3b17e4fb0f23867ace">◆ </a></span>ssh_poll_set_fd()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void ssh_poll_set_fd </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structssh__poll__handle__struct.html">ssh_poll_handle</a> </td>
<td class="paramname"><em>p</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">socket_t </td>
<td class="paramname"><em>fd</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Set the file descriptor of a poll object. The FD will also be propagated to an associated poll context. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">p</td><td>Pointer to an already allocated poll object. </td></tr>
<tr><td class="paramname">fd</td><td>New file descriptor. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by  <a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.14
</small></address>
</body>
</html>