serversocketpool.h.html

    // Copyright (c) 1999-2000 David Muse
    // See the COPYING file for more information.

    #ifndef SERVERPOOL_H
    #define SERVERPOOL_H

    #include <rudiments/serversocket.h>

    // The server class manages a pool of sockets.

    #include <rudiments/private/socketnode.h>

    class serversocketpool {
            public:
                            serversocketpool();
                    virtual ~serversocketpool();

                    void    addSocket(serversocket *sock);
                            // Adds the specified server to the pool of
                            // sockets that the server is listening on.

                    int     waitForClientConnection(int timeoutsec,
                                                    int timeoutusec,
                                                    serversocket **whichsock,
                                                    genericsocket **clientsock);
                                    // Waits for client connections on any of the
                                    // sockets in the pool for "timeoutsec" seconds
                                    // and "timeoutusec" milliseconds before
                                    // falling through.
                                    //
                                    // Entering -1 for either parameter causes the
                                    // method to wait indefinitely.
                                    //
                                    // Entering 0 for both parameters causes the
                                    // method to fall through immediately unless a
                                    // client is already trying to connect.
                                    //
                                    // When a client connects, "whichsock" is set
                                    // to the socket in the pool that the client
                                    // connected to and "clientsock" is set to the
                                    // socket that can be used to communicate with
                                    // the client.
                                    //
                                    // Note that "clientsock" must be deleted after
                                    // it's been used.
                                    //
                                    // Returns 1 on success, 0 on timeout and -1
                                    // on error.

                    int     removeSocket(serversocket *sock);
                            // Removes the specified socket from the pool.

                    void    removeAllSockets();
                            // Removes every socket from the pool.

            protected:
                    #include <rudiments/private/serversocketpool.h>

    };

    #endif