81 lines
2.1 KiB
C++
81 lines
2.1 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() << "处理数据_size:" << data.toString().size();
|
|
|
|
// 根据数据类型处理
|
|
processJson(data.toJsonObject(),conType);
|
|
}
|
|
|
|
void DataProcessor::processJson( const QVariant& data,int conType)
|
|
{
|
|
QJsonObject dataObj = data.toJsonObject();
|
|
if(conType == 0){
|
|
if(dataObj.contains("client_id")){ //实时数据相关
|
|
emit httpProcessed("recommend",data);
|
|
}
|
|
else if(dataObj.contains("input")){
|
|
emit httpProcessed("subscriptions",data);
|
|
}
|
|
}
|
|
else if(conType == 1){
|
|
if(dataObj.contains("targets")){ //实时数据相关
|
|
emit websocketProcessed(data);
|
|
}
|
|
}
|
|
|
|
if(dataObj.contains("client_id")){ //实时数据相关
|
|
/*QString clientId = dataObj.value("client_id").toString();
|
|
QJsonArray arrTarget = dataObj.value("targets").toArray();
|
|
for (const QJsonValue& value : arrTarget) {
|
|
QJsonObject obj = value.toObject();
|
|
QString targetId = obj["id"].toString();
|
|
QString sCode = obj["code"].toString();
|
|
}*/
|
|
}
|
|
else if(dataObj.contains("input")){
|
|
|
|
}
|
|
//QMutexLocker locker(&m_mutex);
|
|
//m_dataCache[dataType] = 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() << "已清除所有处理数据";
|
|
}
|