X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=blobdiff_plain;f=send.h;h=76a35123c8b5b414b45eec935a525e8d906ae22a;hp=75c13731bb1af9223a0a32fdc8c85792f04f3d50;hb=843950e7a85730b796bb6238b6e91111f7209c25;hpb=1f556ae88bd8c85d4452f689f532f5a6abeabe92 diff --git a/send.h b/send.h index 75c13731..76a35123 100644 --- a/send.h +++ b/send.h @@ -45,8 +45,8 @@ struct sender { * command. Of course, \a buf is a pointer to the chunk of data which * should be sent, and \a len is the length of this buffer. */ - void (*send)(struct audio_format *af, long unsigned current_chunk, - long unsigned chunks_sent, const char *buf, size_t len); + void (*send)(long unsigned current_chunk, long unsigned chunks_sent, + const char *buf, size_t len); /** add file descriptors to fd_sets * * The pre_select function of each supported sender is called just before @@ -58,8 +58,7 @@ struct sender { * * \sa select(2) */ - void (*pre_select)(struct audio_format *af, int *max_fileno, fd_set *rfds, - fd_set *wfds); + void (*pre_select)(int *max_fileno, fd_set *rfds, fd_set *wfds); /** * handle the file descriptors which are ready for I/O * @@ -67,7 +66,7 @@ struct sender { * set, this is the hook to check the result and do any I/O on those descriptors * which are ready for reading/writing. */ - void (*post_select)(struct audio_format *af, fd_set *rfds, fd_set *wfds); + void (*post_select)(fd_set *rfds, fd_set *wfds); /** * terminate all connected clients * @@ -85,9 +84,16 @@ struct sender { int (*client_cmds[NUM_SENDER_CMDS])(struct sender_command_data*); }; +/** + * check a file descriptor for writability + * + * \param fd the file desctiptor + * + * \return positive if fd is ready for writing, zero if it isn't, negative if + * an error occured. + */ - -static inline int _write_ok(int fd) +static inline int write_ok(int fd) { struct timeval tv = {0, 0}; fd_set wfds; @@ -95,11 +101,10 @@ static inline int _write_ok(int fd) again: FD_ZERO(&wfds); FD_SET(fd, &wfds); + tv.tv_sec = 0; + tv.tv_usec = 0; ret = select(fd + 1, NULL, &wfds, NULL, &tv); if (ret < 0 && errno == EINTR) goto again; - if (ret < 0) - ret = 0; return ret; } -