X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=Socket%2FTCPSocketHandle.cc;h=1574919f6b0923d35d5cf4b1eaf7bfad62c60458;hb=9a988902090d28007578e93bffd809f6bd913155;hp=e7bb95cefbacdf18158ef522be96d3e9bd573f34;hpb=ac6a813d9d99f7add4e13aff7a4bcd314d5604a6;p=senf.git diff --git a/Socket/TCPSocketHandle.cc b/Socket/TCPSocketHandle.cc index e7bb95c..1574919 100644 --- a/Socket/TCPSocketHandle.cc +++ b/Socket/TCPSocketHandle.cc @@ -1,6 +1,6 @@ // $Id$ // -// Copyright (C) 2006 +// Copyright (C) 2006 // Fraunhofer Institut fuer offene Kommunikationssysteme (FOKUS) // Kompetenzzentrum fuer Satelitenkommunikation (SatCom) // Stefan Bund @@ -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" @@ -36,6 +38,9 @@ #define prefix_ ///////////////////////////////cc.p//////////////////////////////////////// +/////////////////////////////////////////////////////////////////////////// +// senf::TCPv4SocketProtocol + prefix_ void senf::TCPv4SocketProtocol::init_client() const { @@ -79,6 +84,52 @@ prefix_ std::auto_ptr senf::TCPv4SocketProtocol::clone() return std::auto_ptr(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::TCPv6SocketProtocol::clone() + const +{ + return std::auto_ptr(new TCPv6SocketProtocol()); +} + ///////////////////////////////cc.e//////////////////////////////////////// #undef prefix_ //#include "TCPSocketHandle.mpp" @@ -86,5 +137,8 @@ prefix_ std::auto_ptr senf::TCPv4SocketProtocol::clone() // Local Variables: // mode: c++ +// fill-column: 100 // c-file-style: "senf" +// indent-tabs-mode: nil +// ispell-local-dictionary: "american" // End: