// DataProcessor.cpp #include "dataProcessor.h" #include #include #include #include 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() << "已清除所有处理数据"; }