// 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