otsdaq  v2_03_00
DataBufferConfiguration_configuration.cc
1 #include <iostream>
2 #include "otsdaq-core/ConfigurationPluginDataFormats/DataBufferTable.h"
3 #include "otsdaq-coreMacros/TablePluginMacros.h"
4 
5 using namespace ots;
6 
7 //==============================================================================
8 DataBufferConfiguration::DataBufferConfiguration(void)
9  : TableBase("DataBufferConfiguration")
10 {
12  // WARNING: the names and the order MUST match the ones in the enum //
14  // <ROOT xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
15  // xsi:noNamespaceSchemaLocation="TableInfo.xsd">
16  // <CONFIGURATION Name="DataBufferConfiguration">
17  // <VIEW Name="DATA_BUFFER_CONFIGURATION" Type="File,Database,DatabaseTest">
18  // <COLUMN Name="DataBufferID" StorageName="DATA_BUFFER_ID"
19  // DataType="VARCHAR2"/> <COLUMN Name="ProcessorID"
20  // StorageName="PROCESSOR_ID" DataType="VARCHAR2"/> <COLUMN
21  // Name="ProcessorType" StorageName="PROCESSOR_TYPE" DataType="VARCHAR2"/>
22  // <COLUMN Name="ProcessorClass" StorageName="PROCESSOR_CLASS"
23  // DataType="VARCHAR2"/> <COLUMN Name="ProcessorStatus"
24  // StorageName="PROCESSOR_STATUS" DataType="VARCHAR2"/>
25  // </VIEW>
26  // </CONFIGURATION>
27  // </ROOT>
28 }
29 
30 //==============================================================================
31 DataBufferConfiguration::~DataBufferConfiguration(void) {}
32 
33 //==============================================================================
34 void DataBufferConfiguration::init(ConfigurationManager* configManager)
35 {
36  processorInfos_.clear();
37 
38  // std::string uniqueID;//Right now ignored
39  std::string dataBufferID;
40  std::string processorUID;
41  std::string processorType;
42  Info processorInfo;
43  for(unsigned int row = 0; row < TableBase::activeTableView_->getNumberOfRows(); row++)
44  {
45  TableBase::activeTableView_->getValue(dataBufferID, row, DataBufferID);
46  TableBase::activeTableView_->getValue(processorUID, row, ProcessorID);
47  TableBase::activeTableView_->getValue(processorType, row, ProcessorType);
48  TableBase::activeTableView_->getValue(processorInfo.class_, row, ProcessorClass);
49  TableBase::activeTableView_->getValue(
50  processorInfo.status_, row, ProcessorStatus);
51 
52  if(processorType == "Producer")
53  {
54  processorInfos_[dataBufferID].producers_[processorUID] = processorInfo;
55  processorInfos_[dataBufferID].processors_[processorUID] = processorInfo;
56  }
57  else if(processorType == "Consumer")
58  {
59  processorInfos_[dataBufferID].consumers_[processorUID] = processorInfo;
60  processorInfos_[dataBufferID].processors_[processorUID] = processorInfo;
61  }
62  else
63  {
64  std::cout << __COUT_HDR_FL__
65  << "Unrecognized Processor Type: " << processorType << std::endl;
66  assert(0);
67  }
68  }
69 }
70 
71 //==============================================================================
72 std::vector<std::string> DataBufferConfiguration::getProcessorIDList(
73  std::string dataBufferID) const
74 {
75  std::vector<std::string> list;
76  for(auto const& it : processorInfos_.find(dataBufferID)->second.processors_)
77  list.push_back(it.first);
78  return list;
79 }
80 
81 //==============================================================================
82 std::vector<std::string> DataBufferConfiguration::getProducerIDList(
83  std::string dataBufferID) const
84 {
85  std::vector<std::string> list;
86  for(auto const& it : processorInfos_.find(dataBufferID)->second.producers_)
87  list.push_back(it.first);
88  return list;
89 }
90 
91 //==============================================================================
92 bool DataBufferConfiguration::getProducerStatus(std::string dataBufferID,
93  std::string producerID) const
94 {
95  return processorInfos_.find(dataBufferID)
96  ->second.producers_.find(producerID)
97  ->second.status_;
98 }
99 
100 //==============================================================================
101 std::string DataBufferConfiguration::getProducerClass(std::string dataBufferID,
102  std::string producerID) const
103 {
104  return processorInfos_.find(dataBufferID)
105  ->second.producers_.find(producerID)
106  ->second.class_;
107 }
108 
109 //==============================================================================
110 std::vector<std::string> DataBufferConfiguration::getConsumerIDList(
111  std::string dataBufferID) const
112 {
113  std::vector<std::string> list;
114  for(auto& it : processorInfos_.find(dataBufferID)->second.consumers_)
115  list.push_back(it.first);
116  return list;
117 }
118 
119 //==============================================================================
120 bool DataBufferConfiguration::getConsumerStatus(std::string dataBufferID,
121  std::string consumerID) const
122 {
123  return processorInfos_.find(dataBufferID)
124  ->second.consumers_.find(consumerID)
125  ->second.status_;
126 }
127 
128 //==============================================================================
129 std::string DataBufferConfiguration::getConsumerClass(std::string dataBufferID,
130  std::string consumerID) const
131 {
132  return processorInfos_.find(dataBufferID)
133  ->second.consumers_.find(consumerID)
134  ->second.class_;
135 }
136 
137 DEFINE_OTS_CONFIGURATION(DataBufferConfiguration)