140 lines
4.0 KiB
C++
140 lines
4.0 KiB
C++
#include "UsctStateManager.h"
|
|
|
|
#include "event/EventCenter.h"
|
|
#include "log/LogManager.h"
|
|
#include "appvals/AppGlobalValues.h"
|
|
|
|
UsctStateManager* UsctStateManager::getInstance()
|
|
{
|
|
static UsctStateManager instance;
|
|
return &instance;
|
|
}
|
|
|
|
UsctStateManager::UsctStateManager(QObject* aParent)
|
|
: QObject (aParent)
|
|
, mState()
|
|
{
|
|
mState.insert(DmsState, true);
|
|
mState.insert(DmsConnectionState, true);
|
|
mState.insert(ReconState, true);
|
|
mState.insert(ReconMppsState, true);
|
|
mState.insert(ReconPacsState, true);
|
|
mState.insert(ReconConnectionState, true);
|
|
mState.insert(ReconEmptyScanState, true);
|
|
mState.insert(ReconDBState, true);
|
|
}
|
|
|
|
void UsctStateManager::setState(int aStateCode, bool aState)
|
|
{
|
|
if(aState == mState[aStateCode])
|
|
{
|
|
return;
|
|
}
|
|
mState[aStateCode] = aState;
|
|
bool UsctState = getUsctState();
|
|
EventCenter::Default()->triggerEvent(UsctStateUpdated, nullptr, (QObject*)&UsctState);
|
|
if(aState)
|
|
{
|
|
int msg = aStateCode;
|
|
LOG_SYS_OPERATION(getStateErrorMessage(aStateCode) + " recovery.")
|
|
EventCenter::Default()->triggerEvent(ErrorStateUnactive, nullptr, (QObject*)&msg);
|
|
}
|
|
else
|
|
{
|
|
QString errorMessage = getStateErrorMessage(aStateCode);
|
|
LOG_SYS_OPERATION(errorMessage)
|
|
QPair<int, QString> msg(QPair<int, QString>(aStateCode, errorMessage));
|
|
EventCenter::Default()->triggerEvent(ErrorStateActive, nullptr, (QObject*)&msg);
|
|
switch(aStateCode)
|
|
{
|
|
case ReconState:
|
|
{
|
|
QString msg = tr("Recon fatal error.");
|
|
EventCenter::Default()->triggerEvent(GUIErrorRaise, nullptr, (QObject*)&msg);
|
|
break;
|
|
}
|
|
case ReconDBState:
|
|
{
|
|
QString msg = tr("Recon DB error.");
|
|
EventCenter::Default()->triggerEvent(GUIErrorRaise, nullptr, (QObject*)&msg);
|
|
break;
|
|
}
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
bool UsctStateManager::getUsctState()
|
|
{
|
|
bool result = true;
|
|
QMap<int, bool>::const_iterator it;
|
|
for (it = mState.constBegin(); it != mState.constEnd(); ++it)
|
|
{
|
|
result = result & it.value();
|
|
}
|
|
return result;
|
|
}
|
|
|
|
QString UsctStateManager::getStateErrorMessage(int aStateCode)
|
|
{
|
|
switch (aStateCode)
|
|
{
|
|
case DmsState : return "Dms Error";
|
|
case DmsConnectionState : return "Dms Connection Error";
|
|
case ReconState : return "Recon Fatal Error";
|
|
case ReconMppsState : return "Recon Mpps Connection Error";
|
|
case ReconPacsState : return "Recon Pacs Connection Error";
|
|
case ReconEmptyScanState : return "Recon Empty Scan Data Error";
|
|
case ReconDBState : return "Recon Database Connection Error";
|
|
case ReconConnectionState : return "Recon Connection Error";
|
|
default: return "Unknow Error";
|
|
}
|
|
}
|
|
|
|
void UsctStateManager::updateReconState(bool aIsConnected,int aState)
|
|
{
|
|
if(AppGlobalValues::InProcessing().toBool())
|
|
{
|
|
return;
|
|
}
|
|
setState(ReconConnectionState, aIsConnected);
|
|
for (int i = 0; i < 5; ++i)
|
|
{
|
|
|
|
int mask = 1 << i;
|
|
bool result = true;
|
|
if (aState & mask)
|
|
{
|
|
result = false;
|
|
}
|
|
switch(i)
|
|
{
|
|
case ReconState: setState(ReconState, result); break;
|
|
case ReconDBState: setState(ReconDBState, result); break;
|
|
case ReconPacsState: setState(ReconPacsState, result); break;
|
|
case ReconMppsState: setState(ReconMppsState, result); break;
|
|
case ReconEmptyScanState: setState(ReconEmptyScanState, result);
|
|
if(!mIsEmptyScanUpdateing && !result)
|
|
{
|
|
mIsEmptyScanUpdateing = true;
|
|
EventCenter::Default()->triggerEvent(EmptyScanDataCorrupted, nullptr, nullptr);
|
|
}
|
|
break;
|
|
default: break;
|
|
}
|
|
}
|
|
}
|
|
|
|
bool UsctStateManager::getState(UsctState aStateCode)
|
|
{
|
|
return mState[aStateCode];
|
|
}
|
|
|
|
void UsctStateManager::setEmptyScanUpdateFlag(bool aIsUpdating)
|
|
{
|
|
mIsEmptyScanUpdateing = aIsUpdating;
|
|
}
|
|
|
|
|