-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathORCompoundDataProcessor.cc
122 lines (106 loc) · 3.38 KB
/
ORCompoundDataProcessor.cc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
// ORCompoundDataProcessor.cc
#include "ORCompoundDataProcessor.hh"
#include "ORLogger.hh"
#include <algorithm>
ORCompoundDataProcessor::ORCompoundDataProcessor()
{
SetComponentBreakReturnsFailure();
}
void ORCompoundDataProcessor::SetDataId()
{
for (size_t i=0; i<fDataProcessors.size(); i++) {
fDataProcessors[i]->SetDataId();
}
}
void ORCompoundDataProcessor::SetDecoderDictionary()
{
for (size_t i=0; i<fDataProcessors.size(); i++) {
fDataProcessors[i]->SetDecoderDictionary();
}
}
ORDataProcessor::EReturnCode ORCompoundDataProcessor::StartProcessing()
{
for (size_t i=0; i<fDataProcessors.size(); i++) {
EReturnCode retCode = fDataProcessors[i]->StartProcessing();
if (retCode >= kFailure) fDataProcessors[i]->KillProcessor();
if (retCode >= kBreak) return fBreakRetCode;
if (retCode >= kAlarm) return retCode;
}
return kSuccess;
}
ORDataProcessor::EReturnCode ORCompoundDataProcessor::StartRun()
{
for (size_t i=0; i<fDataProcessors.size(); i++) {
EReturnCode retCode = fDataProcessors[i]->StartRun();
if (retCode >= kFailure) fDataProcessors[i]->KillRun();
if (retCode >= kBreak) return fBreakRetCode;
if (retCode >= kAlarm) return retCode;
}
return kSuccess;
}
ORDataProcessor::EReturnCode ORCompoundDataProcessor::ProcessDataRecord(UInt_t* record)
{
if (!fDoProcess || !fDoProcessRun) return kFailure;
for (size_t i=0; i<fDataProcessors.size(); i++) {
EReturnCode retCode = fDataProcessors[i]->ProcessDataRecord(record);
if (retCode == kBreak) return fBreakRetCode;
if (retCode >= kAlarm) return retCode;
}
return kSuccess;
}
ORDataProcessor::EReturnCode ORCompoundDataProcessor::EndRun()
{
for (size_t i=0; i<fDataProcessors.size(); i++) {
EReturnCode retCode = fDataProcessors[i]->EndRun();
if (retCode >= kBreak) return fBreakRetCode;
if (retCode >= kAlarm) return retCode;
}
return kSuccess;
}
ORDataProcessor::EReturnCode ORCompoundDataProcessor::EndProcessing()
{
for (size_t i=0; i<fDataProcessors.size(); i++) {
EReturnCode retCode = fDataProcessors[i]->EndProcessing();
if (retCode >= kBreak) return fBreakRetCode;
if (retCode >= kAlarm) return retCode;
}
return kSuccess;
}
ORDataProcessor::EReturnCode ORCompoundDataProcessor::ProcessMyDataRecord(UInt_t* /*record*/)
{
ORLog(kWarning) << "ProcessMyDataRecord() should never be called..." << std::endl;
return kFailure;
}
void ORCompoundDataProcessor::SetDoProcessRun()
{
fDoProcessRun = true;
for (size_t i=0; i<fDataProcessors.size(); i++) {
fDataProcessors[i]->SetDoProcessRun();
}
}
void ORCompoundDataProcessor::SetRunContext(ORRunContext* aContext)
{
fRunContext = aContext;
for (size_t i=0; i<fDataProcessors.size(); i++) {
fDataProcessors[i]->SetRunContext(fRunContext);
}
}
void ORCompoundDataProcessor::AddProcessor(ORDataProcessor* processor)
{
if (processor == NULL) {
ORLog(kWarning) << "AddProcessor(processor): processor can't be NULL!" << std::endl;
return;
}
processor->SetRunContext(fRunContext);
fDataProcessors.push_back(processor);
}
void ORCompoundDataProcessor::RemoveProcessor(ORDataProcessor* processor)
{
std::vector<ORDataProcessor*>::iterator it =
std::find(fDataProcessors.begin(), fDataProcessors.end(), processor);
if (it != fDataProcessors.end()) {
fDataProcessors.erase(it);
} else {
ORLog(kWarning) << "Unable to remove processor, not found!" << std::endl;
}
}