Line data Source code
1 : #ifndef MFVIEWER_MVRECEIVER_H
2 : #define MFVIEWER_MVRECEIVER_H
3 :
4 : #include <string>
5 :
6 : #include "fhiclcpp/ParameterSet.h"
7 :
8 : #include "mfextensions/Receivers/qt_mf_msg.hh"
9 :
10 : #include <QtCore/QThread>
11 : #include <iostream>
12 :
13 : namespace mfviewer {
14 : /// <summary>
15 : /// A MVReceiver class listens for messages and raises a signal when one arrives
16 : /// </summary>
17 : class MVReceiver : public QThread
18 : {
19 : Q_OBJECT
20 :
21 : public:
22 : /// <summary>
23 : /// Construct a MVReceiver using the given ParameterSet
24 : /// </summary>
25 : /// <param name="pset">ParameterSet used to construct MVReceiver</param>
26 : explicit MVReceiver(fhicl::ParameterSet const& pset);
27 :
28 : /// <summary>
29 : /// MVReceiver destructor
30 : /// </summary>
31 0 : virtual ~MVReceiver() {}
32 :
33 : /// <summary>
34 : /// Stop the MVReceiver thread
35 : /// </summary>
36 0 : void stop() { stopRequested_ = true; }
37 :
38 : protected:
39 : /// <summary>
40 : /// Whether the MVRecevier should stop
41 : /// </summary>
42 : std::atomic<bool> stopRequested_;
43 : signals:
44 : /// <summary>
45 : /// When a message is received by the MVReceiver, this signal should be raised so that the connected listener can
46 : /// process it.
47 : /// </summary>
48 : /// <param name="msg">Received message</param>
49 : void NewMessage(msg_ptr_t const& msg);
50 :
51 : private:
52 : MVReceiver(MVReceiver const&) = delete;
53 : MVReceiver(MVReceiver&&) = delete;
54 : MVReceiver& operator=(MVReceiver const&) = delete;
55 : MVReceiver& operator=(MVReceiver&&) = delete;
56 : };
57 : } // namespace mfviewer
58 :
59 : #endif // MVRECEIVER_H
|