DiagramDesigner/diagramCommunication/source/dataProcessor.cpp

78 lines
1.8 KiB
C++

// DataProcessor.cpp
#include "dataProcessor.h"
#include <QDebug>
#include <QJsonDocument>
#include <QJsonObject>
#include <QJsonArray>
DataProcessor* DataProcessor::instance()
{
static DataProcessor* instance = nullptr;
static QMutex mutex;
if (!instance) {
QMutexLocker locker(&mutex);
if (!instance) {
instance = new DataProcessor;
}
}
return instance;
}
DataProcessor::DataProcessor(QObject* parent)
: QObject(parent)
{
qDebug() << "DataProcessor initialized";
}
void DataProcessor::processData(const QVariant& data,int conType)
{
qDebug() << "data_size:" << data.toJsonObject().size();
// 根据数据类型处理
if (data.canConvert<QJsonObject>()) {
processJson(data.toJsonObject(),conType);
}
else if(data.canConvert<QJsonArray>()){
processJsonArray(data);
}
}
void DataProcessor::processNullData(const QVariant& data)
{
emit httpProcessed("subscriptionTest",data);
}
void DataProcessor::processJson( const QVariant& data,int conType)
{
QJsonObject dataObj = data.toJsonObject();
if(conType == 0){
if(dataObj.contains("client_id")){ //实时数据相关
emit httpProcessed("subscriptions",data);
}
}
else if(conType == 1){
if(dataObj.contains("targets")){ //实时数据相关
emit websocketProcessed(data);
}
}
}
void DataProcessor::processJsonArray(const QVariant& data)
{
emit httpProcessed("recommend",data);
}
QVariant DataProcessor::getProcessedData(const QString& key) const
{
QMutexLocker locker(&m_mutex);
return m_dataCache.value(key);
}
void DataProcessor::clearAllData()
{
QMutexLocker locker(&m_mutex);
m_dataCache.clear();
qDebug() << "已清除所有处理数据";
}