diff --git a/MAC/APL/MainCU/src/ObservationControl/ObservationControl.cc b/MAC/APL/MainCU/src/ObservationControl/ObservationControl.cc index a97a0e60791cf4371e3c7f361495f5378688dd7c..b1edba6bf94b3ae478bd79d66ad38e51fb1e6a7b 100644 --- a/MAC/APL/MainCU/src/ObservationControl/ObservationControl.cc +++ b/MAC/APL/MainCU/src/ObservationControl/ObservationControl.cc @@ -107,10 +107,11 @@ ObservationControl::ObservationControl(const string& cntlrName) : itsProcessType = globalParameterSet()->getString("Observation.processType", "Observation"); // Values from my conf file - itsLateLimit = globalParameterSet()->getTime ("ObservationControl.lateLimit", 15); - itsFailedLimit = globalParameterSet()->getTime ("ObservationControl.failedLimit", 30); - itsHeartBeatItv = globalParameterSet()->getTime ("ObservationControl.heartbeatInterval", 10); - string reportType= globalParameterSet()->getString("ObservationControl.reportType", "Full"); + itsLateLimit = globalParameterSet()->getTime ("ObservationControl.lateLimit", 15); + itsFailedLimit = globalParameterSet()->getTime ("ObservationControl.failedLimit", 30); + itsHeartBeatItv = globalParameterSet()->getTime ("ObservationControl.heartbeatInterval", 10); + itsFinalStateDelay = globalParameterSet()->getTime ("ObservationControl.finalStateDelay", 10); + string reportType = globalParameterSet()->getString("ObservationControl.reportType", "Full"); if (reportType == "Full") itsFullReport = true; else if (reportType == "Changes") itsChangeReport = true; @@ -655,6 +656,8 @@ GCFEvent::TResult ObservationControl::finishing_state(GCFEvent& event, setState(CTState::QUITED); // inform MACScheduler we are going down + LOG_INFO_STR("Waiting " << itsFinalStateDelay << " seconds before reporting final state..."); + sleep (itsFinalStateDelay); CONTROLQuitedEvent msg; msg.cntlrName = getName(); msg.result = itsQuitReason; diff --git a/MAC/APL/MainCU/src/ObservationControl/ObservationControl.conf.in b/MAC/APL/MainCU/src/ObservationControl/ObservationControl.conf.in index 2a43f6f73b9846150e972423742cf3e3c7ffbeab..554b7fa92589e077632e060b9b6eb0d1160d5f47 100644 --- a/MAC/APL/MainCU/src/ObservationControl/ObservationControl.conf.in +++ b/MAC/APL/MainCU/src/ObservationControl/ObservationControl.conf.in @@ -28,3 +28,7 @@ ObservationControl.reportType = Full # ObservationControl.emergencyTimeout = 1h +# +# Delay before reporting FINAL state to MACScheduler +# +ObservationControl.finalStateDelay = 10s diff --git a/MAC/APL/MainCU/src/ObservationControl/ObservationControl.h b/MAC/APL/MainCU/src/ObservationControl/ObservationControl.h index f795f23e6de670adc9dd49e2806ebd547b45e84f..6a6192c1839eb03e20e771b8efd23b0f3c3e43bb 100644 --- a/MAC/APL/MainCU/src/ObservationControl/ObservationControl.h +++ b/MAC/APL/MainCU/src/ObservationControl/ObservationControl.h @@ -171,6 +171,7 @@ private: uint32 itsTreeID; uint32 itsHeartBeatItv; uint32 itsForcedQuitDelay; + uint32 itsFinalStateDelay; uint32 itsClaimPeriod; uint32 itsPreparePeriod; int32 itsLateLimit; // after how many seconds a requested state should have been reached.