#ifndef _INCLUDED_BOBCAT_LOCALSERVERSOCKET_
#define _INCLUDED_BOBCAT_LOCALSERVERSOCKET_

#include <string>

#include <bobcat/localsocketbase>
#include <bobcat/errno>

namespace FBB
{
    class LocalServerSocket: public LocalSocketBase
    {
        bool        d_unlink;
        std::string d_name;

        public:
            enum Socket
            {
                KEEP,
                UNLINK,
            };

            LocalServerSocket()
            {}                                       
            LocalServerSocket(std::string const &name, Socket action = KEEP) 
                                                        throw (Errno)
            {
                open(name, action);
            }

            void open(std::string const &name, Socket action = KEEP) 
                                                        throw (Errno);
            ~LocalServerSocket();

            void listen(size_t backlog = 5, bool blocking = true)  
                                                                throw (Errno);
            size_t accept() throw (Errno);

        private:
            LocalServerSocket(LocalServerSocket const &other);  // NI
    };

}

#endif
