コード例 #1
0
ファイル: large_fd_set.c プロジェクト: ColdStart/SNMPD
void
netsnmp_large_fd_set_cleanup(netsnmp_large_fd_set * fdset)
{
    netsnmp_large_fd_set_resize(fdset, 0);
    fdset->lfs_setsize = 0;
    fdset->lfs_setptr  = NULL;
}
コード例 #2
0
ファイル: large_fd_set.c プロジェクト: ColdStart/SNMPD
void
netsnmp_copy_fd_set_to_large_fd_set(netsnmp_large_fd_set * dst,
                                    const fd_set * src)
{
    netsnmp_large_fd_set_resize(dst, FD_SETSIZE);
    *dst->lfs_setptr = *src;
}
コード例 #3
0
ファイル: large_fd_set.c プロジェクト: a5216652166/rcp100
void
netsnmp_large_fd_set_init(netsnmp_large_fd_set * fdset, int setsize)
{
    fdset->lfs_setsize = 0;
    fdset->lfs_setptr  = NULL;
    netsnmp_large_fd_set_resize(fdset, setsize);
}
コード例 #4
0
ファイル: large_fd_set.c プロジェクト: 274914765/C
void netsnmp_large_fd_setfd (int fd, netsnmp_large_fd_set * fdset)
{
    netsnmp_assert (fd >= 0);

    while (fd >= (int) fdset->lfs_setsize)
        netsnmp_large_fd_set_resize (fdset, 2 * (fdset->lfs_setsize + 1));

    FD_SET (fd, fdset->lfs_setptr);
}
コード例 #5
0
ファイル: large_fd_set.c プロジェクト: 274914765/C
void netsnmp_large_fd_set_init (netsnmp_large_fd_set * fdset, int setsize)
{
    fdset->lfs_setsize = 0;
    fdset->lfs_setptr = NULL;
#if !defined(cygwin) && defined(HAVE_WINSOCK_H)
    fdset->lfs_set.fd_count = 0;
#endif
    netsnmp_large_fd_set_resize (fdset, setsize);
}
コード例 #6
0
ファイル: large_fd_set.c プロジェクト: 274914765/C
int
netsnmp_large_fd_set_select (int numfds, netsnmp_large_fd_set * readfds,
                             netsnmp_large_fd_set * writefds, netsnmp_large_fd_set * exceptfds, struct timeval *timeout)
{
#if defined(cygwin) || !defined(HAVE_WINSOCK_H)
    /* Bit-set representation: make sure all fds have at least size 'numfds'. */
    if (readfds && readfds->lfs_setsize < numfds)
        netsnmp_large_fd_set_resize (readfds, numfds);
    if (writefds && writefds->lfs_setsize < numfds)
        netsnmp_large_fd_set_resize (writefds, numfds);
    if (exceptfds && exceptfds->lfs_setsize < numfds)
        netsnmp_large_fd_set_resize (exceptfds, numfds);
#else
    /* Array representation: no resizing is necessary. */
#endif

    return select (numfds,
                   readfds ? readfds->lfs_setptr : NULL,
                   writefds ? writefds->lfs_setptr : NULL, exceptfds ? exceptfds->lfs_setptr : NULL, timeout);
}
コード例 #7
0
ファイル: large_fd_set.c プロジェクト: ColdStart/SNMPD
void
netsnmp_large_fd_setfd(SOCKET fd, netsnmp_large_fd_set * fdset)
{
    unsigned        i;

    netsnmp_assert(fd != INVALID_SOCKET);

    if (fdset->lfs_set.fd_count == fdset->lfs_setsize)
        netsnmp_large_fd_set_resize(fdset, 2 * (fdset->lfs_setsize + 1));

    for (i = 0; i < fdset->lfs_set.fd_count; i++) {
        if (fdset->lfs_set.fd_array[i] == (SOCKET) (fd))
            break;
    }

    if (i == fdset->lfs_set.fd_count
        && fdset->lfs_set.fd_count < fdset->lfs_setsize) {
        fdset->lfs_set.fd_count++;
        fdset->lfs_set.fd_array[i] = fd;
    }
}
コード例 #8
0
ファイル: T009large_fd_set_clib.c プロジェクト: 274914765/C
/* HEADER Testing netsnmp_large_fd_set */

netsnmp_large_fd_set fds;

netsnmp_large_fd_set_init (&fds, 2000);
OKF (fds.lfs_setsize == 2000, ("initialization"));
OKF (netsnmp_large_fd_set_resize (&fds, 2000) == 1, ("resizing to 2000"));
NETSNMP_LARGE_FD_ZERO (&fds);

{
    int i;

    for (i = 0; i < fds.lfs_setsize; ++i)
    {
        OKF (!NETSNMP_LARGE_FD_ISSET (i, &fds), ("%d is not set", i));
        NETSNMP_LARGE_FD_SET (i, &fds);
        OKF (NETSNMP_LARGE_FD_ISSET (i, &fds), ("%d is set", i));
        NETSNMP_LARGE_FD_CLR (i, &fds);
        OKF (!NETSNMP_LARGE_FD_ISSET (i, &fds), ("%d is not set", i));
    }
}

OKF (netsnmp_large_fd_set_resize (&fds, 3000) == 1, ("resizing to 3000"));

{
    int i;

    for (i = 0; i < fds.lfs_setsize; ++i)
    {
        OKF (!NETSNMP_LARGE_FD_ISSET (i, &fds), ("%d is not set", i));