#pragma once #include /** * @brief The BaseDAQ_Observer class is an abstract base class for DAQ system observers. * * This class defines the interface for observing the statistics and status of a BaseDAQ object. * Subclasses of BaseDAQ_Observer must implement the pure virtual functions defined in this class. * */ namespace inaf::oasbo::DAQ_observers{ class BaseDAQ_Observer{ protected: inaf::oasbo::DAQ::BaseDAQ *dataAcquisition; public: /** * @brief Constructs a BaseDAQ_Observer object with the specified BaseDAQ object. * * @param dataAcquisition The BaseDAQ object to observe. */ BaseDAQ_Observer(inaf::oasbo::DAQ::BaseDAQ &dataAcquisition) { this->dataAcquisition = &dataAcquisition; } /** * @brief Destroys the BaseDAQ_Observer object and removes itself from the observed BaseDAQ object. */ virtual ~BaseDAQ_Observer() { this->dataAcquisition->removeObserver(this); } /** * @brief Updates the packet statistics of the observed BaseDAQ object. */ virtual void updatePacketStats() = 0; /** * @brief Updates the archiver statistics of the observed BaseDAQ object. */ virtual void updateArchiverStats() = 0; /** * @brief Updates the provider statistics of the observed BaseDAQ object. */ virtual void updateProviderStats() = 0; /** * @brief Updates the receiver statistics of the observed BaseDAQ object. */ virtual void updateReceiverStats() = 0; /** * @brief Updates all statistics of the observed BaseDAQ object. */ virtual void updateAll() = 0; /** * @brief Starts the observation on the BaseDAQ object. */ virtual void start() = 0; /** * @brief Stops the observation on the BaseDAQ object. */ virtual void stop() = 0; }; }