#include "ReconManager.h" #include "ReconClient.h" #include "json/jsonobject.h" #include "QDebug" namespace { const std::string CRT_FILE = "./cfgs/client.crt"; const std::string KEY_FILE = "./cfgs/client.key"; std::string toReconServerAddress(const QString& aIp, const QString& aPort) { return ("https://" + aIp + ":" + aPort).toStdString(); } } ReconManager* ReconManager::getInstance() { static ReconManager instance; return &instance; } ReconManager::ReconManager(QObject* aParent) : QObject(aParent) , mReconClient(new Recon::ReconClient(CRT_FILE, KEY_FILE)) { init(); } ReconManager::~ReconManager() { delete mReconClient; } void ReconManager::init() { host reconServerInfo = JsonObject::Instance()->getServer(JsonObject::RECON); mReconClient->SetHost(toReconServerAddress(reconServerInfo.ip , reconServerInfo.port)); } void ReconManager::setReconIpAndPort(const QString& aIp, const QString& aPort) { mReconClient->SetHost(toReconServerAddress(aIp, aPort)); } void ReconManager::createEmptyScan(const QString& aScanID, const QString& aPath) { Scan empty{aScanID.toStdString(), "", "", aPath.toStdString(),0}; auto result = mReconClient->Create(empty); if(result.good()) { qDebug()<< "create empty scan success, scanID: "<< aScanID; emit createEmptyScanResponsed(true, aScanID); } else { qDebug()<< "Create empty scan fail by %s\n" << result.error().data(); emit createEmptyScanResponsed(false, aScanID, result.error().data()); } } void ReconManager::createScan(const QString& aScanID, const QString& aPatientID, const QString& aReferenceID, const QString& aPath) { Scan scan{aScanID.toStdString(), aPatientID.toStdString(), aReferenceID.toStdString(), aPath.toStdString(), 1}; auto response = mReconClient->Create(scan); if(response.good()) { qDebug()<< "Recon create scan success, scanID: "<< aScanID; emit createScanResponsed(true, aScanID); } else { qDebug()<< "Recon create scan failed by " << response.error().data(); emit createScanResponsed(false, aScanID, response.error().data()); } } void ReconManager::queryReconStatus(const QStringList& aScanIDs) { QMap result; for(QString scanID : aScanIDs) { int state; auto response = mReconClient->QueryScan(scanID.toStdString(), state); if(response.bad()) { qDebug()<< "Recon query failed by " << response.error().data(); break; } result.insert(scanID, state); } emit queryReconStateResponsed(result); }