#define STDIN_ERRORS \
PARA_ERROR(STDIN_EOF, "end of file"), \
- PARA_ERROR(STDIN_OVERRUN, "stdin: output buffer overrun"), \
t->error = 0;
ret = btr_node_status(sit->btrn, 0, BTR_NT_ROOT);
- if (ret > 0)
- para_fd_set(STDIN_FILENO, &s->rfds, &s->max_fileno);
- else if (ret < 0) {
- s->timeout.tv_sec = 0;
- s->timeout.tv_usec = 1;
- }
+ if (ret < 0)
+ sched_min_delay(s);
+ if (ret <= 0)
+ return;
+ if (btr_pool_unused(sit->btrp) > 0)
+ return para_fd_set(STDIN_FILENO, &s->rfds, &s->max_fileno);
+ sched_request_timeout_ms(100, s);
}
/**
if (!FD_ISSET(STDIN_FILENO, &s->rfds))
return;
sz = btr_pool_get_buffer(sit->btrp, &buf);
- ret = -E_STDIN_OVERRUN;
if (sz == 0)
- goto err;
+ return;
/*
* Do not use the maximal size to avoid having only a single buffer
* reference for the whole pool. This is bad because if that single
*/
sz = PARA_MIN(sz, btr_pool_size(sit->btrp) / 2);
ret = read(STDIN_FILENO, buf, sz);
- //PARA_CRIT_LOG("read ret: %d\n", ret);
if (ret < 0)
ret = -ERRNO_TO_PARA_ERROR(errno);
if (ret == 0)