Main Page | Modules | Class Hierarchy | Alphabetical List | Class List | File List | Class Members | File Members | Related Pages

DC_DataPoolMonitor.cpp

00001 // 00002 // Copyright 2004 P&P Software GmbH - All Rights Reserved 00003 // 00004 // DC_DataPoolMonitor.cpp 00005 // 00006 // Version 1.0 00007 // Date 11.10.03 00008 // Author R. Totaro 00009 00010 #include "../GeneralInclude/CompilerSwitches.h" 00011 #include "../GeneralInclude/DebugSupport.h" 00012 #include "../GeneralInclude/Constants.h" 00013 #include "../GeneralInclude/ClassId.h" 00014 #include "../FDIR/MonitoringProfile.h" 00015 #include "../FDIR/RecoveryAction.h" 00016 #include "DataPool.h" 00017 #include "DC_DataPoolMonitor.h" 00018 00019 DC_DataPoolMonitor::DC_DataPoolMonitor(void) { 00020 setClassId(ID_DATAPOOLMONITOR); 00021 } 00022 00023 bool DC_DataPoolMonitor::canExecute(void) { 00024 return true; 00025 } 00026 00027 TD_ActionOutcome DC_DataPoolMonitor::doConditionalAction(void) { 00028 assert(isObjectConfigured()); 00029 00030 DataPool *pDataPool=getDataPool(); 00031 TD_DataPoolId i =pDataPool->firstIdentifier(); 00032 00033 do { 00034 MonitoringProfile *pMP =pDataPool->getMonitoringProfile(i); 00035 bool invalid=(pDataPool->isFloat(i)? 00036 pMP->deviatesFromProfile(pDataPool->getFloatValue(i)): 00037 pMP->deviatesFromProfile(pDataPool->getIntegerValue(i))); 00038 00039 if (invalid) { 00040 pDataPool->setValidityStatus(i,NOT_VALID); 00041 pDataPool->getRecoveryAction(i)->execute(); 00042 } 00043 00044 i=pDataPool->nextIdentifier(); 00045 } while (!pDataPool->isLastIdentifier()); 00046 00047 return ACTION_SUCCESS; 00048 } 00049
Copyright 2003 P&P Software GmbH - All Rights Reserved