From eddcc3dfa9d3e5b45675de6287f0a359893b1bc1 Mon Sep 17 00:00:00 2001 From: Nicholas Marriott Date: Thu, 22 Oct 2009 19:41:51 +0000 Subject: Split the server code handling clients, jobs and windows off into separate files from server.c (merging server-msg.c into the client file) and rather than iterating over each set after poll(), allow a callback to be specified when the fd is added and just walk once over the returned pollfds calling each callback where needed. More to come, getting this in so it is tested. --- buffer-poll.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) (limited to 'buffer-poll.c') diff --git a/buffer-poll.c b/buffer-poll.c index 58c2d555..cf70c04c 100644 --- a/buffer-poll.c +++ b/buffer-poll.c @@ -25,15 +25,15 @@ /* Fill buffers from socket based on poll results. */ int -buffer_poll(struct pollfd *pfd, struct buffer *in, struct buffer *out) +buffer_poll(int fd, int events, struct buffer *in, struct buffer *out) { ssize_t n; - if (pfd->revents & (POLLERR|POLLNVAL)) + if (events & (POLLERR|POLLNVAL)) return (-1); - if (in != NULL && pfd->revents & POLLIN) { + if (in != NULL && events & POLLIN) { buffer_ensure(in, BUFSIZ); - n = read(pfd->fd, BUFFER_IN(in), BUFFER_FREE(in)); + n = read(fd, BUFFER_IN(in), BUFFER_FREE(in)); if (n == 0) return (-1); if (n == -1) { @@ -41,10 +41,10 @@ buffer_poll(struct pollfd *pfd, struct buffer *in, struct buffer *out) return (-1); } else buffer_add(in, n); - } else if (pfd->revents & POLLHUP) + } else if (events & POLLHUP) return (-1); - if (out != NULL && BUFFER_USED(out) > 0 && pfd->revents & POLLOUT) { - n = write(pfd->fd, BUFFER_OUT(out), BUFFER_USED(out)); + if (out != NULL && BUFFER_USED(out) > 0 && events & POLLOUT) { + n = write(fd, BUFFER_OUT(out), BUFFER_USED(out)); if (n == -1) { if (errno != EINTR && errno != EAGAIN) return (-1); -- cgit