Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef RQT_MULTIPLOT_MESSAGE_TOPIC_REGISTRY_H
00020 #define RQT_MULTIPLOT_MESSAGE_TOPIC_REGISTRY_H
00021
00022 #include <QMap>
00023 #include <QMutex>
00024 #include <QObject>
00025 #include <QString>
00026 #include <QThread>
00027
00028 namespace rqt_multiplot {
00029 class MessageTopicRegistry :
00030 public QObject {
00031 Q_OBJECT
00032 public:
00033 MessageTopicRegistry(QObject* parent = 0);
00034 ~MessageTopicRegistry();
00035
00036 QMap<QString, QString> getTopics() const;
00037 bool isUpdating() const;
00038 bool isEmpty() const;
00039
00040 void update();
00041
00042 signals:
00043 void updateStarted();
00044 void updateFinished();
00045
00046 private:
00047 class Impl :
00048 public QThread {
00049 public:
00050 Impl(QObject* parent = 0);
00051 virtual ~Impl();
00052
00053 void run();
00054
00055 mutable QMutex mutex_;
00056 QMap<QString, QString> topics_;
00057 };
00058
00059 static Impl impl_;
00060
00061 private slots:
00062 void threadStarted();
00063 void threadFinished();
00064 };
00065 };
00066
00067 #endif