libt2n: (gerd) finish server callbacks
[libt2n] / src / t2n_exception.hxx
index 7191101..a494c86 100644 (file)
@@ -46,11 +46,7 @@ class t2n_exception : public std::exception
 
         friend class boost::serialization::access;
         template<class Archive>
-        void serialize(Archive & ar, const unsigned int version)
-        {
-            ar & BOOST_SERIALIZATION_BASE_OBJECT_NVP(exception);
-            ar & BOOST_SERIALIZATION_NVP(message);
-        }
+        void serialize(Archive & ar, const unsigned int version);
 
     public:
         t2n_exception(const std::string& _message)
@@ -78,10 +74,7 @@ class t2n_communication_error : public t2n_exception
     private:
         friend class boost::serialization::access;
         template<class Archive>
-        void serialize(Archive & ar, const unsigned int version)
-        {
-            ar & BOOST_SERIALIZATION_BASE_OBJECT_NVP(t2n_exception);
-        }
+        void serialize(Archive & ar, const unsigned int version);
 
     public:
         t2n_communication_error(const std::string& _message)
@@ -104,10 +97,7 @@ class t2n_connect_error : public t2n_communication_error
     private:
         friend class boost::serialization::access;
         template<class Archive>
-        void serialize(Archive & ar, const unsigned int version)
-        {
-            ar & BOOST_SERIALIZATION_BASE_OBJECT_NVP(t2n_communication_error);
-        }
+        void serialize(Archive & ar, const unsigned int version);
 
     public:
         t2n_connect_error(const std::string& _message)
@@ -130,10 +120,7 @@ class t2n_server_error : public t2n_communication_error
     private:
         friend class boost::serialization::access;
         template<class Archive>
-        void serialize(Archive & ar, const unsigned int version)
-        {
-            ar & BOOST_SERIALIZATION_BASE_OBJECT_NVP(t2n_communication_error);
-        }
+        void serialize(Archive & ar, const unsigned int version);
 
     public:
         t2n_server_error(const std::string& _message)
@@ -156,10 +143,7 @@ class t2n_transfer_error : public t2n_communication_error
     private:
         friend class boost::serialization::access;
         template<class Archive>
-        void serialize(Archive & ar, const unsigned int version)
-        {
-            ar & BOOST_SERIALIZATION_BASE_OBJECT_NVP(t2n_communication_error);
-        }
+        void serialize(Archive & ar, const unsigned int version);
 
     public:
         t2n_transfer_error(const std::string& _message)
@@ -182,10 +166,7 @@ class t2n_version_mismatch : public t2n_communication_error
     private:
         friend class boost::serialization::access;
         template<class Archive>
-        void serialize(Archive & ar, const unsigned int version)
-        {
-            ar & BOOST_SERIALIZATION_BASE_OBJECT_NVP(t2n_communication_error);
-        }
+        void serialize(Archive & ar, const unsigned int version);
 
     public:
         t2n_version_mismatch(const std::string& _message)
@@ -208,10 +189,7 @@ class t2n_command_error : public t2n_exception
     private:
         friend class boost::serialization::access;
         template<class Archive>
-        void serialize(Archive & ar, const unsigned int version)
-        {
-            ar & BOOST_SERIALIZATION_BASE_OBJECT_NVP(t2n_exception);
-        }
+        void serialize(Archive & ar, const unsigned int version);
 
     public:
         t2n_command_error(const std::string& _message)
@@ -228,16 +206,36 @@ class t2n_command_error : public t2n_exception
             { throw *this; }
 };
 
+/// illegal libt2n option set
+class t2n_parameter_error : public t2n_exception
+{
+    private:
+        friend class boost::serialization::access;
+        template<class Archive>
+        void serialize(Archive & ar, const unsigned int version);
+
+    public:
+        t2n_parameter_error(const std::string& _message)
+            : t2n_exception(_message)
+            { }
+
+        t2n_parameter_error()
+            { }
+
+        t2n_exception* clone() const
+            { return new t2n_parameter_error(*this); }
+
+        void do_throw()
+            { throw *this; }
+};
+
 /// error serializing or deserializing a libt2n command packet
 class t2n_serialization_error : public t2n_exception
 {
     private:
         friend class boost::serialization::access;
         template<class Archive>
-        void serialize(Archive & ar, const unsigned int version)
-        {
-            ar & BOOST_SERIALIZATION_BASE_OBJECT_NVP(t2n_exception);
-        }
+        void serialize(Archive & ar, const unsigned int version);
 
     public:
         t2n_serialization_error(const std::string& _message)
@@ -262,10 +260,7 @@ class t2n_runtime_error : public t2n_exception
     private:
         friend class boost::serialization::access;
         template<class Archive>
-        void serialize(Archive & ar, const unsigned int version)
-        {
-            ar & BOOST_SERIALIZATION_BASE_OBJECT_NVP(t2n_exception);
-        }
+        void serialize(Archive & ar, const unsigned int version);
 
     public:
         t2n_runtime_error(const std::string& _message)