예제 #1
0
파일: network.c 프로젝트: Jimdo/stunnel
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 */
}
예제 #2
0
파일: network.c 프로젝트: Jimdo/stunnel
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;
}
예제 #3
0
파일: network.c 프로젝트: Jimdo/stunnel
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;
}
예제 #4
0
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;
}
예제 #5
0
파일: network.c 프로젝트: Jimdo/stunnel
void s_poll_init(s_poll_set *fds) {
    fds->nfds=0;
    fds->allocated=4; /* prealloc 4 file desciptors */
    s_poll_realloc(fds);
}