1 #include "otsdaq-core/WorkLoopManager/WorkLoop.h"
2 #include "otsdaq-core/Macros/CoutMacros.h"
3 #include "otsdaq-core/MessageFacility/MessageFacility.h"
5 #include <toolbox/task/WorkLoopFactory.h>
13 #define __MF_SUBJECT__ (std::string("Workloop-") + WorkLoop::workLoopName_)
16 WorkLoop::WorkLoop(
const std::string& name)
17 : continueWorkLoop_(false)
19 , workLoopType_(
"waiting")
21 , job_(toolbox::task::bind(this, &
WorkLoop::workLoopThread, workLoopName_))
23 __COUT__ <<
"Constructed." << __E__;
27 WorkLoop::~WorkLoop(
void)
29 __COUT__ <<
"Destructor." << __E__;
31 toolbox::task::getWorkLoopFactory()->removeWorkLoop(workLoopName_, workLoopType_);
32 __COUT__ <<
"Destructed." << __E__;
36 void WorkLoop::startWorkLoop(
void)
38 __COUT__ <<
"Starting WorkLoop: " << workLoopName_ << __E__;
39 continueWorkLoop_ =
true;
42 workLoop_ = toolbox::task::getWorkLoopFactory()->getWorkLoop(workLoopName_,
45 catch(xcept::Exception& e)
47 __COUT__ <<
"ERROR: Can't create WorkLoop job for " << workLoopName_ << __E__;
51 if(workLoop_->isActive())
57 workLoop_->submit(job_);
59 catch(xcept::Exception& e)
61 __COUT__ <<
"ERROR: Can't submit WorkLoop job for " << workLoopName_ << __E__;
67 workLoop_->activate();
69 catch(xcept::Exception& e)
71 __COUT__ <<
"ERROR: Can't activate WorkLoop job for " << workLoopName_
72 <<
" Very likely because the name " << workLoopName_ <<
" is not unique!"
79 bool WorkLoop::stopWorkLoop()
81 __COUT__ <<
"Stopping WorkLoop: " << workLoopName_ << __E__;
83 continueWorkLoop_ =
false;
87 <<
"MEASSAGE: WorkLoop " << workLoopName_
88 <<
" was not created at all! This message will be commented in the future"
93 __COUT__ <<
"initially workLoop_->isActive() "
94 << (workLoop_->isActive() ?
"yes" :
"no") << __E__;
101 catch(xcept::Exception& e)
103 __COUT__ <<
"WARNING: Can't cancel WorkLoop job for " << workLoopName_
104 <<
" because probably it has never been activated!" << __E__;
106 __COUT__ <<
"workLoop_->isActive() " << (workLoop_->isActive() ?
"yes" :
"no")
113 workLoop_->remove(job_);
115 catch(xcept::Exception& e)
122 __COUT__ <<
"WARNING: Can't remove request WorkLoop: " << workLoopName_ << __E__;
123 __COUT__ <<
"workLoop_->isActive() " << (workLoop_->isActive() ?
"yes" :
"no")
127 __COUT__ <<
"Stopped WorkLoop: " << workLoopName_ << __E__;
128 __COUT__ <<
"workLoop_->isActive() " << (workLoop_->isActive() ?
"yes" :
"no")
134 bool WorkLoop::isActive(
void)
const
136 return workLoop_->isActive() && continueWorkLoop_;