removed some useless spaces; not very important, I know :)
[senf.git] / Socket / Protocols / UN / UNProtocol.hh
index 3434641..ccf1ddc 100644 (file)
@@ -1,6 +1,9 @@
 // $Id$
 //
-// Copyright (C) 2007 
+// Copyright (C) 2007
+// Fraunhofer Institute for Open Communication Systems (FOKUS)
+// Competence Center NETwork research (NET), St. Augustin, GERMANY
+//     David Wagner <dw6@berlios.de>
 //
 // This program is free software; you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
@@ -41,23 +44,34 @@ namespace senf {
 
         This protocol facet introduces all the socket api protocol members which are related to Unix 
         Domain addressing.
-
-        \todo connect() is only available on stream sockets. We want to access bind() and connect()
-        via the ClientSocketHandle -> see SocketProtocol todo point
      */
     class UNProtocol
         : public virtual SocketProtocol
     {
     public:
-        void connect(UNSocketAddress const & address) const; ///< Connect to remote address
-                                        /**< \todo make this obsolete by allowing access to the
-                                             ClientSocketHandle from ConcreateSocketProtocol
-                                             \param[in] address Address to connect to */
-        void bind(UNSocketAddress const & address) const; ///< Set local socket address
-                                        /**< \todo make this obsolete by allowing access to the
-                                             ClientSocketHandle from ConcreateSocketProtocol
-                                             \param[in] address Address to set */
+        virtual void close() const;   ///< Close socket
+                              /**< This override will automatically \c shutdown() the
+                                   socket whenever it is closed.
+                                   \throws senf::SystemException */  
+        virtual void terminate() const;       ///< Forcibly close socket
+                                        /**< This override will automatically \c shutdown() the
+                                           socket whenever it is called. Additionally it will
+                                           disable SO_LINGER to ensure, that v_terminate will not
+                                           block. Like the overriden method, this member will ignore
+                                           failures and will never throw. It therefore safe to be
+                                           called from a destructor. */        ///\name Abstract Interface Implementation
+        ///@{
+
+         unsigned available() const;
+         bool eof() const;
+         
+    private:
+        void check_and_unlink() const;  
+      
+        std::string path_;
     };
+
+    ///@}
 }
 
 ///////////////////////////////hh.e////////////////////////////////////////