Utils/Console: Console UDPServer
[senf.git] / Socket / Protocols / UN / UNAddressing.cc
index 3916d06..09ee9c7 100644 (file)
@@ -1,7 +1,9 @@
-// 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 <boost/filesystem/path.hpp>
-#include "../../../Utils/SafeBool.hh"
-//#include "UNAddressing.mpp"
+#include "../AddressExceptions.hh"
+
 #define prefix_
 ///////////////////////////////cc.p////////////////////////////////////////
-prefix_ senf::UNSocketAddress::UNSocketAddress(boost::filesystem::path 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());
-}
-
-    prefix_ senf::UNSocketAddress fromString(std::string s)
-{
-    return senf::UNSocketAddress::UNSocketAddress(boost::filesystem::path(s));
-}
-
-    prefix_ senf::UNSocketAddress fromPath(boost::filesystem::path p)
-{
-    return senf::UNSocketAddress::UNSocketAddress(p);
-}
-    prefix_ std::string senf::UNSocketAddress::path()
-        const
-{
-    return std::string(sockAddr.sun_path);
-}
 
-prefix_ sockaddr_un senf::UNSocketAddress::sockaddr()
+prefix_ void senf::UNSocketAddress::path(std::string const & path)
 {
-    struct sockaddr_un out; 
-    out.sun_family = sockAddr.sun_family;
-    strcpy(out.sun_path, sockAddr.sun_path);
-    return out; 
+    if (path.size() > sizeof(sockaddr_un)-sizeof(short)-1)
+        throw AddressSyntaxException() << "UNSocketAddress path too long: " << path;
+    socklen(path.size()+sizeof(short));
+    strncpy(addr_.sun_path, path.c_str(), socklen()-sizeof(short));
+    addr_.sun_path[socklen()-sizeof(short)+1] = 0;
 }
 
-prefix_ sockaddr * senf::UNSocketAddress::sockaddr_p()
-{
-    return reinterpret_cast <struct sockaddr  *> (&sockAddr); 
-}
-
-
-prefix_ sockaddr const  * senf::UNSocketAddress::sockaddr_p()
-    const
-{
-    return reinterpret_cast <struct sockaddr const  *> (&sockAddr); 
-}
-
-prefix_ unsigned senf::UNSocketAddress::sockaddr_len()
-{
-    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"