From df387f268f8d30d0a21731406bf6031cd6ba9588 Mon Sep 17 00:00:00 2001 From: Matthias Schiffer Date: Sun, 22 Mar 2015 00:57:16 +0100 Subject: Refactor poll API --- src/poll.h | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) (limited to 'src/poll.h') diff --git a/src/poll.h b/src/poll.h index 823bcc8..fa870a9 100644 --- a/src/poll.h +++ b/src/poll.h @@ -36,22 +36,25 @@ #include "types.h" +/** A file descriptor to poll on */ +struct fastd_poll_fd { + fastd_poll_type_t type; /**< What the file descriptor is used for */ + int fd; /**< The file descriptor itself */ +}; + + /** Initializes the poll interface */ void fastd_poll_init(void); /** Frees the poll interface */ void fastd_poll_free(void); -/** Updates the file descriptor of the TUN/TAP interface from \e ctx.tunfd */ -void fastd_poll_set_fd_tuntap(void); -/** Updates the file descriptor of the socket \e ctx.socks[i] */ -void fastd_poll_set_fd_sock(size_t i); -/** Updates the file descriptor of the dynamic socket for the peer with index \e i in \e ctx.peers */ -void fastd_poll_set_fd_peer(size_t i); - -/** Must be called when a peer is added at the end of the peer list */ -void fastd_poll_add_peer(void); -/** Must be called then the peer with the index \e i is deleted */ -void fastd_poll_delete_peer(size_t i); +/** Returns a fastd_poll_fd_t structure */ +#define FASTD_POLL_FD(type, fd) ((fastd_poll_fd_t){type, fd}) + +/** Registers a new file descriptor to poll on */ +void fastd_poll_fd_register(fastd_poll_fd_t *fd); +/** Unregisters and closes a file descriptor */ +bool fastd_poll_fd_close(fastd_poll_fd_t *fd); /** Waits for the next input event */ void fastd_poll_handle(void); -- cgit v1.2.3