-// Copyright (C) 2007
-// Fraunhofer Institut fuer offene Kommunikationssysteme (FOKUS)
-// Kompetenzzentrum NETwork research (NET)
-// David Wagner <david.wagner@fokus.fraunhofer.de>
+// $Id$
+//
+// Copyright (C) 2007
+// Fraunhofer Institute for Open Communication Systems (FOKUS)
+// Competence Center NETwork research (NET), St. Augustin, GERMANY
+// 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
//#include "UNAddressing.ih"
// Custom includes
-#include <stdio.h>
-#include <boost/operators.hpp>
+#include "../AddressExceptions.hh"
#define prefix_
///////////////////////////////cc.p////////////////////////////////////////
-prefix_ senf::UNSocketAddress::UNSocketAddress(std::string p)
-{
- sockAddr.sun_family = AF_UNIX;
- strcpy(sockAddr.sun_path, p.c_str());
-}
-
-prefix_ senf::UNSocketAddress fromString(std::string s) {
- return senf::UNSocketAddress::UNSocketAddress(s);
-}
-
-
-prefix_ std::string senf::UNSocketAddress::path()
- const
-{
- return std::string(sockAddr.sun_path);
-}
-
-prefix_ sockaddr_un senf::UNSocketAddress::sockaddr()
-{
- struct sockaddr_un out;
- out.sun_family = sockAddr.sun_family;
- strncpy(out.sun_path, sockAddr.sun_path, sizeof( out.sun_path));
- return out;
-}
-
-prefix_ sockaddr * senf::UNSocketAddress::sockaddr_p()
-{
- return reinterpret_cast <struct sockaddr *> (&sockAddr);
-}
-
-prefix_ sockaddr const * senf::UNSocketAddress::sockaddr_p()
- const
+prefix_ void senf::UNSocketAddress::path(std::string const & path)
{
- return reinterpret_cast <struct sockaddr const *> (&sockAddr);
+ if (path.size() > sizeof(sockaddr_un)-sizeof(short)-1)
+ throw AddressSyntaxException();
+ socklen(path.size()+sizeof(short));
+ memcpy(addr_.sun_path, path.c_str(), socklen()-sizeof(short));
+ addr_.sun_path[socklen()-sizeof(short)+1] = 0;
}
-prefix_ unsigned senf::UNSocketAddress::sockaddr_len()
- const
-{
- return sizeof(sockAddr);
-}
-
-prefix_ std::ostream & operator<<(std::ostream & os, senf::UNSocketAddress::UNSocketAddress const & addr){
- os << addr.path();
- return os;
-}
-
-
///////////////////////////////cc.e////////////////////////////////////////
#undef prefix_
//#include "UNAddressing.mpp"