Today's the day. Renamed platform to framework.
This commit is contained in:
67
objectmanager/ObjectManager.h
Normal file
67
objectmanager/ObjectManager.h
Normal file
@ -0,0 +1,67 @@
|
||||
/**
|
||||
* @file ObjectManager.h
|
||||
* @brief This file contains the implementation of the ObjectManager class
|
||||
* @date 18.09.2012
|
||||
* @author Bastian Baetz
|
||||
*/
|
||||
|
||||
#ifndef OBJECTMANAGER_H_
|
||||
#define OBJECTMANAGER_H_
|
||||
|
||||
#include <framework/objectmanager/ObjectManagerIF.h>
|
||||
#include <framework/objectmanager/SystemObjectIF.h>
|
||||
#include <map>
|
||||
|
||||
/**
|
||||
* @brief This class implements a global object manager.
|
||||
* @details This manager handles a list of available objects with system-wide
|
||||
* relevance, such as device handlers, and TM/TC services. Objects can
|
||||
* be inserted, removed and retrieved from the list. In addition, the
|
||||
* class holds a so-called factory, that creates and inserts new
|
||||
* objects if they are not already in the list. This feature automates
|
||||
* most of the system initialization.
|
||||
* As the system is static after initialization, no new objects are
|
||||
* created or inserted into the list after startup.
|
||||
* \ingroup system_objects
|
||||
*/
|
||||
class ObjectManager : public ObjectManagerIF {
|
||||
private:
|
||||
//comparison?
|
||||
/**
|
||||
* \brief This is the map of all initialized objects in the manager.
|
||||
* \details Objects in the List must inherit the SystemObjectIF.
|
||||
*/
|
||||
std::map<object_id_t, SystemObjectIF*> objectList;
|
||||
protected:
|
||||
SystemObjectIF* getSystemObject( object_id_t id );
|
||||
/**
|
||||
* @brief This attribute is initialized with the factory function
|
||||
* that creates new objects.
|
||||
* @details The function is called if an object was requested with
|
||||
* getSystemObject, but not found in objectList.
|
||||
* @param The id of the object to be created.
|
||||
* @return Returns a pointer to the newly created object or NULL.
|
||||
*/
|
||||
void (*produceObjects)();
|
||||
public:
|
||||
/**
|
||||
* @brief Apart from setting the producer function, nothing special
|
||||
* happens in the constructor.
|
||||
* @param setProducer A pointer to a factory function.
|
||||
*/
|
||||
ObjectManager( void (*produce)() );
|
||||
ObjectManager();
|
||||
/**
|
||||
* @brief In the class's destructor, all objects in the list are deleted.
|
||||
*/
|
||||
//TODO: Check, if deleting works!
|
||||
virtual ~ObjectManager( void );
|
||||
ReturnValue_t insert( object_id_t id, SystemObjectIF* object );
|
||||
ReturnValue_t remove( object_id_t id );
|
||||
void initialize();
|
||||
void printList();
|
||||
};
|
||||
|
||||
|
||||
|
||||
#endif /* OBJECTMANAGER_H_ */
|
Reference in New Issue
Block a user