otsdaq  v2_00_00
DataBufferConfiguration_configuration.cc
1 #include "otsdaq-core/ConfigurationPluginDataFormats/DataBufferConfiguration.h"
2 #include "otsdaq-core/Macros/ConfigurationPluginMacros.h"
3 
4 #include <iostream>
5 
6 using namespace ots;
7 
8 //==============================================================================
9 DataBufferConfiguration::DataBufferConfiguration(void)
10 : ConfigurationBase("DataBufferConfiguration")
11 {
13  //WARNING: the names and the order MUST match the ones in the enum //
15  // <ROOT xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="ConfigurationInfo.xsd">
16  // <CONFIGURATION Name="DataBufferConfiguration">
17  // <VIEW Name="DATA_BUFFER_CONFIGURATION" Type="File,Database,DatabaseTest">
18  // <COLUMN Name="DataBufferID" StorageName="DATA_BUFFER_ID" DataType="VARCHAR2"/>
19  // <COLUMN Name="ProcessorID" StorageName="PROCESSOR_ID" DataType="VARCHAR2"/>
20  // <COLUMN Name="ProcessorType" StorageName="PROCESSOR_TYPE" DataType="VARCHAR2"/>
21  // <COLUMN Name="ProcessorClass" StorageName="PROCESSOR_CLASS" DataType="VARCHAR2"/>
22  // <COLUMN Name="ProcessorStatus" StorageName="PROCESSOR_STATUS" DataType="VARCHAR2"/>
23  // </VIEW>
24  // </CONFIGURATION>
25  // </ROOT>
26 
27 }
28 
29 //==============================================================================
30 DataBufferConfiguration::~DataBufferConfiguration(void)
31 {}
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 < ConfigurationBase::activeConfigurationView_->getNumberOfRows(); row++)
44  {
45  ConfigurationBase::activeConfigurationView_->getValue(dataBufferID, row, DataBufferID);
46  ConfigurationBase::activeConfigurationView_->getValue(processorUID, row, ProcessorID);
47  ConfigurationBase::activeConfigurationView_->getValue(processorType, row, ProcessorType);
48  ConfigurationBase::activeConfigurationView_->getValue(processorInfo.class_, row, ProcessorClass);
49  ConfigurationBase::activeConfigurationView_->getValue(processorInfo.status_, row, ProcessorStatus);
50 
51  if(processorType == "Producer")
52  {
53  processorInfos_[dataBufferID].producers_ [processorUID] = processorInfo;
54  processorInfos_[dataBufferID].processors_[processorUID] = processorInfo;
55  }
56  else if(processorType == "Consumer")
57  {
58  processorInfos_[dataBufferID].consumers_ [processorUID] = processorInfo;
59  processorInfos_[dataBufferID].processors_[processorUID] = processorInfo;
60  }
61  else
62  {
63  std::cout << __COUT_HDR_FL__ << "Unrecognized Processor Type: " << processorType << std::endl;
64  assert(0);
65  }
66  }
67 }
68 
69 //==============================================================================
70 std::vector<std::string> DataBufferConfiguration::getProcessorIDList(std::string dataBufferID) const
71 {
72  std::vector<std::string> list;
73  for(auto const& it: processorInfos_.find(dataBufferID)->second.processors_)
74  list.push_back(it.first);
75  return list;
76 
77 }
78 
79 //==============================================================================
80 std::vector<std::string> DataBufferConfiguration::getProducerIDList(std::string dataBufferID) const
81 {
82  std::vector<std::string> list;
83  for(auto const& it: processorInfos_.find(dataBufferID)->second.producers_)
84  list.push_back(it.first);
85  return list;
86 }
87 
88 //==============================================================================
89 bool DataBufferConfiguration::getProducerStatus(std::string dataBufferID, std::string producerID) const
90 {
91  return processorInfos_.find(dataBufferID)->second.producers_.find(producerID)->second.status_;
92 }
93 
94 //==============================================================================
95 std::string DataBufferConfiguration::getProducerClass(std::string dataBufferID, std::string producerID) const
96 {
97  return processorInfos_.find(dataBufferID)->second.producers_.find(producerID)->second.class_;
98 }
99 
100 //==============================================================================
101 std::vector<std::string> DataBufferConfiguration::getConsumerIDList(std::string dataBufferID) const
102 {
103  std::vector<std::string> list;
104  for(auto& it: processorInfos_.find(dataBufferID)->second.consumers_)
105  list.push_back(it.first);
106  return list;
107 }
108 
109 //==============================================================================
110 bool DataBufferConfiguration::getConsumerStatus(std::string dataBufferID, std::string consumerID) const
111 {
112  return processorInfos_.find(dataBufferID)->second.consumers_.find(consumerID)->second.status_;
113 
114 }
115 
116 //==============================================================================
117 std::string DataBufferConfiguration::getConsumerClass(std::string dataBufferID, std::string consumerID) const
118 {
119  return processorInfos_.find(dataBufferID)->second.consumers_.find(consumerID)->second.class_;
120 }
121 
122 DEFINE_OTS_CONFIGURATION(DataBufferConfiguration)