DUNE-DAQ
DUNE Trigger and Data Acquisition software
Toggle main menu visibility
Loading...
Searching...
No Matches
dunedaq
sourcecode
oks
include
oks
pipeline.hpp
Go to the documentation of this file.
1
// DUNE DAQ modification notice:
2
// This file has been modified from the original ATLAS oks source for the DUNE DAQ project.
3
// Fork baseline commit: oks-08-03-04 (2022-04-14).
4
// Renamed since fork: yes (from oks/pipeline.h to include/oks/pipeline.hpp).
5
6
#ifndef OKS_PIPELINE_H
7
#define OKS_PIPELINE_H
8
10
//
11
// copy from IPC
12
//
14
15
#include <boost/thread.hpp>
16
#include <boost/thread/barrier.hpp>
17
#include <boost/thread/condition.hpp>
18
#include <memory>
19
#include <queue>
20
21
namespace
dunedaq
{
22
namespace
oks
{
23
24
class
OksJob
25
{
26
public
:
27
28
virtual
~OksJob
() { ; }
29
virtual
void
run
(
void
) = 0;
30
31
};
32
33
class
OksPipeline
34
{
35
public
:
36
OksPipeline
(
size_t
size
);
37
38
~OksPipeline
();
39
40
void
waitForCompletion
();
41
42
void
addJob
(
OksJob
* job );
43
44
private
:
45
46
struct
Worker
47
{
48
Worker
(
OksPipeline
& pipeline )
49
:
m_pipeline
( pipeline ),
50
m_idle
( true ),
51
m_shutdown
( false ),
52
m_stop
( false ),
53
m_running
( false )
54
{ ; }
55
56
void
run
();
57
58
bool
setJob
(
OksJob
* job );
59
60
void
shutdown
();
61
62
void
stop
();
63
64
private
:
65
OksPipeline
&
m_pipeline
;
66
boost::mutex
m_mutex
;
67
boost::condition
m_condition
;
68
bool
m_idle
;
69
bool
m_shutdown
;
70
bool
m_stop
;
71
bool
m_running
;
72
OksJob
*
m_job
;
73
};
74
75
typedef
std::shared_ptr<Worker>
WorkerPtr
;
76
77
private
:
78
friend
struct
Worker
;
79
80
bool
getJob
(
OksJob
* & job );
81
82
private
:
83
boost::mutex
m_mutex
;
84
boost::condition
m_condition
;
85
boost::barrier
m_barrier
;
86
boost::thread_group
m_pool
;
87
std::vector<WorkerPtr>
m_workers
;
88
std::queue<OksJob*>
m_jobs
;
89
};
90
91
}
// namespace oks
92
}
// namespace dunedaq
93
#endif
dunedaq::oks::OksJob
Definition
pipeline.hpp:25
dunedaq::oks::OksJob::~OksJob
virtual ~OksJob()
Definition
pipeline.hpp:28
dunedaq::oks::OksJob::run
virtual void run(void)=0
dunedaq::oks::OksPipeline::m_condition
boost::condition m_condition
Definition
pipeline.hpp:84
dunedaq::oks::OksPipeline::waitForCompletion
void waitForCompletion()
Definition
pipeline.cpp:117
dunedaq::oks::OksPipeline::m_jobs
std::queue< OksJob * > m_jobs
Definition
pipeline.hpp:88
dunedaq::oks::OksPipeline::m_workers
std::vector< WorkerPtr > m_workers
Definition
pipeline.hpp:87
dunedaq::oks::OksPipeline::m_mutex
boost::mutex m_mutex
Definition
pipeline.hpp:83
dunedaq::oks::OksPipeline::getJob
bool getJob(OksJob *&job)
Definition
pipeline.cpp:134
dunedaq::oks::OksPipeline::WorkerPtr
std::shared_ptr< Worker > WorkerPtr
Definition
pipeline.hpp:75
dunedaq::oks::OksPipeline::m_pool
boost::thread_group m_pool
Definition
pipeline.hpp:86
dunedaq::oks::OksPipeline::~OksPipeline
~OksPipeline()
Definition
pipeline.cpp:92
dunedaq::oks::OksPipeline::addJob
void addJob(OksJob *job)
Definition
pipeline.cpp:103
dunedaq::oks::OksPipeline::OksPipeline
OksPipeline(size_t size)
Definition
pipeline.cpp:81
dunedaq::oks::OksPipeline::m_barrier
boost::barrier m_barrier
Definition
pipeline.hpp:85
dunedaq::oks
Definition
OksConfiguration.hpp:24
dunedaq
Including Qt Headers.
Definition
module.cpp:16
dunedaq::size
FELIX Initialization std::string initerror FELIX queue timed std::string queuename Unexpected chunk size
Definition
FelixIssues.hpp:28
dunedaq::oks::OksPipeline::Worker
Definition
pipeline.hpp:47
dunedaq::oks::OksPipeline::Worker::m_stop
bool m_stop
Definition
pipeline.hpp:70
dunedaq::oks::OksPipeline::Worker::shutdown
void shutdown()
Definition
pipeline.cpp:66
dunedaq::oks::OksPipeline::Worker::stop
void stop()
Definition
pipeline.cpp:74
dunedaq::oks::OksPipeline::Worker::m_running
bool m_running
Definition
pipeline.hpp:71
dunedaq::oks::OksPipeline::Worker::m_mutex
boost::mutex m_mutex
Definition
pipeline.hpp:66
dunedaq::oks::OksPipeline::Worker::setJob
bool setJob(OksJob *job)
Definition
pipeline.cpp:19
dunedaq::oks::OksPipeline::Worker::Worker
Worker(OksPipeline &pipeline)
Definition
pipeline.hpp:48
dunedaq::oks::OksPipeline::Worker::m_condition
boost::condition m_condition
Definition
pipeline.hpp:67
dunedaq::oks::OksPipeline::Worker::m_idle
bool m_idle
Definition
pipeline.hpp:68
dunedaq::oks::OksPipeline::Worker::m_pipeline
OksPipeline & m_pipeline
Definition
pipeline.hpp:65
dunedaq::oks::OksPipeline::Worker::m_job
OksJob * m_job
Definition
pipeline.hpp:72
dunedaq::oks::OksPipeline::Worker::m_shutdown
bool m_shutdown
Definition
pipeline.hpp:69
dunedaq::oks::OksPipeline::Worker::run
void run()
Definition
pipeline.cpp:33
Generated on
for DUNE-DAQ by
1.17.0