Move sourcecode into 'senf/' directory
[senf.git] / Socket / SocketHandle.cti
diff --git a/Socket/SocketHandle.cti b/Socket/SocketHandle.cti
deleted file mode 100644 (file)
index bc3f7be..0000000
+++ /dev/null
@@ -1,238 +0,0 @@
-// $Id$
-//
-// Copyright (C) 2006
-// 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
-// the Free Software Foundation; either version 2 of the License, or
-// (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the
-// Free Software Foundation, Inc.,
-// 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
-
-/** \file
-    \brief SocketHandle inline template implementation
- */
-
-#include "SocketHandle.ih"
-
-// Custom includes
-#include <typeinfo>
-#include "../Utils/senfassert.hh"
-#include "../Utils/TypeInfo.hh"
-
-#define prefix_ inline
-///////////////////////////////cti.p///////////////////////////////////////
-
-///////////////////////////////////////////////////////////////////////////
-// senf::SocketHandle<SPolicy>
-
-template <class SPolicy>
-prefix_ senf::SocketHandle<SPolicy>::SocketHandle()
-{}
-
-template <class SPolicy>
-template <class OtherPolicy>
-prefix_ senf::SocketHandle<SPolicy>::SocketHandle(SocketHandle<OtherPolicy> other,
-                                                              typename IsCompatible<OtherPolicy>::type *)
-    : FileHandle(other)
-{}
-
-template <class SPolicy>
-template <class OtherPolicy>
-prefix_ typename senf::SocketHandle<SPolicy>::template IsCompatible<OtherPolicy>::type const &
-senf::SocketHandle<SPolicy>::operator=(SocketHandle<OtherPolicy> other)
-{
-    assign(other);
-    return *this;
-}
-
-template <class SPolicy>
-prefix_
-senf::SocketHandle<SPolicy>::SocketHandle(std::auto_ptr<SocketBody> body)
-    : FileHandle(std::auto_ptr<FileBody>(body.release()))
-{}
-
-template <class SPolicy>
-prefix_ senf::SocketHandle<SPolicy>::SocketHandle(FileHandle other, bool isChecked)
-    : FileHandle(other)
-{
-    SENF_ASSERT( isChecked );
-    SENF_ASSERT( ! valid() || dynamic_cast<SocketBody *>(&FileHandle::body()) );
-}
-
-template <class SPolicy>
-prefix_ senf::SocketBody & senf::SocketHandle<SPolicy>::body()
-{
-    SENF_ASSERT( dynamic_cast<SocketBody *>(&FileHandle::body()) );
-    return static_cast<SocketBody &>(FileHandle::body());
-}
-
-template <class SPolicy>
-prefix_ senf::SocketBody const & senf::SocketHandle<SPolicy>::body()
-    const
-{
-    SENF_ASSERT( dynamic_cast<SocketBody const *>(&FileHandle::body()) );
-    return static_cast<SocketBody const &>(FileHandle::body());
-}
-
-template <class SPolicy>
-prefix_ senf::SocketProtocol & senf::SocketHandle<SPolicy>::protocol()
-    const
-{
-    return body().protocol();
-}
-
-template <class SPolicy>
-prefix_ void senf::SocketHandle<SPolicy>::assign(FileHandle other)
-{
-    FileHandle::operator=(other);
-}
-
-template <class SPolicy>
-prefix_ senf::SocketHandle<SPolicy>
-senf::SocketHandle<SPolicy>::cast_static(FileHandle handle)
-{
-    return SocketHandle(handle,true);
-}
-
-template <class SPolicy>
-prefix_ senf::SocketHandle<SPolicy>
-senf::SocketHandle<SPolicy>::cast_dynamic(FileHandle handle)
-{
-    // throws bad_cast if the body is not a SocketBody
-    SocketBody & body (dynamic_cast<SocketBody&>(FileHandle::body(handle)));
-    // throws bad_cast if the policy is not compatible (already wrapped ...)
-    SPolicy::checkBaseOf(body.protocol().policy());
-    return cast_static(handle);
-}
-
-template <class Target, class Source>
-prefix_ Target senf::static_socket_cast(Source handle)
-{
-    BOOST_STATIC_ASSERT((
-        boost::is_convertible<Source*,FileHandle*>::value &&
-        boost::is_convertible<Target*,FileHandle*>::value &&
-        ( boost::is_convertible<Source,Target>::value ||
-          boost::is_convertible<Target,Source>::value ) ));
-    SENF_ASSERT( check_socket_cast<Target>(handle) );
-    return Target::cast_static(handle);
-}
-
-template <class Target, class Source>
-prefix_ Target senf::dynamic_socket_cast(Source handle)
-{
-//     BOOST_STATIC_ASSERT((
-//         boost::is_convertible<Source*,FileHandle*>::value &&
-//         boost::is_convertible<Target*,FileHandle*>::value &&
-//         ( boost::is_convertible<Source,Target>::value ||
-//           boost::is_convertible<Target,Source>::value ) ));
-    try {
-        return Target::cast_dynamic(handle);
-    }
-    SENF_WRAP_EXC(std::bad_cast)
-}
-
-template <class Target, class Source>
-prefix_ bool senf::check_socket_cast(Source handle)
-{
-//     BOOST_STATIC_ASSERT((
-//         boost::is_convertible<Source*,FileHandle*>::value &&
-//         boost::is_convertible<Target*,FileHandle*>::value &&
-//         ( boost::is_convertible<Source,Target>::value ||
-//           boost::is_convertible<Target,Source>::value ) ));
-    // we don't have a non-throwing variant of cast_dynamic
-    // for two reasons:
-    // a) since the handle is passed back by value, we cannot return
-    //    something like a null handle
-    // b) it is simpler to implement cast_dynamic throwig bad_cast on
-    //    failure than implementing cast_check
-    try {
-        Target::cast_dynamic(handle);
-    }
-    catch (std::bad_cast const &) {
-        return false;
-    }
-    return true;
-}
-
-template <class SPolicy>
-prefix_ void senf::SocketHandle<SPolicy>::state(SocketStateMap & map, unsigned lod)
-{
-    // We use typeid here even though the type of *this is static
-    // (SocketHandle is not polymorphic and has no vtable). This will
-    // automatically include the SocketPolicy template parameter in
-    // the type name and therefore show the \e static policy of the
-    // socket handle.
-    map["handle"] << prettyName(typeid(*this));
-    if (valid()) {
-        map["valid"] << "true";
-        body().state(map,lod);
-    } else
-        map["valid"] << "false";
-}
-
-template <class SPolicy>
-prefix_ std::string senf::SocketHandle<SPolicy>::dumpState(unsigned lod)
-{
-    SocketStateMap map;
-    state(map,lod);
-    return detail::dumpState(map);
-}
-
-template <class SPolicy>
-template <class Facet>
-prefix_ Facet & senf::SocketHandle<SPolicy>::facet()
-
-{
-    try {
-        return dynamic_cast<Facet &>(protocol());
-    }
-    SENF_WRAP_EXC(std::bad_cast)
-}
-
-///////////////////////////////////////////////////////////////////////////
-// senf::ProtocolSocketBody<SProtocol>
-
-template <class SProtocol>
-prefix_ senf::ProtocolSocketBody<SProtocol>::ProtocolSocketBody(bool isServer)
-    : SocketBody(isServer)
-{}
-
-template <class SProtocol>
-prefix_ senf::ProtocolSocketBody<SProtocol>::ProtocolSocketBody(bool isServer, int fd)
-    : SocketBody(isServer, fd)
-{}
-
-///////////////////////////////////////////////////////////////////////////
-
-template <class SPolicy>
-prefix_ std::ostream & senf::operator<<(std::ostream & os, SocketHandle<SPolicy> handle)
-{
-    os << handle.dumpState();
-    return os;
-}
-
-///////////////////////////////cti.e///////////////////////////////////////
-#undef prefix_
-
-\f
-// Local Variables:
-// mode: c++
-// fill-column: 100
-// c-file-style: "senf"
-// indent-tabs-mode: nil
-// ispell-local-dictionary: "american"
-// compile-command: "scons -u test"
-// comment-column: 40
-// End: