gdata
Loading...
Searching...
No Matches
gFrameDataCollection.h
Go to the documentation of this file.
1#pragma once
2
10#include "gFrameHeader.h"
11#include "gIntegralPayload.h"
12#include "gdataConventions.h"
13#include <vector>
14
16public:
22 GFrameDataCollection(GFrameHeader* header, std::shared_ptr<GLogger> logger)
23 : log(logger), gheader(header) {
24 log->debug(CONSTRUCTOR, "GFrameDataCollection");
25 integralPayloads = new std::vector<GIntegralPayload*>();
26 }
27
32 log->debug(DESTRUCTOR, "GFrameDataCollection");
33 delete gheader;
34 for (auto* payload : *integralPayloads) { delete payload; }
35 delete integralPayloads;
36 }
37
38public:
47 void addIntegralPayload(std::vector<int> payload) const {
48 if (payload.size() == 5) {
49 int crate = payload[0];
50 int slot = payload[1];
51 int channel = payload[2];
52 int charge = payload[3];
53 int time = payload[4];
54
55 // Use 'log' as the logger for GIntegralPayload.
56 auto gpayload = new GIntegralPayload(crate, slot, channel, charge, time, log);
57 integralPayloads->push_back(gpayload);
58 log->debug(NORMAL, " adding integral payload for crate ", crate, " slot ", slot, " channel ", channel,
59 " charge ", charge, " time ", time);
60 }
61 else { log->error(ERR_WRONGPAYLOAD, "payload size is not 5 but ", payload.size()); }
62 }
63
64 // Placeholder: Add event-specific data.
65 void addEvent(int evn);
66
67 // Placeholder: Determine if the frame should be written.
68 [[nodiscard]] bool shouldWriteFrame() const;
69
74 [[nodiscard]] inline const GFrameHeader* getHeader() const { return gheader; }
75
80 [[nodiscard]] inline const std::vector<GIntegralPayload*>* getIntegralPayload() const { return integralPayloads; }
81
86 [[nodiscard]] inline long int getFrameID() const { return gheader->getFrameID(); }
87
88private:
89 std::shared_ptr<GLogger> log;
90 GFrameHeader* gheader = nullptr;
91 std::vector<GIntegralPayload*>* integralPayloads;
92};
93
94
~GFrameDataCollection()
Destructor for GFrameDataCollection.
const GFrameHeader * getHeader() const
Gets the frame header.
bool shouldWriteFrame() const
void addIntegralPayload(std::vector< int > payload) const
Adds an integral payload.
long int getFrameID() const
Gets the frame ID.
const std::vector< GIntegralPayload * > * getIntegralPayload() const
Gets the integral payloads.
GFrameDataCollection(GFrameHeader *header, std::shared_ptr< GLogger > logger)
Constructs a GFrameDataCollection.
void addEvent(int evn)
Defines constants and exit codes for the GData library.
constexpr int ERR_WRONGPAYLOAD
Exit code when a payload is of the wrong size.