#include <errno.h>
#include "iobuf.h"
#include "iopoll.h"
int iobuf_timeout(iobuf* io, int poll_out)
{
iopoll_fd pfd;
int result;
if (!io->timeout) return 1;
pfd.fd = io->fd;
pfd.events = poll_out ? IOPOLL_WRITE : IOPOLL_READ;
while ((result = iopoll(&pfd, 1, io->timeout)) == -1) {
if (errno == EAGAIN) continue;
IOBUF_SET_ERROR(io);
}
if (result) return 1;
io->flags |= IOBUF_TIMEOUT;
return 0;
}