void s_poll_init(s_poll_set *fds) { #ifdef USE_WIN32 fds->allocated=4; /* prealloc 4 file desciptors */ #endif s_poll_realloc(fds); FD_ZERO(fds->irfds); FD_ZERO(fds->iwfds); FD_ZERO(fds->ixfds); fds->max=0; /* no file descriptors */ }
void s_poll_add(s_poll_set *fds, int fd, int rd, int wr) { #ifdef USE_WIN32 /* fds->ixfds contains union of fds->irfds and fds->iwfds */ if(fds->ixfds->fd_count>=fds->allocated) { fds->allocated=fds->ixfds->fd_count+1; s_poll_realloc(fds); } #endif if(rd) FD_SET((unsigned int)fd, fds->irfds); if(wr) FD_SET((unsigned int)fd, fds->iwfds); /* always expect errors (and the Spanish Inquisition) */ FD_SET((unsigned int)fd, fds->ixfds); if(fd>fds->max) fds->max=fd; }
void s_poll_add(s_poll_set *fds, int fd, int rd, int wr) { unsigned int i; for(i=0; i<fds->nfds && fds->ufds[i].fd!=fd; i++) ; if(i==fds->nfds) { if(i==fds->allocated) { fds->allocated=i+1; s_poll_realloc(fds); } fds->ufds[i].fd=fd; fds->ufds[i].events=0; fds->nfds++; } if(rd) fds->ufds[i].events|=POLLIN; if(wr) fds->ufds[i].events|=POLLOUT; }
void s_poll_add(s_poll_set *fds, SOCKET fd, int rd, int wr) { unsigned i; for(i=0; i<fds->nfds && fds->ufds[i].fd!=fd; i++) ; if(i==fds->nfds) { /* not found */ if(i==fds->allocated) { fds->allocated=i+1; s_poll_realloc(fds); } fds->ufds[i].fd=fd; fds->ufds[i].events=0; fds->nfds++; } if(rd) { fds->ufds[i].events|=POLLIN; #ifdef POLLRDHUP fds->ufds[i].events|=POLLRDHUP; #endif } if(wr) fds->ufds[i].events|=POLLOUT; }
void s_poll_init(s_poll_set *fds) { fds->nfds=0; fds->allocated=4; /* prealloc 4 file desciptors */ s_poll_realloc(fds); }