Utils: Revamp documentation overview and add some missing docs
[senf.git] / Socket / Protocols / UN / UNAddressing.cc
1 // Copyright (C) 2007 
2 // Fraunhofer Institut fuer offene Kommunikationssysteme (FOKUS)
3 // Kompetenzzentrum NETwork research (NET)
4 //     David Wagner <david.wagner@fokus.fraunhofer.de>
5 //
6 // This program is free software; you can redistribute it and/or modify
7 // it under the terms of the GNU General Public License as published by
8 // the Free Software Foundation; either version 2 of the License, or
9 // (at your option) any later version.
10 //
11 // This program is distributed in the hope that it will be useful,
12 // but WITHOUT ANY WARRANTY; without even the implied warranty of
13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14 // GNU General Public License for more details.
15 //
16 // You should have received a copy of the GNU General Public License
17 // along with this program; if not, write to the
18 // Free Software Foundation, Inc.,
19 // 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
20
21 /** \file
22     \brief UNAddressing non-inline non-template implementation */
23
24 #include "UNAddressing.hh"
25 //#include "UNAddressing.ih"
26
27 // Custom includes
28 #include <stdio.h>
29 #include <boost/operators.hpp>
30 #include <boost/filesystem/path.hpp>
31
32 #define prefix_
33 ///////////////////////////////cc.p////////////////////////////////////////
34 prefix_ senf::UNSocketAddress::UNSocketAddress(boost::filesystem::path p)
35 {
36     chdir(p.branch_path().string().c_str());
37 //Check if the unix domain socket already exists...
38     if(!remove(p.leaf().c_str()))
39         printf("File already existed and therefore was deleted!\n");
40     else
41         printf("File not found, will be created.\n");
42     fflush(stdout);
43
44     sockAddr.sun_family = AF_UNIX; 
45     strcpy(sockAddr.sun_path, p.string().c_str());
46 }
47
48     prefix_ senf::UNSocketAddress fromString(std::string s)
49 {
50     return senf::UNSocketAddress::UNSocketAddress(boost::filesystem::path(s));
51 }
52
53     prefix_ senf::UNSocketAddress fromPath(boost::filesystem::path p)
54 {
55     return senf::UNSocketAddress::UNSocketAddress(p);
56 }
57     prefix_ std::string senf::UNSocketAddress::path()
58         const
59 {
60     return std::string(sockAddr.sun_path);
61 }
62
63 prefix_ sockaddr_un senf::UNSocketAddress::sockaddr()
64 {
65     struct sockaddr_un out; 
66     out.sun_family = sockAddr.sun_family;
67     strcpy(out.sun_path, sockAddr.sun_path);
68     return out; 
69 }
70
71 prefix_ sockaddr * senf::UNSocketAddress::sockaddr_p()
72 {
73     return reinterpret_cast <struct sockaddr  *> (&sockAddr); 
74 }
75
76
77 prefix_ sockaddr const  * senf::UNSocketAddress::sockaddr_p()
78     const
79 {
80     return reinterpret_cast <struct sockaddr const  *> (&sockAddr); 
81 }
82
83 prefix_ unsigned senf::UNSocketAddress::sockaddr_len()
84 {
85     return sizeof(sockAddr);
86 }
87
88 prefix_ std::ostream & operator<<(std::ostream & os, senf::UNSocketAddress::UNSocketAddress const & addr){
89     os << addr.path();
90     return os;
91 }
92
93
94 ///////////////////////////////cc.e////////////////////////////////////////
95 #undef prefix_
96 //#include "UNAddressing.mpp"
97
98 \f
99 // Local Variables:
100 // mode: c++
101 // fill-column: 100
102 // comment-column: 40
103 // c-file-style: "senf"
104 // indent-tabs-mode: nil
105 // ispell-local-dictionary: "american"
106 // compile-command: "scons -u test"
107 // End: