adding constructor from in6_addr
[senf.git] / Socket / SocketHandle.hh
index be6e23a..6d36be8 100644 (file)
@@ -1,9 +1,9 @@
 // $Id:SocketHandle.hh 218 2007-03-20 14:39:32Z tho $
 //
 // Copyright (C) 2006
-// Fraunhofer Institut fuer offene Kommunikationssysteme (FOKUS)
-// Kompetenzzentrum fuer Satelitenkommunikation (SatCom)
-//     Stefan Bund <stefan.bund@fokus.fraunhofer.de>
+// Fraunhofer Institute for Open Communication Systems (FOKUS)
+// Competence Center NETwork research (NET), St. Augustin, GERMANY
+//     Stefan Bund <g0dil@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
@@ -44,26 +44,28 @@ namespace senf {
 
     /** \brief basic SocketHandle supporting protocol and policy abstraction
 
-        The senf::SocketHandle class introduces the two abstraction layers of the socket
+        The %senf::SocketHandle class introduces the two abstraction layers of the socket
         library. senf::SocketHandle does \e not provide socket functions it only provides the
         infrastructure necessary to support both, the protocol and the policy interface.
 
-        senf::SocketHandle takes the socket policy as a template argument. senf::SocketHandle also
+        %SocketHandle takes the socket policy as a template argument. %SocketHandle also
         introduces the protocol class. However, the class has no public constructors (see the
         derived classes senf::ProtocolClientSocketHandle and senf::ProtocolServerSocketHandle).
 
-        The most important functionality provided by senf::SocketHandle is the conversion
+        The most important functionality provided by %SocketHandle is the conversion
         constructor. This allows to implicitly convert between compatible socket handle types as
         specified by the socket policy. The conversion constructor is defined in such a way, that
         only valid conversions are possible (see the implementation source for a more complete
         discussion).
 
+        \tparam SPolicy socket policy
+
         \note This class is \e not meant to be used as a base-class outside the library
         implementation; The protected interface is for internal use only.
 
         \todo Create a SocketHandleBase class and move some non-Policy dependent code there
      */
-    template <class SocketPolicy>
+    template <class SPolicy>
     class SocketHandle
         : public FileHandle
     {
@@ -71,7 +73,7 @@ namespace senf {
         ///////////////////////////////////////////////////////////////////////////
         // Types
 
-        typedef SocketPolicy Policy;
+        typedef SPolicy Policy;
 
         /** \brief Check policy compatibility
 
@@ -81,8 +83,7 @@ namespace senf {
          */
         template <class OtherPolicy>
         struct IsCompatible
-            : public boost::enable_if< SocketPolicyIsBaseOf<SocketPolicy,OtherPolicy>,
-                                       SocketHandle >
+            : public boost::enable_if< SocketPolicyIsBaseOf<Policy,OtherPolicy>, SocketHandle >
         {};
 
         ///////////////////////////////////////////////////////////////////////////
@@ -126,7 +127,7 @@ namespace senf {
 
                                              \param map string to string mapping to be filled with
                                                  state information
-                                             \param lod level of detail requested. The
+                                             \param lod level of %detail requested. The
                                                  interpretation of this value is protocol specific
 
                                              \implementation This member will be re-implemented in
@@ -139,7 +140,7 @@ namespace senf {
                                         /**< Formats the complete state map value and returns it as
                                              a single multi-line string.
 
-                                             \param lod level of detail requested. The
+                                             \param lod level of %detail requested. The
                                                 interpretation of this value is protocol specific
                                              
                                              \implementation This member will be re-implemented in
@@ -147,7 +148,7 @@ namespace senf {
                                                  documentation. */
 
     protected:
-        explicit SocketHandle(std::auto_ptr<SocketProtocol> protocol, bool isServer);
+        explicit SocketHandle(std::auto_ptr<SocketBody> body);
                                         ///< Initialize SocketHandle providing the protocol
                                         /**< \param protocol Protocol class of the protocol
                                                  implemented by this socket handle
@@ -200,8 +201,8 @@ namespace senf {
 
         \related senf::SocketHandle
      */
-    template <class Policy>
-    std::ostream & operator<<(std::ostream & os, SocketHandle<Policy> handle);
+    template <class SPolicy>
+    std::ostream & operator<<(std::ostream & os, SocketHandle<SPolicy> handle);
 
     /** \brief static socket (down-)cast