Packets: Fix VariantParser invalid parser access bug
[senf.git] / Socket / Protocols / AddressExceptions.hh
index 51338ca..ea020de 100644 (file)
 /** \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 + "\")") {}
+    };
 
 }