PowerMaster/include/measurementDataManager.h

86 lines
2.2 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#ifndef MEASUREMENTDATAMANAGER_H
#define MEASUREMENTDATAMANAGER_H
#include <QObject>
class QSettings;
class QNetworkAccessManager;
class QNetworkReply;
class WebSocketClient;
class MeasurementDataManager : public QObject
{
Q_OBJECT
Q_DISABLE_COPY(MeasurementDataManager) //DataManager(const DataManager&) = delete; DataManager& operator=(const DataManager&) = delete;
public:
static MeasurementDataManager* instance();
void startSubscription(const QStringList& measurements);
void stopSubscription();
void addSubscriptionData(const QStringList& measurements);
void removeSubscriptionData(const QStringList& measurements);
void getSubscriptionRealtimeData();
private slots:
void onReciveRealtimeData(const QString& dataMsg);
private:
struct RealtimeConfig
{
QString host;
int port;
QString httpPath;
QString websocketPath;
int timeout; //请求超时(毫秒)
int maxRetries; //最大重试次数
int retryInterval; //重试间隔
RealtimeConfig()
: timeout(3000)
, maxRetries(3)
, retryInterval(1000)
{}
};
struct HistoricalConfig
{
QString host;
int port;
int timeout; //请求超时(毫秒)
int maxRetries; //最大重试次数
int retryInterval; //重试间隔
HistoricalConfig()
: timeout(3000)
, maxRetries(3)
, retryInterval(1000)
{}
};
struct ServiceConfig
{
RealtimeConfig realtimeCfg;
HistoricalConfig historicalCfg;
};
explicit MeasurementDataManager();
~MeasurementDataManager();
void initialize();
void buildSubscriptionRequest(const QString& action, const QStringList& measurements);
void processSubscriptionResponse(const QString& action, QNetworkReply* reply);
//配置相关
ServiceConfig m_serviceConfig;
QSettings* m_settings;
QString m_settingsFile;
bool m_isVaildSettingsFile;
//服务相关
QString m_clientID;
QNetworkAccessManager* m_networkManager;
WebSocketClient* m_webSocketClient;
};
#endif