* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
***************************************************************************/
+#include <boost/archive/binary_oarchive.hpp>
+#include <boost/archive/binary_iarchive.hpp>
+#include <boost/archive/xml_oarchive.hpp>
+#include <boost/archive/xml_iarchive.hpp>
+
#include "container.hxx"
+#include <boost/serialization/export.hpp>
+
BOOST_CLASS_EXPORT(libt2n::result_container)
BOOST_CLASS_EXPORT(libt2n::command_container)
+
+namespace libt2n
+{
+
+template<class Archive>
+void result_container::serialize(Archive & ar, const unsigned int version)
+{
+ // When the class Archive corresponds to an output archive, the
+ // & operator is defined similar to <<. Likewise, when the class Archive
+ // is a type of input archive the & operator is defined similar to >>.
+
+ ar & BOOST_SERIALIZATION_NVP(result_type);
+ ar & BOOST_SERIALIZATION_NVP(res);
+ ar & BOOST_SERIALIZATION_NVP(ex);
+}
+
+/// deletes the carried result or exception objects
+result_container::~result_container()
+{
+ if (res)
+ delete res;
+ if (ex)
+ delete ex;
+}
+
+/** @brief returns the result or throw the carried exception.
+ ATTENTION: the result object is deleted in the destructor
+*/
+result* result_container::get_result(void)
+{
+ if (result_type==exception)
+ ex->do_throw();
+ return res;
+}
+
+template<class Archive>
+void command_container::serialize(Archive & ar, const unsigned int version)
+{
+ ar & BOOST_SERIALIZATION_NVP(cmd);
+}
+
+/// deletes the carried command
+command_container::~command_container()
+{
+ if (cmd)
+ delete cmd;
+}
+
+} // namespace libt2n