00001 #include "otsdaq-core/ConfigurationPluginDataFormats/DataBufferConfiguration.h"
00002 #include "otsdaq-core/Macros/ConfigurationPluginMacros.h"
00003
00004 #include <iostream>
00005
00006 using namespace ots;
00007
00008
00009 DataBufferConfiguration::DataBufferConfiguration(void)
00010 : ConfigurationBase("DataBufferConfiguration")
00011 {
00013
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027 }
00028
00029
00030 DataBufferConfiguration::~DataBufferConfiguration(void)
00031 {}
00032
00033
00034 void DataBufferConfiguration::init(ConfigurationManager *configManager)
00035 {
00036 processorInfos_.clear();
00037
00038
00039 std::string dataBufferID;
00040 std::string processorUID;
00041 std::string processorType;
00042 Info processorInfo;
00043 for(unsigned int row = 0; row < ConfigurationBase::activeConfigurationView_->getNumberOfRows(); row++)
00044 {
00045 ConfigurationBase::activeConfigurationView_->getValue(dataBufferID, row, DataBufferID);
00046 ConfigurationBase::activeConfigurationView_->getValue(processorUID, row, ProcessorID);
00047 ConfigurationBase::activeConfigurationView_->getValue(processorType, row, ProcessorType);
00048 ConfigurationBase::activeConfigurationView_->getValue(processorInfo.class_, row, ProcessorClass);
00049 ConfigurationBase::activeConfigurationView_->getValue(processorInfo.status_, row, ProcessorStatus);
00050
00051 if(processorType == "Producer")
00052 {
00053 processorInfos_[dataBufferID].producers_ [processorUID] = processorInfo;
00054 processorInfos_[dataBufferID].processors_[processorUID] = processorInfo;
00055 }
00056 else if(processorType == "Consumer")
00057 {
00058 processorInfos_[dataBufferID].consumers_ [processorUID] = processorInfo;
00059 processorInfos_[dataBufferID].processors_[processorUID] = processorInfo;
00060 }
00061 else
00062 {
00063 std::cout << __COUT_HDR_FL__ << "Unrecognized Processor Type: " << processorType << std::endl;
00064 assert(0);
00065 }
00066 }
00067 }
00068
00069
00070 std::vector<std::string> DataBufferConfiguration::getProcessorIDList(std::string dataBufferID) const
00071 {
00072 std::vector<std::string> list;
00073 for(auto const& it: processorInfos_.find(dataBufferID)->second.processors_)
00074 list.push_back(it.first);
00075 return list;
00076
00077 }
00078
00079
00080 std::vector<std::string> DataBufferConfiguration::getProducerIDList(std::string dataBufferID) const
00081 {
00082 std::vector<std::string> list;
00083 for(auto const& it: processorInfos_.find(dataBufferID)->second.producers_)
00084 list.push_back(it.first);
00085 return list;
00086 }
00087
00088
00089 bool DataBufferConfiguration::getProducerStatus(std::string dataBufferID, std::string producerID) const
00090 {
00091 return processorInfos_.find(dataBufferID)->second.producers_.find(producerID)->second.status_;
00092 }
00093
00094
00095 std::string DataBufferConfiguration::getProducerClass(std::string dataBufferID, std::string producerID) const
00096 {
00097 return processorInfos_.find(dataBufferID)->second.producers_.find(producerID)->second.class_;
00098 }
00099
00100
00101 std::vector<std::string> DataBufferConfiguration::getConsumerIDList(std::string dataBufferID) const
00102 {
00103 std::vector<std::string> list;
00104 for(auto& it: processorInfos_.find(dataBufferID)->second.consumers_)
00105 list.push_back(it.first);
00106 return list;
00107 }
00108
00109
00110 bool DataBufferConfiguration::getConsumerStatus(std::string dataBufferID, std::string consumerID) const
00111 {
00112 return processorInfos_.find(dataBufferID)->second.consumers_.find(consumerID)->second.status_;
00113
00114 }
00115
00116
00117 std::string DataBufferConfiguration::getConsumerClass(std::string dataBufferID, std::string consumerID) const
00118 {
00119 return processorInfos_.find(dataBufferID)->second.consumers_.find(consumerID)->second.class_;
00120 }
00121
00122 DEFINE_OTS_CONFIGURATION(DataBufferConfiguration)