1 #include "otsdaq/WorkLoopManager/WorkLoop.h"
2 #include "otsdaq/Macros/CoutMacros.h"
3 #include "otsdaq/MessageFacility/MessageFacility.h"
5 #include <toolbox/task/WorkLoopFactory.h>
13 #define __MF_SUBJECT__ "Workloop"
15 #define __COUT_HDR__ (std::string("Workloop-") + WorkLoop::workLoopName_ + "\t<> ")
18 WorkLoop::WorkLoop(
const std::string& name)
19 : continueWorkLoop_(false)
21 , workLoopType_(
"waiting")
23 , job_(toolbox::task::bind(this, &
WorkLoop::workLoopThread, workLoopName_))
25 __COUT__ <<
"Constructed." << __E__;
29 WorkLoop::~WorkLoop(
void)
31 __COUT__ <<
"Destructor." << __E__;
33 toolbox::task::getWorkLoopFactory()->removeWorkLoop(workLoopName_, workLoopType_);
34 __COUT__ <<
"Destructed." << __E__;
38 void WorkLoop::startWorkLoop(
void)
40 __COUT__ <<
"Starting WorkLoop: " << workLoopName_ << __E__;
41 continueWorkLoop_ =
true;
44 workLoop_ = toolbox::task::getWorkLoopFactory()->getWorkLoop(workLoopName_,
47 catch(xcept::Exception& e)
49 __COUT__ <<
"ERROR: Can't create WorkLoop job for " << workLoopName_ << __E__;
53 if(workLoop_->isActive())
59 workLoop_->submit(job_);
61 catch(xcept::Exception& e)
63 __COUT__ <<
"ERROR: Can't submit WorkLoop job for " << workLoopName_ << __E__;
69 workLoop_->activate();
71 catch(xcept::Exception& e)
73 __COUT__ <<
"ERROR: Can't activate WorkLoop job for " << workLoopName_
74 <<
" Very likely because the name " << workLoopName_ <<
" is not unique!"
81 bool WorkLoop::stopWorkLoop()
83 __COUT__ <<
"Stopping WorkLoop: " << workLoopName_ << __E__;
85 continueWorkLoop_ =
false;
89 <<
"MEASSAGE: WorkLoop " << workLoopName_
90 <<
" was not created at all! This message will be commented in the future"
95 __COUT__ <<
"initially workLoop_->isActive() "
96 << (workLoop_->isActive() ?
"yes" :
"no") << __E__;
103 catch(xcept::Exception& e)
105 __COUT__ <<
"WARNING: Can't cancel WorkLoop job for " << workLoopName_
106 <<
" because probably it has never been activated!" << __E__;
108 __COUT__ <<
"workLoop_->isActive() " << (workLoop_->isActive() ?
"yes" :
"no")
115 workLoop_->remove(job_);
117 catch(xcept::Exception& e)
124 __COUT__ <<
"WARNING: Can't remove request WorkLoop: " << workLoopName_ << __E__;
125 __COUT__ <<
"workLoop_->isActive() " << (workLoop_->isActive() ?
"yes" :
"no")
129 __COUT__ <<
"Stopped WorkLoop: " << workLoopName_ << __E__;
130 __COUT__ <<
"workLoop_->isActive() " << (workLoop_->isActive() ?
"yes" :
"no")
136 bool WorkLoop::isActive(
void)
const
138 return workLoop_->isActive() && continueWorkLoop_;