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 46 of file pipeline.hpp.

Constructor & Destructor Documentation

◆ Worker()

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

Definition at line 48 of file pipeline.hpp.

Member Function Documentation

◆ run()

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

Definition at line 33 of file pipeline.cpp.

34{
35 {
36 boost::mutex::scoped_lock lock( m_mutex );
37 m_pipeline.m_barrier.wait();
38 }
39 while ( true )
40 {
41 {
42 boost::mutex::scoped_lock lock( m_mutex );
43 m_running = true;
44 }
45 while ( !m_idle ) {
46 m_job->run();
47 delete m_job;
48 m_idle = !m_pipeline.getJob( m_job );
49 }
50 {
51 boost::mutex::scoped_lock lock( m_mutex );
52 m_running = false;
53 if ( m_shutdown )
54 break;
55 if ( m_stop ) {
56 m_pipeline.m_barrier.wait();
57 m_stop = false;
58 }
59 if ( m_idle )
60 m_condition.wait( lock );
61 }
62 }
63}

◆ 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 {
24 m_job = job;
25 m_idle = false;
26 m_condition.notify_one();
27 return true;
28 }
29 return false;
30}

◆ shutdown()

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

Definition at line 66 of file pipeline.cpp.

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

◆ stop()

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

Definition at line 74 of file pipeline.cpp.

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

Member Data Documentation

◆ m_condition

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

Definition at line 67 of file pipeline.hpp.

◆ m_idle

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

Definition at line 68 of file pipeline.hpp.

◆ m_job

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

Definition at line 72 of file pipeline.hpp.

◆ m_mutex

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

Definition at line 66 of file pipeline.hpp.

◆ m_pipeline

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

Definition at line 65 of file pipeline.hpp.

◆ m_running

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

Definition at line 71 of file pipeline.hpp.

◆ m_shutdown

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

Definition at line 69 of file pipeline.hpp.

◆ m_stop

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

Definition at line 70 of file pipeline.hpp.


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