// Copyright (c) 2002 David Muse // See the COPYING file for more information. #ifndef RUDIMENTS_SERVERSOCKET_H #define RUDIMENTS_SERVERSOCKET_H #include <rudiments/private/serversocketincludes.h> #ifdef RUDIMENTS_NAMESPACE namespace rudiments { #endif class serversocketprivate; class serversocket : public server { public: serversocket(); serversocket(const serversocket &s); serversocket &operator=(const serversocket &s); virtual ~serversocket(); virtual bool supportsBlockingNonBlockingModes(); // Returns false if the system doesn't support // blocking/nonblocking modes and true // otherwise. virtual bool useNonBlockingMode() const; // Puts the file descriptor in non-blocking // mode. Returns true on success and false on // failure. // Returns false if the system doesn't support // blocking/nonblocking modes. virtual bool useBlockingMode() const; // Puts the file descriptor in blocking mode. // Returns true on success and false on // failure. // Returns false if the system doesn't support // blocking/nonblocking modes. bool lingerOnClose(int timeout); // Instructs the socket to stay open for // "timeout" seconds even after close() is // called to allow it to receive any data that // may still be buffered. // // Returns true on success and false on failure. bool dontLingerOnClose(); // Instructs the socket to close immediately // when close() is called, dumping any data // that may still be buffered but that it // may not have received. This is the default. // // Returns true on success and false on failure. bool reuseAddresses(); // Allows sockets in the TIME_WAIT state to be // reused. // // Returns true on success and false on failure. bool dontReuseAddresses(); // Prevents sockets in the TIME_WAIT state from // being reused. This is the default. // // Returns true on success and false on failure. virtual bool listen(int backlog); // Waits until a client connects then places // that connection in queue. Up to "backlog" // connections may be queued before future // conenctions are refused. // // Returns true on success and false on failure. #include <rudiments/private/serversocket.h> }; #ifdef RUDIMENTS_NAMESPACE } #endif #endif