Skip to content
Snippets Groups Projects
ServicePool.hpp 1.39 KiB
Newer Older
  • Learn to ignore specific revisions
  • #ifndef ECSS_SERVICES_SERVICEPOOL_HPP
    #define ECSS_SERVICES_SERVICEPOOL_HPP
    
    #include "Services/RequestVerificationService.hpp"
    #include "Services/TimeManagementService.hpp"
    #include "Services/EventReportService.hpp"
    #include "Services/EventActionService.hpp"
    #include "Services/ParameterService.hpp"
    #include "Services/TestService.hpp"
    #include "Services/MemoryManagementService.hpp"
    
    /**
     * Defines a class that contains instances of all Services.
     *
     * All Services should be stored here and should not be instantiated in a different way.
     *
     * @todo Find a way to disable services which are not used
     */
    class ServicePool {
    public:
    	RequestVerificationService requestVerification;
    	EventReportService eventReport;
    	MemoryManagementService memoryManagement;
    	TimeManagementService timeManagement;
    	EventActionService eventAction;
    	TestService testService;
    	ParameterService parameterManagement;
    
    	/**
    	 * The default ServicePool constructor
    	 */
    	ServicePool() = default;
    
    	/**
    	 * Reset all the services and their contents/properties to the original values
    	 *
    	 * @note This performs the reset in-place, i.e. no new memory is allocated. As such, all
    	 * Services already stored as values will point to the "new" Services after a reset.
    	 */
    	void reset();
    };
    
    /**
     * A global variable that defines the basic pool where services can be fetched from
     */
    extern ServicePool Services;
    
    
    #endif //ECSS_SERVICES_SERVICEPOOL_HPP