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
virtual
~OksJob
() { ; }
28
virtual
void
run
(
void
) = 0;
29
};
30
31
class
OksPipeline
32
{
33
public
:
34
OksPipeline
(
size_t
size
);
35
36
~OksPipeline
();
37
38
void
waitForCompletion
();
39
40
void
addJob
(
OksJob
* job);
41
42
private
:
43
struct
Worker
44
{
45
Worker
(
OksPipeline
& pipeline)
46
:
m_pipeline
(pipeline)
47
,
m_idle
(true)
48
,
m_shutdown
(false)
49
,
m_stop
(false)
50
,
m_running
(false)
51
{
52
;
53
}
54
55
void
run
();
56
57
bool
setJob
(
OksJob
* job);
58
59
void
shutdown
();
60
61
void
stop
();
62
63
private
:
64
OksPipeline
&
m_pipeline
;
65
boost::mutex
m_mutex
;
66
boost::condition
m_condition
;
67
bool
m_idle
;
68
bool
m_shutdown
;
69
bool
m_stop
;
70
bool
m_running
;
71
OksJob
*
m_job
;
72
};
73
74
typedef
std::shared_ptr<Worker>
WorkerPtr
;
75
76
private
:
77
friend
struct
Worker
;
78
79
bool
getJob
(
OksJob
*& job);
80
81
private
:
82
boost::mutex
m_mutex
;
83
boost::condition
m_condition
;
84
boost::barrier
m_barrier
;
85
boost::thread_group
m_pool
;
86
std::vector<WorkerPtr>
m_workers
;
87
std::queue<OksJob*>
m_jobs
;
88
};
89
90
}
// namespace oks
91
}
// namespace dunedaq
92
#endif
dunedaq::oks::OksJob
Definition
pipeline.hpp:25
dunedaq::oks::OksJob::~OksJob
virtual ~OksJob()
Definition
pipeline.hpp:27
dunedaq::oks::OksJob::run
virtual void run(void)=0
dunedaq::oks::OksPipeline::m_condition
boost::condition m_condition
Definition
pipeline.hpp:83
dunedaq::oks::OksPipeline::waitForCompletion
void waitForCompletion()
Definition
pipeline.cpp:111
dunedaq::oks::OksPipeline::m_jobs
std::queue< OksJob * > m_jobs
Definition
pipeline.hpp:87
dunedaq::oks::OksPipeline::m_workers
std::vector< WorkerPtr > m_workers
Definition
pipeline.hpp:86
dunedaq::oks::OksPipeline::m_mutex
boost::mutex m_mutex
Definition
pipeline.hpp:82
dunedaq::oks::OksPipeline::getJob
bool getJob(OksJob *&job)
Definition
pipeline.cpp:126
dunedaq::oks::OksPipeline::WorkerPtr
std::shared_ptr< Worker > WorkerPtr
Definition
pipeline.hpp:74
dunedaq::oks::OksPipeline::m_pool
boost::thread_group m_pool
Definition
pipeline.hpp:85
dunedaq::oks::OksPipeline::addJob
void addJob(OksJob *job)
Definition
pipeline.cpp:99
dunedaq::oks::OksPipeline::OksPipeline
OksPipeline(size_t size)
Definition
pipeline.cpp:79
dunedaq::oks::OksPipeline::m_barrier
boost::barrier m_barrier
Definition
pipeline.hpp:84
dunedaq::oks
Definition
SchemaCommand.hpp:17
dunedaq
The DUNE-DAQ namespace.
Definition
cib_utilities.cpp:5
dunedaq::size
FELIX Initialization std::string initerror FELIX queue timed std::string queuename Unexpected chunk size
Definition
FelixIssues.hpp:30
dunedaq::oks::OksPipeline::Worker
Definition
pipeline.hpp:44
dunedaq::oks::OksPipeline::Worker::m_stop
bool m_stop
Definition
pipeline.hpp:69
dunedaq::oks::OksPipeline::Worker::shutdown
void shutdown()
Definition
pipeline.cpp:64
dunedaq::oks::OksPipeline::Worker::stop
void stop()
Definition
pipeline.cpp:72
dunedaq::oks::OksPipeline::Worker::m_running
bool m_running
Definition
pipeline.hpp:70
dunedaq::oks::OksPipeline::Worker::m_mutex
boost::mutex m_mutex
Definition
pipeline.hpp:65
dunedaq::oks::OksPipeline::Worker::setJob
bool setJob(OksJob *job)
Definition
pipeline.cpp:19
dunedaq::oks::OksPipeline::Worker::Worker
Worker(OksPipeline &pipeline)
Definition
pipeline.hpp:45
dunedaq::oks::OksPipeline::Worker::m_condition
boost::condition m_condition
Definition
pipeline.hpp:66
dunedaq::oks::OksPipeline::Worker::m_idle
bool m_idle
Definition
pipeline.hpp:67
dunedaq::oks::OksPipeline::Worker::m_pipeline
OksPipeline & m_pipeline
Definition
pipeline.hpp:64
dunedaq::oks::OksPipeline::Worker::m_job
OksJob * m_job
Definition
pipeline.hpp:71
dunedaq::oks::OksPipeline::Worker::m_shutdown
bool m_shutdown
Definition
pipeline.hpp:68
dunedaq::oks::OksPipeline::Worker::run
void run()
Definition
pipeline.cpp:32
Generated on
for DUNE-DAQ by
1.18.0