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

OksPipelinem_pipeline
 
boost::mutex m_mutex
 
boost::condition m_condition
 
bool m_idle
 
bool m_shutdown
 
bool m_stop
 
bool m_running
 
OksJobm_job
 

Detailed Description

Definition at line 41 of file pipeline.hpp.

Constructor & Destructor Documentation

◆ Worker()

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

Definition at line 43 of file pipeline.hpp.

Member Function Documentation

◆ run()

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

Definition at line 28 of file pipeline.cpp.

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

◆ setJob()

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

Definition at line 14 of file pipeline.cpp.

15{
16 boost::mutex::scoped_lock lock( m_mutex );
17 if ( !m_running && m_idle )
18 {
19 m_job = job;
20 m_idle = false;
21 m_condition.notify_one();
22 return true;
23 }
24 return false;
25}

◆ shutdown()

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

Definition at line 61 of file pipeline.cpp.

62{
63 boost::mutex::scoped_lock lock( m_mutex );
64 m_shutdown = true;
65 m_condition.notify_one( );
66}

◆ stop()

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

Definition at line 69 of file pipeline.cpp.

70{
71 boost::mutex::scoped_lock lock( m_mutex );
72 m_stop = true;
73 m_condition.notify_one( );
74}

Member Data Documentation

◆ m_condition

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

Definition at line 62 of file pipeline.hpp.

◆ m_idle

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

Definition at line 63 of file pipeline.hpp.

◆ m_job

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

Definition at line 67 of file pipeline.hpp.

◆ m_mutex

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

Definition at line 61 of file pipeline.hpp.

◆ m_pipeline

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

Definition at line 60 of file pipeline.hpp.

◆ m_running

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

Definition at line 66 of file pipeline.hpp.

◆ m_shutdown

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

Definition at line 64 of file pipeline.hpp.

◆ m_stop

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

Definition at line 65 of file pipeline.hpp.


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