#pragma once #include #include "../XNCore/XNIDL/XNSimStatusPubSubTypes.hpp" #include #include #include #include #include #include #include #include class MonitorThread : public QThread { Q_OBJECT public: MonitorThread(QObject *parent = nullptr); ~MonitorThread(); signals: void runStatusChanged(int status); void abortProcess(); public slots: void OnPause(); void OnContinue(); void OnAbort(); public: void OnReceiveSimStatus(const XNSim::XNSimStatus::XNEngineStatus &status); private: void run() override; private: QMutex m_Mutex; int m_RunStatus; bool m_RunStatusUpdate; eprosima::fastdds::dds::DomainParticipant *m_Participant; eprosima::fastdds::dds::Topic *m_EngineStatusTopic; eprosima::fastdds::dds::DataWriter *m_ControlDataWriter; eprosima::fastdds::dds::Subscriber *m_EngineStatusSubscriber; eprosima::fastdds::dds::DataReaderListener *listener; eprosima::fastdds::dds::DataReader *m_EngineStatusDataReader; eprosima::fastdds::dds::Topic *m_ControlTopic; eprosima::fastdds::dds::Publisher *m_ControlPublisher; bool isAbort; };