XNSim/XNRunner/MonitorThread.h

49 lines
1.3 KiB
C
Raw Permalink Normal View History

2025-04-28 12:25:20 +08:00
#pragma once
#include <QThread>
#include "../XNCore/XNIDL/XNSimStatusPubSubTypes.hpp"
#include <fastdds/dds/publisher/DataWriter.hpp>
#include <fastdds/dds/domain/DomainParticipant.hpp>
#include <fastdds/dds/domain/DomainParticipantFactory.hpp>
#include <fastdds/dds/subscriber/Subscriber.hpp>
#include <fastdds/dds/subscriber/DataReader.hpp>
#include <fastdds/dds/publisher/Publisher.hpp>
#include <fastdds/dds/topic/TypeSupport.hpp>
#include <QMutex>
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;
};