// Copyright (c) 2002 David Muse
// See the COPYING file for more information.

#ifndef RUDIMENTS_CLIENTSOCKET_H
#define RUDIMENTS_CLIENTSOCKET_H

#include <rudiments/private/clientsocketincludes.h>

#ifdef RUDIMENTS_NAMESPACE
namespace rudiments {
#endif

class clientsocketprivate;

class clientsocket : public client {
        public:
                                clientsocket();
                                clientsocket(const clientsocket &c);
                clientsocket    &operator=(const clientsocket &c);
                virtual               ~clientsocket();

                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.

        #include <rudiments/private/clientsocket.h>
};

#ifdef RUDIMENTS_NAMESPACE
}
#endif

#endif