1
0
mirror of https://git.libssh.org/projects/libssh.git synced 2025-08-08 19:02:06 +03:00

poll: Added a function to poll the events.

This commit is contained in:
milo
2011-02-20 14:06:57 +01:00
parent e40261c22c
commit ddb1c1838f
2 changed files with 39 additions and 0 deletions

View File

@@ -835,6 +835,44 @@ int ssh_event_add_session(ssh_event event, ssh_session session) {
return SSH_OK;
}
/**
* @brief Poll all the sockets and sessions associated through an event object.
* 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.
*
* @param event The ssh_event object to poll.
* @param timeout 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.
* @returns SSH_OK No error.
* SSH_ERROR Error happened during the poll.
*/
int ssh_event_dopoll(ssh_event event, int timeout) {
int rc;
#ifdef WITH_SERVER
ssh_session session;
struct ssh_iterator *iterator;
#endif
if(event == NULL || event->ctx == NULL) {
return SSH_ERROR;
}
rc = ssh_poll_ctx_dopoll(event->ctx, timeout);
#ifdef WITH_SERVER
if(rc == SSH_OK) {
iterator = ssh_list_get_iterator(event->sessions);
while(iterator != NULL) {
session = (ssh_session)iterator->data;
ssh_execute_message_callbacks(session);
iterator = iterator->next;
}
}
#endif
return rc;
}
/**
* @brief Remove a socket fd from an event context.
*