Move include files in debian packge into 'senf' subdirectory
[senf.git] / Socket / ProtocolServerSocketHandle.hh
index a60c6c1..bd9200d 100644 (file)
@@ -1,6 +1,6 @@
 // $Id$
 //
-// Copyright (C) 2006 
+// Copyright (C) 2006
 // Fraunhofer Institut fuer offene Kommunikationssysteme (FOKUS)
 // Kompetenzzentrum fuer Satelitenkommunikation (SatCom)
 //     Stefan Bund <stefan.bund@fokus.fraunhofer.de>
@@ -21,7 +21,7 @@
 // 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 
 /** \file
-    \brief senf::ProtocolServerSocketHandle public header
+    \brief ProtocolServerSocketHandle public header
  */
 
 #ifndef HH_ProtocolServerSocketHandle_
 ///////////////////////////////hh.p////////////////////////////////////////
 
 namespace senf {
+
     /// \addtogroup handle_group
     /// @{
-   
+
     template <class Protocol> class ProtocolClientSocketHandle;
 
     /** \brief Protocol specific socket handle (server interface)
 
-       The ProtocolServerSocketHandle is the server interface leaf class of the handle
-       hierarchy. This is the class to instantiate to open a new socket. This is also the \e only
-       class, which can be used to open a server socket.
+        The ProtocolServerSocketHandle is the server interface leaf class of the handle
+        hierarchy. This is the class to instantiate to open a new socket. This is also the \e only
+        class, which can be used to open a server socket.
 
-       The \a Protocol template argument defines the protocol of the socket. This protocol provides
-       the protocol interface of the socket as well as the complete socket policy of this protocol.
+        The \a Protocol template argument defines the protocol of the socket. This protocol provides
+        the protocol interface of the socket as well as the complete socket policy of this protocol.
 
-       The ProtocolServerSocketHandle adds the protocol interface as an additional interface to the
-       socket handle. This interface is only accessible via the protocol class. All socket
-       functionality not available through the policy interface (see ServerSocketHandle) is
-       accessible via the protocol() member.
+        The ProtocolServerSocketHandle adds the protocol interface as an additional interface to the
+        socket handle. This interface is only accessible via the protocol class. All socket
+        functionality not available through the policy interface (see ServerSocketHandle) is
+        accessible via the protocol() member.
 
-       A ProtocolServerSocketHandle is only meaningful for connection oriented addressable
-       protocols (CommunicationPolicy is ConnectedCommunicationPolicy and AddressingPolicy is not
-       NoAddressingPolicy).
+        A ProtocolServerSocketHandle is only meaningful for connection oriented addressable
+        protocols (CommunicationPolicy is ConnectedCommunicationPolicy and AddressingPolicy is not
+        NoAddressingPolicy).
 
-       \see \ref protocol_group
+        \see \ref protocol_group
       */
     template <class SocketProtocol>
     class ProtocolServerSocketHandle
@@ -69,34 +69,45 @@ namespace senf {
         // Types
 
         typedef SocketProtocol Protocol; ///< The socket protocol
+        enum UninitializedType { Uninitialized }; ///< Flag to call 'uninitialized' constructor
 
         ///////////////////////////////////////////////////////////////////////////
         ///\name Structors and default members
         ///@{
 
-       /** \brief Create new server socket
+        /** \brief Create new server socket
+
+            This constructor is one of the possible constructors. The exact Signature of the
+            constructor (or constructors) is defined by the \c init_server() member (or members) of
+            the \a Protocol class. ProtocolClientSocketHandle defines a number of constructors
+            taking up to 9 arguments which just forward to a corresponding \a Protocol\c
+            ::init_server() member. See the documentation of the respective Protocol class for a
+            detailed documentation of that protocols constructors.
+         */
 
-           This constructor is one of the possible constructors. The exact Signature of the
-           constructor (or constructors) is defined by the \c init_server() member (or members) of
-           the \a Protocol class. ProtocolClientSocketHandle defines a number of constructors
-           taking up to 9 arguments which just forward to a corresponding \a Protocol\c
-           ::init_server() member. See the documentation of the respective Protocol class for a
-           detailed documentation of that protocols constructors.
-        */
-       
         ProtocolServerSocketHandle();
 
-#       define BOOST_PP_ITERATION_PARAMS_1 (4, (1, 9, "Socket/ProtocolServerSocketHandle.mpp", 1))
+#       define BOOST_PP_ITERATION_PARAMS_1 (4, (1, 9, SENF_ABSOLUTE_INCLUDE_PATH(Socket/ProtocolServerSocketHandle.mpp), 1))
 #       include BOOST_PP_ITERATE()
 
+        /** \brief Create uninitialized socket variable
+
+            This special constructor is called when passing
+            ProtocolServerSocketHandle::Uninitialized as only argument to the constructor. This will
+            create an in-\ref valid() socket handle which can however be assigned later with another
+            socket instance.
+
+            \implementation The socket handle will have no \c body allocated.
+         */
+        ProtocolServerSocketHandle(UninitializedType);
         ///@}
         ///////////////////////////////////////////////////////////////////////////
 
         Protocol const & protocol();    ///< Access the protocol interface
-                                       /**< The returned protocol class reference gives access to
-                                          the complete protocol interface as defined by that
-                                          class. See the respective protocol class documentation.
-                                          \returns \a Protocol class reference */
+                                        /**< The returned protocol class reference gives access to
+                                           the complete protocol interface as defined by that
+                                           class. See the respective protocol class documentation.
+                                           \returns \a Protocol class reference */
 
         ProtocolClientSocketHandle<SocketProtocol> accept();
 
@@ -125,6 +136,10 @@ namespace senf {
 \f
 // Local Variables:
 // mode: c++
-// c-file-style: "senf"
 // fill-column: 100
+// c-file-style: "senf"
+// indent-tabs-mode: nil
+// ispell-local-dictionary: "american"
+// compile-command: "scons -u test"
+// comment-column: 40
 // End: