moved Sniffer into new Examples directory
[senf.git] / Socket / INetProtocol.hh
index 79a514c..bedf7a8 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>
 // 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 
 /** \file
+    \brief IPv[46]Protocol public header
 
-    \todo what about OOB data? 
+    \todo what about OOB data?
 
     \todo Implement IP_RECVERR / MSG_ERRQUEUE. This should be placed
-    into an additional protocol class since IP_RECVERR is only valid
+    into an additional protocol facet since IP_RECVERR is only valid
     for SOCK_DGRAM (UDP) and not SOCK_STREAM (TCP) sockets
  */
 
 
 namespace senf {
 
+    /// \addtogroup protocol_facets_group
+    /// @{
 
-    /** \brief
+    /** \brief Protocol facet providing IPv4 Addressing related API
 
-       \todo Is it safe, not to allow setting the interface index on
-       add/drop? what does it do (especially if the local addres is
-       given ?). What have I been thinking here ???
-       
-       \todo move all multicast-methods into an extra
-       IPv4MulticastProtocol class
+        This protocol facet introduces all the socket api protocol members which are related to IPv4
+        addressing.
+
+        \todo Is it safe, not to allow setting the interface index on add/drop? what does it do
+        (especially if the local address is given ?). What have I been thinking here ???
+
+        \todo connect() is only available on stream sockets. We want to access bind() and connect()
+        via the ClientSocketHandle -> see SocketProtocol todo point
      */
-    class IPv4Protocol 
+    class IPv4Protocol
         : public virtual SocketProtocol
     {
     public:
-        void connect(INet4Address const & address) const;
-        void bind(INet4Address const & address) const;
-
-        unsigned mcTTL() const;
-        void mcTTL(unsigned value) const;
-
-        bool mcLoop() const;
-        void mcLoop(bool value) const;
-
-        void mcAddMembership(INet4Address const & mcAddr) const;
-        void mcAddMembership(INet4Address const & mcAddr, INet4Address const & localAddr) const;
+        void connect(INet4Address 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(INet4Address 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 */
+    };
 
-        void mcDropMembership(INet4Address const & mcAddr) const;
-        void mcDropMembership(INet4Address const & mcAddr, INet4Address const & localAddr) const;
+    /** \brief Protocol facet providing IPv6 Addressing related API
 
-        void mcIface(std::string iface = std::string()) const;
-    };
-    
+        This protocol facet introduces all the socket api protocol members which are related to IPv6
+        addressing.
+     */
     class IPv6Protocol
         : public virtual SocketProtocol
-    {};
+    {
+    public:
+        void connect(INet6SocketAddress 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(INet6SocketAddress 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 */
+    };
+
+    /// @}
 
 }
 
@@ -90,5 +104,8 @@ namespace senf {
 \f
 // Local Variables:
 // mode: c++
+// fill-column: 100
 // c-file-style: "senf"
+// indent-tabs-mode: nil
+// ispell-local-dictionary: "american"
 // End: