artdaq_mfextensions  v1_05_00
ReceiverManager.cc
1 #include "mfextensions/Receivers/ReceiverManager.hh"
2 
3 #include <iostream>
4 #include "fhiclcpp/ParameterSet.h"
5 #include "mfextensions/Receivers/makeMVReceiver.hh"
6 
7 mfviewer::ReceiverManager::ReceiverManager(const fhicl::ParameterSet& pset)
8 {
9  qRegisterMetaType<qt_mf_msg>("qt_mf_msg");
10  qRegisterMetaType<msg_ptr_t>("msg_ptr_t");
11  std::vector<std::string> names = pset.get_pset_names();
12  for (const auto& name : names)
13  {
14  std::string pluginType = "unknown";
15  try
16  {
17  auto plugin_pset = pset.get<fhicl::ParameterSet>(name);
18  pluginType = plugin_pset.get<std::string>("receiverType", "unknown");
19  std::unique_ptr<mfviewer::MVReceiver> rcvr = makeMVReceiver(pluginType, plugin_pset);
20  connect(rcvr.get(), SIGNAL(NewMessage(msg_ptr_t)), this, SLOT(onNewMessage(msg_ptr_t)));
21  receivers_.push_back(std::move(rcvr));
22  }
23  catch (...)
24  {
25  std::cerr << "ReceiverManager: Unable to load receiver plugin with name " << name << " and plugin type "
26  << pluginType << std::endl;
27  }
28  }
29 }
30 
32 {
33  stop();
34  for (auto& i : receivers_)
35  {
36  i.reset(nullptr);
37  }
38 }
39 
41 {
42  for (auto& receiver : receivers_)
43  {
44  receiver->stop();
45  }
46  for (auto& receiver : receivers_)
47  {
48  receiver->wait();
49  }
50 }
51 
53 {
54  for (auto& receiver : receivers_)
55  {
56  receiver->start();
57  }
58 }
59 
60 void mfviewer::ReceiverManager::onNewMessage(msg_ptr_t const& mfmsg) { emit newMessage(mfmsg); }
void start()
Start all receivers
virtual ~ReceiverManager()
ReceiverManager Destructor
void stop()
Stop all receivers
ReceiverManager(fhicl::ParameterSet const &pset)
ReceiverManager Constructor