Skip to content
Base_DAQ_Observer.h 2.59 KiB
Newer Older
Valerio Pastore's avatar
Valerio Pastore committed
/*
**************************************************************************
* Copyright (C) 2023 INAF
* 
* This program is free software: you can redistribute it and/or modify it 
* under the terms of the GNU Lesser General Public License as published by 
* the Free Software Foundation, either version 3 of the License
* or (at your option) any later version. This program is distributed
* in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even 
* the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
* See the GNU Lesser General Public License for more details. 
* You should have received a copy of the GNU Lesser General Public License 
* along with this program. If not, see <https://www.gnu.org/licenses/>.
* 
* Authors:
* 
* <>Valerio Pastore INAF-OAS Bologna  valerio.pastore@inaf.it
****************************************************************************
*/
Valerio Pastore's avatar
Valerio Pastore committed
#pragma once

Valerio Pastore's avatar
Valerio Pastore committed
#include <Base_DAQ.h>
Valerio Pastore's avatar
Valerio Pastore committed
/**
 * @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.
 * 
 */
Valerio Pastore's avatar
.  
Valerio Pastore committed
namespace inaf::oasbo::DAQ_observers {
Valerio Pastore's avatar
Valerio Pastore committed

Valerio Pastore's avatar
.  
Valerio Pastore committed
class BaseDAQ_Observer {
protected:
Valerio Pastore's avatar
Valerio Pastore committed
	inaf::oasbo::DAQ::BaseDAQ *dataAcquisition;
Valerio Pastore's avatar
Valerio Pastore committed

public:
Valerio Pastore's avatar
.  
Valerio Pastore committed
	/**
	 * @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;
	}
Valerio Pastore's avatar
Valerio Pastore committed

Valerio Pastore's avatar
.  
Valerio Pastore committed
	/**
	 * @brief Destroys the BaseDAQ_Observer object and removes itself from the observed BaseDAQ object.
	 */
	virtual ~BaseDAQ_Observer() {
		this->dataAcquisition->removeObserver(this);
	}
Valerio Pastore's avatar
Valerio Pastore committed

Valerio Pastore's avatar
.  
Valerio Pastore committed
	/**
	 * @brief Updates the packet statistics of the observed BaseDAQ object.
	 */
	virtual void updatePacketStats() = 0;
Valerio Pastore's avatar
Valerio Pastore committed

Valerio Pastore's avatar
.  
Valerio Pastore committed
	/**
	 * @brief Updates the archiver statistics of the observed BaseDAQ object.
	 */
	virtual void updateArchiverStats() = 0;
Valerio Pastore's avatar
Valerio Pastore committed

Valerio Pastore's avatar
.  
Valerio Pastore committed
	/**
	 * @brief Updates the provider statistics of the observed BaseDAQ object.
	 */
	virtual void updateProviderStats() = 0;
Valerio Pastore's avatar
Valerio Pastore committed

Valerio Pastore's avatar
.  
Valerio Pastore committed
	/**
	 * @brief Updates the receiver statistics of the observed BaseDAQ object.
	 */
	virtual void updateReceiverStats() = 0;
Valerio Pastore's avatar
Valerio Pastore committed

Valerio Pastore's avatar
.  
Valerio Pastore committed
	/**
	 * @brief Updates all statistics of the observed BaseDAQ object.
	 */
	virtual void updateAll() = 0;
Valerio Pastore's avatar
Valerio Pastore committed

Valerio Pastore's avatar
.  
Valerio Pastore committed
	/**
	 * @brief Starts the observation on the BaseDAQ object.
	 */
	virtual void start() = 0;
Valerio Pastore's avatar
Valerio Pastore committed

Valerio Pastore's avatar
.  
Valerio Pastore committed
	/**
	 * @brief Stops the observation on the BaseDAQ object.
	 */
	virtual void stop() = 0;
Valerio Pastore's avatar
Valerio Pastore committed

};
}