+// $Id$
+//
// Copyright (C) 2007
-// Fraunhofer Institut fuer offene Kommunikationssysteme (FOKUS)
+// Fraunhofer Institute for Open Communication Systems (FOKUS)
// Kompetenzzentrum NETwork research (NET)
-// David Wagner <david.wagner@fokus.fraunhofer.de>
+// David Wagner <dw6@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
// Custom includes
#include <stdio.h>
#include <boost/operators.hpp>
-#include <boost/filesystem/path.hpp>
#define prefix_
///////////////////////////////cc.p////////////////////////////////////////
-prefix_ senf::UNSocketAddress::UNSocketAddress(boost::filesystem::path p)
+
+prefix_ senf::UNSocketAddress::UNSocketAddress()
+{}
+
+prefix_ senf::UNSocketAddress::UNSocketAddress(std::string p)
{
- chdir(p.branch_path().string().c_str());
-//Check if the unix domain socket already exists...
- if(!remove(p.leaf().c_str()))
- printf("File already existed and therefore was deleted!\n");
- else
- printf("File not found, will be created.\n");
- fflush(stdout);
-
- sockAddr.sun_family = AF_UNIX;
- strcpy(sockAddr.sun_path, p.string().c_str());
+ clear();
+ ::strncpy(addr_.sun_path, p.c_str(), sizeof(addr_.sun_path));
+ addr_.sun_path[sizeof(addr_.sun_path)-1] = 0;
}
- prefix_ senf::UNSocketAddress fromString(std::string s)
+prefix_ senf::UNSocketAddress fromString(std::string s)
{
- return senf::UNSocketAddress::UNSocketAddress(boost::filesystem::path(s));
+ return senf::UNSocketAddress::UNSocketAddress(s);
}
- prefix_ senf::UNSocketAddress fromPath(boost::filesystem::path p)
+prefix_ bool senf::UNSocketAddress::operator==(UNSocketAddress const & other)
+ const
{
- return senf::UNSocketAddress::UNSocketAddress(p);
+ return path() == other.path();
}
- prefix_ std::string senf::UNSocketAddress::path()
+
+prefix_ std::string senf::UNSocketAddress::path()
const
{
- return std::string(sockAddr.sun_path);
+ return std::string(addr_.sun_path);
+}
+
+prefix_ bool senf::UNSocketAddress::boolean_test()
+ const
+{
+ return addr_.sun_path[0] != 0;
}
-prefix_ sockaddr_un senf::UNSocketAddress::sockaddr()
+prefix_ void senf::UNSocketAddress::clear()
{
- struct sockaddr_un out;
- out.sun_family = sockAddr.sun_family;
- strcpy(out.sun_path, sockAddr.sun_path);
- return out;
+ ::memset(&addr_, 0, sizeof(addr_));
+ addr_.sun_family = AF_UNIX;
}
prefix_ sockaddr * senf::UNSocketAddress::sockaddr_p()
{
- return reinterpret_cast <struct sockaddr *> (&sockAddr);
+ return reinterpret_cast <struct sockaddr *> (&addr_);
}
-
prefix_ sockaddr const * senf::UNSocketAddress::sockaddr_p()
const
{
- return reinterpret_cast <struct sockaddr const *> (&sockAddr);
+ return reinterpret_cast <struct sockaddr const *> (&addr_);
}
prefix_ unsigned senf::UNSocketAddress::sockaddr_len()
+ const
{
- return sizeof(sockAddr);
+ return sizeof(addr_);
}
-prefix_ std::ostream & operator<<(std::ostream & os, senf::UNSocketAddress::UNSocketAddress const & addr){
+prefix_ std::ostream & operator<<(std::ostream & os,
+ senf::UNSocketAddress::UNSocketAddress const & addr)
+{
os << addr.path();
return os;
}
-
///////////////////////////////cc.e////////////////////////////////////////
#undef prefix_
//#include "UNAddressing.mpp"