// $Id$
//
// Copyright (C) 2006
-// Fraunhofer Institut fuer offene Kommunikationssysteme (FOKUS)
-// Kompetenzzentrum fuer Satelitenkommunikation (SatCom)
-// Stefan Bund <stefan.bund@fokus.fraunhofer.de>
+// Fraunhofer Institute for Open Communication Systems (FOKUS)
+// Competence Center NETwork research (NET), St. Augustin, GERMANY
+// Stefan Bund <g0dil@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
public senf::comparable_safe_bool<INet4SocketAddress>
{
public:
+ ///////////////////////////////////////////////////////////////////////////
+ ///\name Structors and default members
+ ///@{
+
INet4SocketAddress();
explicit INet4SocketAddress(std::string const & addr); ///< Set address and port
/**< This constructor expects a string of the form
initialize the host and port members. Since it uses the
INet4Address::from_string constructor, this call may
block while waiting for the resolver.
- \throws SyntaxException if the address syntax is
+ \throws AddressSyntaxException if the address syntax is
invalid
- \throws INet4Address::UnknownHostnameException if the
+ \throws UnknownHostnameException if the
address cannot be resolved. */
INet4SocketAddress(INet4Address const & addr, unsigned port);
/**< \param[in] addr IP address
\param[in] port port number */
+ explicit INet4SocketAddress(unsigned port);
+ ///< Set port, address is set to 0.0.0.0
+ /**< \param[in] port port number */
+
+ ///@}
+ ///////////////////////////////////////////////////////////////////////////
+
bool operator==(INet4SocketAddress const & other) const;
///< Check INet4SocketAddress for equality
INet4Address address() const; ///< Return address
unsigned port() const; ///< Return port number
- bool boolean_test() const; ///< \c true, if address is empty (i.e. 0.0.0.0:0)
+ bool boolean_test() const; ///< \c true, if address is not empty (i.e. 0.0.0.0:0)
void clear(); ///< Clear address/port to 0.0.0.0:0
/// @}
- struct SyntaxException : public std::exception
- { virtual char const * what() const throw()
- { return "Invalid IPv4 socket address syntax"; } };
-
private:
struct ::sockaddr_in addr_;
};
\ingroup addr_group
*/
class INet6SocketAddress
+ : public boost::equality_comparable<INet6SocketAddress>,
+ public senf::comparable_safe_bool<INet6SocketAddress>
{
public:
///////////////////////////////////////////////////////////////////////////
- // Types
-
- ///////////////////////////////////////////////////////////////////////////
///\name Structors and default members
///@{
explicit INet6SocketAddress(std::string const & addr,
INet6Address::Resolve_t resolve = INet6Address::ResolveINet6);
///< Initialize/convert from string representation
- /**< \throws SyntaxException if the address syntax is
+ /**< \throws AddressSyntaxException if the address syntax is
invalid
- \throws INet6Address::UnknownHostnameException if the
+ \throws UnknownHostnameException if the
address cannot be resolved.
\param[in] addr Address to parse
\param[in] resolve If this is
///< Initialize from address and port
INet6SocketAddress(INet6Address const & addr, unsigned port, std::string const & iface);
///< Initialize explicitly from given parameters
+ explicit INet6SocketAddress(unsigned port);
+ ///< Initialize from port and set to 'unspecified' addr
+ /**< The address is set to [::]
+ \param[in] port port number */
///@}
///////////////////////////////////////////////////////////////////////////
bool operator==(INet6SocketAddress const & other) const; ///< Check addresses for equality
- bool operator!=(INet6SocketAddress const & other) const; ///< Inverse of above
void clear(); ///< Clear socket address
std::string iface() const; ///< Get interface name
void iface(std::string const & iface); ///< Change interface
+ bool boolean_test() const; ///< \c true, if address is not empty (i.e. [::]:0)
+
///\name Generic SocketAddress interface
///@{
///@}
- struct SyntaxException : public std::exception
- { virtual char const * what() const throw()
- { return "Invalid IPv6 socket address syntax"; } };
-
protected:
private:
/** \brief Addressing policy supporting IPv4 addressing
\par Address Type:
- INet4Address
+ INet4SocketAddress
This addressing policy implements addressing using Internet V4
addresses.