datastreamer_base.h
Go to the documentation of this file.
1 #ifndef DATA_STREAMER_TEMPLATE_H
2 #define DATA_STREAMER_TEMPLATE_H
3 
4 #include <mutex>
5 #include <unordered_set>
6 #include "PlotJuggler/plotdata.h"
9 
10 namespace PJ {
11 
21 {
22  Q_OBJECT
23 public:
24 
26 
27  virtual bool start(QStringList*) = 0;
28 
29  virtual void shutdown() = 0;
30 
31  virtual bool isRunning() const = 0;
32 
33  virtual ~DataStreamer() = default;
34 
35  std::mutex& mutex()
36  {
37  return _mutex;
38  }
39 
40  void setMaximumRange(double range);
41 
43  {
44  return _data_map;
45  }
46 
47  const PlotDataMapRef& dataMap() const
48  {
49  return _data_map;
50  }
51 
53  {
54  _available_parsers = parsers;
55  }
56 
58  {
59  if( _available_parsers && _available_parsers->empty() )
60  {
61  return nullptr;
62  }
63  return _available_parsers;
64  }
65 
66 signals:
67 
68  // Request to clear previous data
69  void clearBuffers();
70 
71  // signal published periodically when there is new data
72  void dataReceived();
73 
74  // Stopping a plugin from the "inside"
75  void closed();
76 
77 private:
78  std::mutex _mutex;
80  QAction* _start_streamer;
82 };
83 
84 inline void DataStreamer::setMaximumRange(double range)
85 {
86  std::lock_guard<std::mutex> lock(mutex());
87  for (auto& it : dataMap().numeric)
88  {
89  it.second.setMaximumRangeX(range);
90  }
91  for (auto& it : dataMap().user_defined)
92  {
93  it.second.setMaximumRangeX(range);
94  }
95 }
96 
97 using DataStreamerPtr = std::shared_ptr<DataStreamer>;
98 
99 }
100 
101 
102 QT_BEGIN_NAMESPACE
103 #define DataStream_iid "facontidavide.PlotJuggler3.DataStreamer"
104 Q_DECLARE_INTERFACE(PJ::DataStreamer, DataStream_iid)
105 QT_END_NAMESPACE
106 
107 #endif
std::map< QString, std::shared_ptr< MessageParserCreator >> MessageParserFactory
void setMaximumRange(double range)
virtual void shutdown()=0
virtual bool start(QStringList *)=0
#define nullptr
Definition: backward.hpp:386
PlotDataMapRef _data_map
The DataStreamer base class to create your own plugin.
MessageParserFactory * availableParsers()
std::mutex & mutex()
void setAvailableParsers(MessageParserFactory *parsers)
virtual bool isRunning() const =0
std::shared_ptr< DataStreamer > DataStreamerPtr
const PlotDataMapRef & dataMap() const
PlotDataMapRef & dataMap()
virtual ~DataStreamer()=default
QAction * _start_streamer
MessageParserFactory * _available_parsers
#define DataStream_iid


plotjuggler
Author(s): Davide Faconti
autogenerated on Sun Dec 6 2020 03:47:34