Newer
Older
// Fraunhofer Institut fuer offene Kommunikationssysteme (FOKUS)
// Kompetenzzentrum fuer Satelitenkommunikation (SatCom)
// Stefan Bund <stefan.bund@fokus.fraunhofer.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.
\brief SocketHandle non-inline non-template implementation
#include "SocketHandle.hh"
#include "SocketHandle.ih"
#include <sstream>
#include <sys/socket.h>
#include "../Utils/TypeInfo.hh"
//#include "SocketHandle.mpp"
#define prefix_
///////////////////////////////cc.p////////////////////////////////////////
prefix_ void senf::SocketBody::v_close()
protocol().close();
prefix_ void senf::SocketBody::v_terminate()
protocol().terminate();
prefix_ bool senf::SocketBody::v_eof()
const
{
return protocol().eof();
prefix_ void senf::SocketBody::state(SocketStateMap & map, unsigned lod)
map["file.handle"] = fd();
map["file.refcount"] = refcount();
map["socket.server"] = isServer();
map["socket.protocol"] = prettyName(typeid(protocol()));
map["socket.policy"] = prettyName(typeid(protocol().policy()));
protocol().state(map,lod);
}
///////////////////////////////////////////////////////////////////////////
// senf::detail::StateMapOrdering
bool contains(std::string::const_iterator b, std::string::const_iterator e, char c)
{
for (; b != e; ++b)
if (*b == c)
return true;
return false;
}
}
prefix_ std::string senf::detail::dumpState(SocketStateMap const & map)
{
std::stringstream s;
SocketStateMap::const_iterator i (map.begin());
SocketStateMap::const_iterator i_end (map.end());
for (; i != i_end; ++i)
s << i->first << ": " << i->second << "\n";
return s.str();
}
template <class Policy>
prefix_ std::ostream & senf::operator<<(std::ostream & os, SocketHandle<Policy> handle)
{
os << handle.dumpState();
return os;
}
///////////////////////////////cc.e////////////////////////////////////////
//#include "SocketHandle.mpp"
// indent-tabs-mode: nil
// ispell-local-dictionary: "american"
// compile-command: "scons -u test"