aboutsummaryrefslogtreecommitdiff
path: root/include/libssh/poll.h
diff options
context:
space:
mode:
authorAris Adamantiadis <aris@0xbadc0de.be>2009-09-23 23:51:04 +0200
committerAris Adamantiadis <aris@0xbadc0de.be>2009-09-23 23:51:04 +0200
commitf84ebc2e2770b16b43c62ecb67cf8d4bd1b99d72 (patch)
tree82abdf7a1e84c9a281f622e38247e67563d68ffa /include/libssh/poll.h
parentb359229a2ea6f8b623add9bea02015991c8d6e9d (diff)
downloadlibssh-f84ebc2e2770b16b43c62ecb67cf8d4bd1b99d72.tar.gz
libssh-f84ebc2e2770b16b43c62ecb67cf8d4bd1b99d72.tar.xz
libssh-f84ebc2e2770b16b43c62ecb67cf8d4bd1b99d72.zip
Moved lots of declaration out of priv.h
Diffstat (limited to 'include/libssh/poll.h')
-rw-r--r--include/libssh/poll.h61
1 files changed, 61 insertions, 0 deletions
diff --git a/include/libssh/poll.h b/include/libssh/poll.h
new file mode 100644
index 00000000..7ba939f9
--- /dev/null
+++ b/include/libssh/poll.h
@@ -0,0 +1,61 @@
+/*
+ * This file is part of the SSH Library
+ *
+ * Copyright (c) 2009 by Aris Adamantiadis
+ *
+ * The SSH Library is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation; either version 2.1 of the License, or (at your
+ * option) any later version.
+ *
+ * The SSH Library is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+ * License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with the SSH Library; see the file COPYING. If not, write to
+ * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
+ * MA 02111-1307, USA.
+ */
+
+#ifndef POLL_H_
+#define POLL_H_
+
+/* poll.c */
+int ssh_poll(ssh_pollfd_t *fds, nfds_t nfds, int timeout);
+typedef struct ssh_poll_ctx SSH_POLL_CTX;
+typedef struct ssh_poll SSH_POLL;
+
+/**
+ * @brief SSH poll callback.
+ *
+ * @param p Poll object this callback belongs to.
+ * @param fd The raw socket.
+ * @param revents The current poll events on the socket.
+ * @param userdata Userdata to be passed to the callback function.
+ *
+ * @return 0 on success, < 0 if you removed the poll object from
+ * it's poll context.
+ */
+typedef int (*ssh_poll_callback)(SSH_POLL *p, int fd, int revents,
+ void *userdata);
+
+
+SSH_POLL *ssh_poll_new(socket_t fd, short events, ssh_poll_callback cb,
+ void *userdata);
+void ssh_poll_free(SSH_POLL *p);
+SSH_POLL_CTX *ssh_poll_get_ctx(SSH_POLL *p);
+short ssh_poll_get_events(SSH_POLL *p);
+void ssh_poll_set_events(SSH_POLL *p, short events);
+void ssh_poll_add_events(SSH_POLL *p, short events);
+void ssh_poll_remove_events(SSH_POLL *p, short events);
+socket_t ssh_poll_get_fd(SSH_POLL *p);
+void ssh_poll_set_callback(SSH_POLL *p, ssh_poll_callback cb, void *userdata);
+SSH_POLL_CTX *ssh_poll_ctx_new(size_t chunk_size);
+void ssh_poll_ctx_free(SSH_POLL_CTX *ctx);
+int ssh_poll_ctx_add(SSH_POLL_CTX *ctx, SSH_POLL *p);
+void ssh_poll_ctx_remove(SSH_POLL_CTX *ctx, SSH_POLL *p);
+int ssh_poll_ctx(SSH_POLL_CTX *ctx, int timeout);
+
+#endif /* POLL_H_ */