X-Git-Url: http://developer.intra2net.com/git/?p=libt2n;a=blobdiff_plain;f=src%2Ft2n_exception.hxx;h=a494c8612af742e83ffbb15bf32427f9c284f3b7;hp=2be0fc5979d1b80dee06d4ff5b191f3666018599;hb=91730468439e21dcf8d275d0f70d803c20ccaa7c;hpb=59adb9e24e4ac66b2623742c3b9c81a1c20ff9f0 diff --git a/src/t2n_exception.hxx b/src/t2n_exception.hxx index 2be0fc5..a494c86 100644 --- a/src/t2n_exception.hxx +++ b/src/t2n_exception.hxx @@ -23,12 +23,11 @@ #include #include -#include -// serialization for std::exception namespace boost { namespace serialization { +// make std::exception serializable template void serialize(Archive & ar, std::exception & g, const unsigned int version) { @@ -39,11 +38,7 @@ void serialize(Archive & ar, std::exception & g, const unsigned int version) namespace libt2n { - -/** - generic libt2n exception -*/ -// a generic exception that can be handeled with libt2n +/// a generic exception that can be handeled with libt2n class t2n_exception : public std::exception { private: @@ -51,11 +46,7 @@ class t2n_exception : public std::exception friend class boost::serialization::access; template - 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) @@ -76,18 +67,14 @@ class t2n_exception : public std::exception virtual void do_throw() { throw *this; } }; -BOOST_CLASS_EXPORT(t2n_exception) -// a (unspecified) problem with libt2n communication +/// a (unspecified) problem with libt2n communication class t2n_communication_error : public t2n_exception { private: friend class boost::serialization::access; template - 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) @@ -103,18 +90,14 @@ class t2n_communication_error : public t2n_exception void do_throw() { throw *this; } }; -BOOST_CLASS_EXPORT(t2n_communication_error) -// can't connect to libt2n server +/// can't connect to libt2n server class t2n_connect_error : public t2n_communication_error { private: friend class boost::serialization::access; template - 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,18 +113,14 @@ class t2n_connect_error : public t2n_communication_error void do_throw() { throw *this; } }; -BOOST_CLASS_EXPORT(t2n_connect_error) -// error establishing a socket on the server (only thrown on the server-side) +/// error establishing a socket on the server (only thrown on the server-side) class t2n_server_error : public t2n_communication_error { private: friend class boost::serialization::access; template - 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) @@ -157,18 +136,14 @@ class t2n_server_error : public t2n_communication_error void do_throw() { throw *this; } }; -BOOST_CLASS_EXPORT(t2n_server_error) -// error transmitting or receiving libt2n messages +/// error transmitting or receiving libt2n messages class t2n_transfer_error : public t2n_communication_error { private: friend class boost::serialization::access; template - 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) @@ -184,18 +159,14 @@ class t2n_transfer_error : public t2n_communication_error void do_throw() { throw *this; } }; -BOOST_CLASS_EXPORT(t2n_transfer_error) -// tried to talk to an incompatible libt2n version +/// tried to talk to an incompatible libt2n version class t2n_version_mismatch : public t2n_communication_error { private: friend class boost::serialization::access; template - 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) @@ -211,18 +182,14 @@ class t2n_version_mismatch : public t2n_communication_error void do_throw() { throw *this; } }; -BOOST_CLASS_EXPORT(t2n_version_mismatch) -// illegal libt2n command received +/// illegal libt2n command received class t2n_command_error : public t2n_exception { private: friend class boost::serialization::access; template - 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) @@ -238,18 +205,37 @@ class t2n_command_error : public t2n_exception void do_throw() { throw *this; } }; -BOOST_CLASS_EXPORT(t2n_command_error) -// error serializing or deserializing a libt2n command packet +/// illegal libt2n option set +class t2n_parameter_error : public t2n_exception +{ + private: + friend class boost::serialization::access; + template + 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 - 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) @@ -265,19 +251,16 @@ class t2n_serialization_error : public t2n_exception void do_throw() { throw *this; } }; -BOOST_CLASS_EXPORT(t2n_serialization_error) -// a runtime error within the remote function -// derive your own custom exceptions from this one +/** @brief a runtime error within the remote function. + derive your own custom exceptions from this one +*/ class t2n_runtime_error : public t2n_exception { private: friend class boost::serialization::access; template - 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) @@ -293,8 +276,7 @@ class t2n_runtime_error : public t2n_exception void do_throw() { throw *this; } }; -BOOST_CLASS_EXPORT(t2n_runtime_error) -} +} // namespace libt2n #endif