/** \file
\brief AddressExceptions public header */
-#ifndef HH_AddressExceptions_
-#define HH_AddressExceptions_ 1
+#ifndef HH_SENF_Socket_Protocols_AddressExceptions_
+#define HH_SENF_Socket_Protocols_AddressExceptions_ 1
// Custom includes
+#include "../Utils/Exception.hh"
//#include "AddressExceptions.mpp"
///////////////////////////////hh.p////////////////////////////////////////
namespace senf {
- /** \brief Base-class for INet4Address exceptions */
- struct AddressException : public std::exception {};
+ /** \brief Base-class for Address exceptions */
+ struct AddressException : public senf::Exception
+ {
+ protected:
+ AddressException(std::string const & msg)
+ : senf::Exception(msg) {}
+ };
- /** \brief Invalid INet4 address syntax */
+ /** \brief Invalid address syntax */
struct AddressSyntaxException : public AddressException
- { virtual char const * what() const throw()
- { return "invalid INet4 address syntax"; } };
+ {
+ AddressSyntaxException() : AddressException("invalid address syntax") {}
+ AddressSyntaxException(const std::string &addr)
+ : AddressException("Invalid address syntax (\"" + addr + "\")") {}
+ };
/** \brief Resolver failure */
struct UnknownHostnameException : public AddressException
- { virtual char const * what() const throw()
- { return "failed to resolve INet4 hostname"; } };
+ {
+ UnknownHostnameException() : AddressException("failed to resolve hostname") {}
+ UnknownHostnameException(const std::string &hostname)
+ : AddressException("Failed to resolve hostname (\"" + hostname + "\")") {}
+ };
}