version 1.30, 2021/08/29 13:43:46 |
version 1.31, 2024/02/19 16:39:18 |
|
|
* poll events on demand. |
* poll events on demand. |
*/ |
*/ |
|
|
pfd[0].fd = fdin; /* from receiver */ |
pfd[0].fd = -1; /* from receiver */ |
pfd[0].events = POLLIN; |
pfd[0].events = POLLIN; |
pfd[1].fd = -1; /* to receiver */ |
pfd[1].fd = -1; /* to receiver */ |
pfd[1].events = POLLOUT; |
pfd[1].events = POLLOUT; |
|
|
pfd[2].events = POLLIN; |
pfd[2].events = POLLIN; |
|
|
for (;;) { |
for (;;) { |
assert(pfd[0].fd != -1); |
/* disable recevier until all buffered data was sent */ |
|
if (pfd[1].fd != -1 && wbufsz > 0) |
|
pfd[0].fd = -1; |
|
else |
|
pfd[0].fd = fdin; |
if ((c = poll(pfd, 3, poll_timeout)) == -1) { |
if ((c = poll(pfd, 3, poll_timeout)) == -1) { |
ERR("poll"); |
ERR("poll"); |
goto out; |
goto out; |