DUNE-DAQ
DUNE Trigger and Data Acquisition software
Loading...
Searching...
No Matches
dunedaq::oks::OksPipeline::Worker Struct Reference
Collaboration diagram for dunedaq::oks::OksPipeline::Worker:
[legend]

Public Member Functions

 Worker (OksPipeline &pipeline)
void run ()
bool setJob (OksJob *job)
void shutdown ()
void stop ()

Private Attributes

OksPipeline & m_pipeline
boost::mutex m_mutex
boost::condition m_condition
bool m_idle
bool m_shutdown
bool m_stop
bool m_running
OksJob * m_job

Detailed Description

Definition at line 43 of file pipeline.hpp.

Constructor & Destructor Documentation

◆ Worker()

dunedaq::oks::OksPipeline::Worker::Worker ( OksPipeline & pipeline)
inline

Definition at line 45 of file pipeline.hpp.

Member Function Documentation

◆ run()

void dunedaq::oks::OksPipeline::Worker::run ( )

Definition at line 32 of file pipeline.cpp.

33{
34 {
35 boost::mutex::scoped_lock lock(m_mutex);
36 m_pipeline.m_barrier.wait();
37 }
38 while (true) {
39 {
40 boost::mutex::scoped_lock lock(m_mutex);
41 m_running = true;
42 }
43 while (!m_idle) {
44 m_job->run();
45 delete m_job;
47 }
48 {
49 boost::mutex::scoped_lock lock(m_mutex);
50 m_running = false;
51 if (m_shutdown)
52 break;
53 if (m_stop) {
54 m_pipeline.m_barrier.wait();
55 m_stop = false;
56 }
57 if (m_idle)
58 m_condition.wait(lock);
59 }
60 }
61}
virtual void run(void)=0
bool getJob(OksJob *&job)
Definition pipeline.cpp:126
boost::barrier m_barrier
Definition pipeline.hpp:84

◆ setJob()

bool dunedaq::oks::OksPipeline::Worker::setJob ( OksJob * job)

Definition at line 19 of file pipeline.cpp.

20{
21 boost::mutex::scoped_lock lock(m_mutex);
22 if (!m_running && m_idle) {
23 m_job = job;
24 m_idle = false;
25 m_condition.notify_one();
26 return true;
27 }
28 return false;
29}

◆ shutdown()

void dunedaq::oks::OksPipeline::Worker::shutdown ( )

Definition at line 64 of file pipeline.cpp.

65{
66 boost::mutex::scoped_lock lock(m_mutex);
67 m_shutdown = true;
68 m_condition.notify_one();
69}

◆ stop()

void dunedaq::oks::OksPipeline::Worker::stop ( )

Definition at line 72 of file pipeline.cpp.

73{
74 boost::mutex::scoped_lock lock(m_mutex);
75 m_stop = true;
76 m_condition.notify_one();
77}

Member Data Documentation

◆ m_condition

boost::condition dunedaq::oks::OksPipeline::Worker::m_condition
private

Definition at line 66 of file pipeline.hpp.

◆ m_idle

bool dunedaq::oks::OksPipeline::Worker::m_idle
private

Definition at line 67 of file pipeline.hpp.

◆ m_job

OksJob* dunedaq::oks::OksPipeline::Worker::m_job
private

Definition at line 71 of file pipeline.hpp.

◆ m_mutex

boost::mutex dunedaq::oks::OksPipeline::Worker::m_mutex
private

Definition at line 65 of file pipeline.hpp.

◆ m_pipeline

OksPipeline& dunedaq::oks::OksPipeline::Worker::m_pipeline
private

Definition at line 64 of file pipeline.hpp.

◆ m_running

bool dunedaq::oks::OksPipeline::Worker::m_running
private

Definition at line 70 of file pipeline.hpp.

◆ m_shutdown

bool dunedaq::oks::OksPipeline::Worker::m_shutdown
private

Definition at line 68 of file pipeline.hpp.

◆ m_stop

bool dunedaq::oks::OksPipeline::Worker::m_stop
private

Definition at line 69 of file pipeline.hpp.


The documentation for this struct was generated from the following files: