XNSim/XNMonitor/SystemStatusWidget/SystemInfoUpdateThread.h

149 lines
3.2 KiB
C
Raw Normal View History

2025-04-28 12:25:20 +08:00
/**
* @file SystemInfoUpdateThread.h
* @author jinchao
* @brief 线
* @version 1.0
* @date 2025-03-10
*
* @copyright Copyright (c) 2025 COMAC
*
*/
#pragma once
#include <QThread>
#include <QMutex>
#include <QQueue>
#include <QMap>
#include "../TypeDefine.h"
#include "../../XNCore/XNIDL/XNSimStatusPubSubTypes.hpp"
/**
* @brief 线
*/
class SystemInfoUpdateThread : public QThread
{
Q_OBJECT
public:
/**
* @brief
* @param parent
*/
explicit SystemInfoUpdateThread(QObject *parent = nullptr) : QThread(parent) {}
/**
* @brief
*/
virtual ~SystemInfoUpdateThread();
signals:
/**
* @brief 线
* @param threadData 线
*/
void updateThreadInfo(const XNRuntimeData threadData);
/**
* @brief
* @param engineName
*/
void updateEngineName(const QString engineName);
/**
* @brief ID信号
* @param engineID ID
*/
void updateEngineID(const unsigned int engineID);
/**
* @brief
* @param threadStatus 线
*/
void updateEngineStatus(const unsigned int threadStatus);
/**
* @brief
* @param index
* @param status
*/
void updateCoreStatus(int index, const unsigned int &status);
/**
* @brief
* @param index
* @param newValue
*/
void updateRuntimeValue(int index, const QString &newValue);
/**
* @brief 线
* @param count
*/
void updateThreadCount(const unsigned int &count);
/**
* @brief
* @param affinity
*/
void updateAffinity(const QString &affinity);
public slots:
/**
* @brief
* @param newSleepTime
*/
void onChangeSleepTime(const unsigned int newSleepTime);
/**
* @brief 线
* @param isRunning
*/
void onThreadController(const bool &isRunning);
/**
* @brief 线退
*/
void onThreadQuit() { m_Quit = true; }
public:
/**
* @brief
*/
void Initialize();
protected:
/**
* @brief
*/
void run() override;
private:
/**
* @brief
* @param status
*/
void EngineStatusListener(const XNSim::XNSimStatus::XNEngineStatus &status);
/**
* @brief 线
* @param status 线
*/
void ThreadStatusListener(const XNSim::XNSimStatus::XNThreadStatus &status);
private:
/**
* @brief
*/
unsigned int m_SleepTime = 1000;
/**
* @brief
*/
bool m_Active = false;
/**
* @brief 退
*/
bool m_Quit = false;
/**
* @brief
*/
QMutex m_Mutex;
/**
* @brief
*/
XNSim::XNSimStatus::XNEngineStatus engineStatus;
/**
* @brief
*/
bool m_EngineStatusUpdate = false;
/**
* @brief 线
*/
QMap<quint32, XNSim::XNSimStatus::XNThreadStatus> m_ThreadStatus;
};