Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • bias/daqs/base-daq
1 result
Show changes
Commits on Source (12)
#ifndef BASEDAQ_H_
#define BASEDAQ_H_
#include <Base_Monitor.h>
#include <Base_Protocol.h>
#include <Base_Archiver.h>
#include <Base_Provider.h>
#include <Base_Packet.h>
namespace inaf::oasbo::DAQ{
// FORWARD DECLARE
namespace inaf::oasbo::DAQ_observers {
class BaseDAQ_Observer;
}
namespace inaf::oasbo::DAQ {
class BaseDAQ {
public:
enum Status {
STOP = -1,
READY = 0,
IDLE = 1,
RUN = 2
STOP = -1, READY = 0, IDLE = 1, RUN = 2
};
protected:
......@@ -25,34 +27,76 @@ protected:
ConnectionProtocols::BaseProtocol *socket;
Archivers::BaseArchiver *archiver;
Providers::BaseProvider *provider;
Monitors::BaseMonitor *monitor;
PacketMonitors::BasePacketMonitor *monitor;
PacketLib::BasePacket *packet;
std::vector<inaf::oasbo::DAQ_observers::BaseDAQ_Observer*> observers;
public:
void setProtocol(ConnectionProtocols::BaseProtocol &socket){this->socket = &socket;}
void setArchiver(Archivers::BaseArchiver &archiver){this->archiver = &archiver;}
void setProvider(Providers::BaseProvider &provider){this->provider = &provider;}
void setMonitor(Monitors::BaseMonitor &monitor){this->monitor = &monitor;}
void setPacket(PacketLib::BasePacket &packet){this->packet = &packet;}
void setCurrentState(Status currentState){this->currentState = currentState;}
void setNextState(Status nextState){this->nextState = nextState;}
void setChangeStateFlag(bool flag){this->changeStateFlag = flag;}
void setProtocol(ConnectionProtocols::BaseProtocol &socket) {
this->socket = &socket;
}
void setArchiver(Archivers::BaseArchiver &archiver) {
this->archiver = &archiver;
}
void setProvider(Providers::BaseProvider &provider) {
this->provider = &provider;
}
void setMonitor(PacketMonitors::BasePacketMonitor &monitor) {
this->monitor = &monitor;
}
void setPacket(PacketLib::BasePacket &packet) {
this->packet = &packet;
}
void setCurrentState(Status currentState) {
this->currentState = currentState;
}
void setNextState(Status nextState) {
this->nextState = nextState;
}
void setChangeStateFlag(bool flag) {
this->changeStateFlag = flag;
}
void registerObserver(inaf::oasbo::DAQ_observers::BaseDAQ_Observer *observer) {
observers.push_back(observer);
}
void removeObserver(inaf::oasbo::DAQ_observers::BaseDAQ_Observer *observer) {
observers.erase(
std::remove(observers.begin(), observers.end(), observer),
observers.end());
}
ConnectionProtocols::BaseProtocol * getSocketPtr(){return this->socket;}
Archivers::BaseArchiver *getArchiverPtr(){return this->archiver;}
Providers::BaseProvider * getProviderPtr(){return this->provider;}
Monitors::BaseMonitor * getMonitorPtr(){return this->monitor;}
PacketLib::BasePacket * getPacketPrt(){return this->packet;}
Status getCurrentState(){return this->currentState;}
Status getNextState(){return this->nextState;}
int getChangeStateFlag(){return this->changeStateFlag;}
ConnectionProtocols::BaseProtocol* getSocketPtr() {
return this->socket;
}
Archivers::BaseArchiver* getArchiverPtr() {
return this->archiver;
}
Providers::BaseProvider* getProviderPtr() {
return this->provider;
}
PacketMonitors::BasePacketMonitor* getMonitorPtr() {
return this->monitor;
}
PacketLib::BasePacket* getPacketPrt() {
return this->packet;
}
Status getCurrentState() {
return this->currentState;
}
Status getNextState() {
return this->nextState;
}
int getChangeStateFlag() {
return this->changeStateFlag;
}
virtual void init() = 0;
virtual void start(Status initialState) = 0;
virtual void start() = 0;
virtual void stop() = 0;
virtual void switchState(const Status) = 0;
virtual int deliverPacket() = 0;
virtual ~BaseDAQ(){
virtual ~BaseDAQ() {
delete socket;
delete provider;
delete archiver;
......
/*
* Base_DAQ_Observer.h
*
* Created on: Apr 5, 2023
* Author: valerio
*/
#pragma once
#include <Base_DAQ.h>
namespace inaf::oasbo::DAQ_observers{
class BaseDAQ_Observer{
protected:
inaf::oasbo::DAQ::BaseDAQ * dataAcquisition;
public:
BaseDAQ_Observer(inaf::oasbo::DAQ::BaseDAQ * dataAcquisition) {
this->dataAcquisition = dataAcquisition;
this->dataAcquisition->registerObserver(this);
}
virtual ~BaseDAQ_Observer() {
this->dataAcquisition->removeObserver(this);
}
virtual void updatePacketStats() = 0;
virtual void updateArchiverStats() = 0;
virtual void updateProviderStats() = 0;
virtual void updateReceiverStats() = 0;
};
}
......@@ -5,20 +5,33 @@
*
*/
#ifndef BASEMONITOR_H_
#define BASEMONITOR_H_
#pragma once
#include <string>
#include <Base_Packet.h>
#include <map>
namespace inaf::oasbo::Monitors{
namespace inaf::oasbo::PacketMonitors{
class BaseMonitor{
class BasePacketMonitor{
protected:
std::map<std::string, std::string> stats;
public:
virtual void monit(PacketLib::BasePacket &) = 0;
virtual void printStats()=0;
virtual ~BaseMonitor() = default;
virtual void reset() = 0;
virtual std::map<std::string, std::string> getStatsMap() const { return stats;}
std::optional<std::string> getStat(std::string stat) const {
try {
return this->stats.at(stat);
} catch (const std::out_of_range &) {
std::cerr << "No stat with name " << stat << std::endl;
return std::nullopt;
}
}
virtual ~BasePacketMonitor() = default;
};
}
#endif /* BASEWRITER_H_ */