00001 #include "ECF_base.h" 00002 #include "TermMaxTimeOp.h" 00003 00004 00005 void TermMaxTimeOp::registerParameters(StateP state) 00006 { 00007 uint *value = new uint(0); 00008 state->getRegistry()->registerEntry("term.maxtime", (voidP) value, ECF::UINT, 00009 "max number of seconds to run (default: none)"); 00010 } 00011 00012 00013 bool TermMaxTimeOp::initialize(StateP state) 00014 { 00015 if(!state->getRegistry()->isModified("term.maxtime")) 00016 return false; 00017 00018 voidP sptr = state->getRegistry()->getEntry("term.maxtime"); 00019 maxTime_ = *((uint*) sptr.get()); 00020 00021 return true; 00022 } 00023 00024 00025 bool TermMaxTimeOp::operate(StateP state) 00026 { 00027 if(state->getElapsedTime() > maxTime_) { 00028 state->setTerminateCond(); 00029 ECF_LOG(state, 1, "Termination: designated time elapsed. (" + uint2str(maxTime_) + " seconds)"); 00030 } 00031 00032 return true; 00033 }