$treeview $search $mathjax $extrastylesheet
artdaq_mfextensions
v1_03_03
$projectbrief
|
$projectbrief
|
$searchbox |
00001 #include "mfextensions/Binaries/ReceiverManager.hh" 00002 00003 #include <iostream> 00004 #include "fhiclcpp/ParameterSet.h" 00005 #include "mfextensions/Receivers/makeMVReceiver.hh" 00006 00007 mfviewer::ReceiverManager::ReceiverManager(fhicl::ParameterSet pset) { 00008 qRegisterMetaType<qt_mf_msg>("qt_mf_msg"); 00009 std::vector<std::string> names = pset.get_pset_names(); 00010 for (auto name : names) { 00011 std::string pluginType = "unknown"; 00012 try { 00013 fhicl::ParameterSet plugin_pset = pset.get<fhicl::ParameterSet>(name); 00014 pluginType = plugin_pset.get<std::string>("receiverType", "unknown"); 00015 std::unique_ptr<mfviewer::MVReceiver> rcvr = makeMVReceiver(pluginType, plugin_pset); 00016 connect(rcvr.get(), SIGNAL(NewMessage(qt_mf_msg const&)), this, SLOT(onNewMessage(qt_mf_msg const&))); 00017 receivers_.push_back(std::move(rcvr)); 00018 } catch (...) { 00019 std::cerr << "ReceiverManager: Unable to load receiver plugin with name " << name << " and plugin type " 00020 << pluginType << std::endl; 00021 } 00022 } 00023 } 00024 00025 mfviewer::ReceiverManager::~ReceiverManager() { 00026 stop(); 00027 for (auto& i : receivers_) i.reset(nullptr); 00028 } 00029 00030 void mfviewer::ReceiverManager::stop() { 00031 for (auto& receiver : receivers_) { 00032 receiver->stop(); 00033 } 00034 for (auto& receiver : receivers_) { 00035 receiver->wait(); 00036 } 00037 } 00038 00039 void mfviewer::ReceiverManager::start() { 00040 for (auto& receiver : receivers_) { 00041 receiver->start(); 00042 } 00043 } 00044 00045 void mfviewer::ReceiverManager::onNewMessage(qt_mf_msg const& mfmsg) { emit newMessage(mfmsg); }