4 // Fraunhofer Institute for Open Communication Systems (FOKUS)
5 // Competence Center NETwork research (NET), St. Augustin, GERMANY
6 // Stefan Bund <g0dil@berlios.de>
8 // This program is free software; you can redistribute it and/or modify
9 // it under the terms of the GNU General Public License as published by
10 // the Free Software Foundation; either version 2 of the License, or
11 // (at your option) any later version.
13 // This program is distributed in the hope that it will be useful,
14 // but WITHOUT ANY WARRANTY; without even the implied warranty of
15 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 // GNU General Public License for more details.
18 // You should have received a copy of the GNU General Public License
19 // along with this program; if not, write to the
20 // Free Software Foundation, Inc.,
21 // 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
24 \brief BSDSocketAddress public header */
26 #ifndef HH_BSDSocketAddress_
27 #define HH_BSDSocketAddress_ 1
30 #include "../../Utils/safe_bool.hh"
31 #include <sys/socket.h>
34 //#include "BSDSocketAddress.mpp"
35 ///////////////////////////////hh.p////////////////////////////////////////
41 class BSDSocketAddress
42 : public senf::comparable_safe_bool<BSDSocketAddress>
46 bool operator==(BSDSocketAddress const & other) const;
47 bool operator!=(BSDSocketAddress const & other) const;
49 bool boolean_test() const;
52 ///////////////////////////////////////////////////////////////////////////
53 ///\name Generic \c sockaddr interface
56 struct sockaddr const * sockaddr_p() const;
57 socklen_t socklen() const;
58 socklen_t const * socklen_p() const;
63 BSDSocketAddress(socklen_t len, short family);
64 BSDSocketAddress(BSDSocketAddress const & other);
65 BSDSocketAddress & operator=(BSDSocketAddress const & other);
67 struct sockaddr * sockaddr_p();
68 socklen_t * socklen_p();
70 void socklen(socklen_t len);
77 template <class Target>
78 Target & sockaddr_cast(BSDSocketAddress & source);
80 template <class Target>
81 Target const & sockaddr_cast(BSDSocketAddress const & source);
83 std::ostream & operator<<(std::ostream & os, BSDSocketAddress const & addr);
87 class GenericBSDSocketAddress
88 : public BSDSocketAddress
91 ///////////////////////////////////////////////////////////////////////////
92 ///\name Structors and default members
95 GenericBSDSocketAddress();
96 GenericBSDSocketAddress(BSDSocketAddress const & other);
97 GenericBSDSocketAddress& operator=(const BSDSocketAddress & other);
99 GenericBSDSocketAddress(const GenericBSDSocketAddress& other);
100 GenericBSDSocketAddress& operator=(const GenericBSDSocketAddress& other);
103 ///////////////////////////////////////////////////////////////////////////
104 ///\name Generic \c sockaddr interface
107 struct sockaddr const * sockaddr_p() const;
108 struct sockaddr * sockaddr_p();
110 using BSDSocketAddress::socklen_p;
117 struct sockaddr_storage addr_;
122 ///////////////////////////////hh.e////////////////////////////////////////
123 #include "BSDSocketAddress.cci"
124 //#include "BSDSocketAddress.ct"
125 //#include "BSDSocketAddress.cti"
132 // comment-column: 40
133 // c-file-style: "senf"
134 // indent-tabs-mode: nil
135 // ispell-local-dictionary: "american"
136 // compile-command: "scons -u test"