diff options
author | Timo Teras <timo.teras@iki.fi> | 2009-11-26 09:35:49 +0200 |
---|---|---|
committer | Timo Teras <timo.teras@iki.fi> | 2009-11-26 09:37:24 +0200 |
commit | aa530f352b0410150bfe94c821ae32c1378b9d02 (patch) | |
tree | fb27f277db0c7feaaf12ce43169d3b0b44e95c0f /include/libtf/io.h | |
parent | 4db830052d941d9c6de281bc9a2f6ac212c59ad8 (diff) | |
download | libtf-aa530f352b0410150bfe94c821ae32c1378b9d02.tar.bz2 libtf-aa530f352b0410150bfe94c821ae32c1378b9d02.tar.xz |
libtf: stackable timeouts
instead of having per-function argument, use a push/pop mechanism:
- multiple timers inside fiber use only one heap entry
- easy to chain multiple possibly blocking operations inside one
timeout block
Diffstat (limited to 'include/libtf/io.h')
-rw-r--r-- | include/libtf/io.h | 19 |
1 files changed, 9 insertions, 10 deletions
diff --git a/include/libtf/io.h b/include/libtf/io.h index 38dd541..1f0b793 100644 --- a/include/libtf/io.h +++ b/include/libtf/io.h @@ -52,27 +52,26 @@ void tf_poll_close(void); int tf_open_fd(struct tf_fd *fd, int kfd, int flags); int tf_open(struct tf_fd *fd, const char *pathname, int flags); int tf_close(struct tf_fd *fd); -ssize_t tf_read(struct tf_fd *fd, void *buf, size_t count, tf_mtime_diff_t timeout); -ssize_t tf_write(struct tf_fd *fd, const void *buf, size_t count, tf_mtime_diff_t timeout); -int tf_read_fully(struct tf_fd *fd, void *buf, size_t count, tf_mtime_diff_t timeout); -int tf_write_fully(struct tf_fd *fd, const void *buf, size_t count, tf_mtime_diff_t timeout); +ssize_t tf_read(struct tf_fd *fd, void *buf, size_t count); +ssize_t tf_write(struct tf_fd *fd, const void *buf, size_t count); +int tf_read_fully(struct tf_fd *fd, void *buf, size_t count); +int tf_write_fully(struct tf_fd *fd, const void *buf, size_t count); int tf_socket(struct tf_fd *fd, int domain, int type, int protocol); int tf_bind(struct tf_fd *fd, const struct tf_sockaddr *addr); int tf_listen(struct tf_fd *fd, int backlog); int tf_accept(struct tf_fd *listen_fd, struct tf_fd *child_fd, - struct tf_sockaddr *from, tf_mtime_diff_t timeout); -int tf_connect(struct tf_fd *fd, const struct tf_sockaddr *addr, tf_mtime_diff_t timeout); + struct tf_sockaddr *from); +int tf_connect(struct tf_fd *fd, const struct tf_sockaddr *addr); ssize_t tf_recvmsg(struct tf_fd *fd, struct tf_sockaddr *from, struct tf_sockaddr *to, - void *buf, size_t count, tf_mtime_diff_t timeout); + void *buf, size_t count); ssize_t tf_sendmsg(struct tf_fd *fd, struct tf_sockaddr *from, const struct tf_sockaddr *to, - const void *buf, size_t count, tf_mtime_diff_t timeout); + const void *buf, size_t count); -int tf_query_dns(const char *name, int num_res, struct tf_sockaddr *res, - tf_mtime_diff_t timeout); +int tf_query_dns(const char *name, int num_res, struct tf_sockaddr *res); #endif |