86 lines
2.2 KiB
C
86 lines
2.2 KiB
C
|
|
#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
|