From 6beab33fc04920c0eee1116308858c87680b4c34 Mon Sep 17 00:00:00 2001 From: Bjoern Sikora Date: Fri, 7 Aug 2009 13:02:15 +0200 Subject: [PATCH] This is the simple Serviceholder class needed for de/serialization purposes. --- src/serviceholder.cpp | 61 +++++++++++++++++++++++++++++++++++++++++++++++++ src/serviceholder.h | 49 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 110 insertions(+), 0 deletions(-) create mode 100644 src/serviceholder.cpp create mode 100644 src/serviceholder.h diff --git a/src/serviceholder.cpp b/src/serviceholder.cpp new file mode 100644 index 0000000..1d4c073 --- /dev/null +++ b/src/serviceholder.cpp @@ -0,0 +1,61 @@ +/** @file + * @brief Serviceholder class implementation. This class holds Service objects in a list for serialization. + * + * + * + * @copyright Intra2net AG + * @license GPLv2 +*/ + +#include "serviceholder.h" + +using namespace std; + + +/** + * Default constructor. Invoked on serialization and deserialization. + */ +Serviceholder::Serviceholder() +{ +} + + +/** + * Default destructor. While serializing and deserializing we use boost/shared_ptr, the resources are managed correctly. + */ +Serviceholder::~Serviceholder() +{ +} + + +/** + * Serialize function needed by boost/serialization to define which members should be stored as the object state. + * In this case the STL list of Service pointers will be serialized. + * @param ar Archive + * @param version Version + */ +template +void Serviceholder::serialize(Archive & ar, const unsigned int version) +{ + ar & Hold_services; +} + + +/** + * Add Service * to internal list. + * @param service Pointer to Service object. + */ +void Serviceholder::add_service(Service * service) +{ + Hold_services.push_back(service); +} + + +/** + * Needed after deserialization to get the valid list of Service* back. + * @return The list of Service*. + */ +std::list Serviceholder::get_hold_services() +{ + return Hold_services; +} diff --git a/src/serviceholder.h b/src/serviceholder.h new file mode 100644 index 0000000..80b44b6 --- /dev/null +++ b/src/serviceholder.h @@ -0,0 +1,49 @@ +/** @file + * @brief Serviceholder class header. This class holds Service objects in a list for serialization. + * + * + * + * @copyright Intra2net AG + * @license GPLv2 +*/ + +#ifndef SERVICEHOLDER_H +#define SERVICEHOLDER_H + +#include + +#include "service.h" +#include "logger.h" + +#include +#include +#include + +typedef boost::shared_ptr LoggerPtr; + +class Serviceholder +{ +private: + friend class boost::serialization::access; + + std::list Hold_services; + + template + void serialize(Archive &, const unsigned int); + + int Test; + +public: + + Serviceholder(); + + Serviceholder(LoggerPtr); + + ~Serviceholder(); + + void add_service(Service *); + + std::list get_hold_services(); +}; + +#endif -- 1.7.1