moved Sniffer into new Examples directory
[senf.git] / Socket / TCPSocketHandle.cc
index 0eb1446..1574919 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>
@@ -20,7 +20,9 @@
 // Free Software Foundation, Inc.,
 // 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 
-// Definition of non-inline non-template functions
+/** \file
+    \brief TCPv4SocketHandle and TCPv6SocketHandle non-inline non-template implementation
+ */
 
 #include "TCPSocketHandle.hh"
 //#include "TCPSocketHandle.ih"
 #define prefix_
 ///////////////////////////////cc.p////////////////////////////////////////
 
-prefix_ void satcom::lib::TCPv4SocketProtocol::init_client()
+///////////////////////////////////////////////////////////////////////////
+// senf::TCPv4SocketProtocol
+
+prefix_ void senf::TCPv4SocketProtocol::init_client()
     const
 {
     int sock = ::socket(PF_INET,SOCK_STREAM,0);
@@ -46,14 +51,14 @@ prefix_ void satcom::lib::TCPv4SocketProtocol::init_client()
 }
 
 prefix_ void
-satcom::lib::TCPv4SocketProtocol::init_client(INet4Address const & address)
+senf::TCPv4SocketProtocol::init_client(INet4Address const & address)
     const
 {
     init_client();
     connect(address);
 }
 
-prefix_ void satcom::lib::TCPv4SocketProtocol::init_server()
+prefix_ void senf::TCPv4SocketProtocol::init_server()
     const
 {
     int sock = ::socket(PF_INET,SOCK_STREAM,0);
@@ -62,7 +67,7 @@ prefix_ void satcom::lib::TCPv4SocketProtocol::init_server()
     body().fd(sock);
 }
 
-prefix_ void satcom::lib::TCPv4SocketProtocol::init_server(INet4Address const & address,
+prefix_ void senf::TCPv4SocketProtocol::init_server(INet4Address const & address,
                                                            unsigned backlog)
     const
 {
@@ -73,12 +78,58 @@ prefix_ void satcom::lib::TCPv4SocketProtocol::init_server(INet4Address const &
         throw SystemException(errno);
 }
 
-prefix_ std::auto_ptr<satcom::lib::SocketProtocol> satcom::lib::TCPv4SocketProtocol::clone()
+prefix_ std::auto_ptr<senf::SocketProtocol> senf::TCPv4SocketProtocol::clone()
     const
 {
     return std::auto_ptr<SocketProtocol>(new TCPv4SocketProtocol());
 }
 
+///////////////////////////////////////////////////////////////////////////
+// senf::TCPv6SocketProtocol::
+
+prefix_ void senf::TCPv6SocketProtocol::init_client()
+    const
+{
+    int sock = ::socket(PF_INET6,SOCK_STREAM,0);
+    if (sock < 0)
+        throw SystemException(errno);
+    body().fd(sock);
+}
+
+prefix_ void
+senf::TCPv6SocketProtocol::init_client(INet6SocketAddress const & address)
+    const
+{
+    init_client();
+    connect(address);
+}
+
+prefix_ void senf::TCPv6SocketProtocol::init_server()
+    const
+{
+    int sock = ::socket(PF_INET6,SOCK_STREAM,0);
+    if (sock < 0)
+        throw SystemException(errno);
+    body().fd(sock);
+}
+
+prefix_ void senf::TCPv6SocketProtocol::init_server(INet6SocketAddress const & address,
+                                                    unsigned backlog)
+    const
+{
+    init_server();
+    bind(address);
+    reuseaddr(true);
+    if (::listen(body().fd(),backlog) < 0)
+        throw SystemException(errno);
+}
+
+prefix_ std::auto_ptr<senf::SocketProtocol> senf::TCPv6SocketProtocol::clone()
+    const
+{
+    return std::auto_ptr<SocketProtocol>(new TCPv6SocketProtocol());
+}
+
 ///////////////////////////////cc.e////////////////////////////////////////
 #undef prefix_
 //#include "TCPSocketHandle.mpp"
@@ -86,5 +137,8 @@ prefix_ std::auto_ptr<satcom::lib::SocketProtocol> satcom::lib::TCPv4SocketProto
 \f
 // Local Variables:
 // mode: c++
-// c-file-style: "satcom"
+// fill-column: 100
+// c-file-style: "senf"
+// indent-tabs-mode: nil
+// ispell-local-dictionary: "american"
 // End: