DUNE-DAQ
DUNE Trigger and Data Acquisition software
Toggle main menu visibility
Loading...
Searching...
No Matches
dunedaq
sourcecode
datahandlinglibs
include
datahandlinglibs
models
detail
EmptyFragmentRequestHandlerModel.hxx
Go to the documentation of this file.
1
// Declarations for EmptyFragmentRequestHandlerModel
2
3
namespace
dunedaq
{
4
namespace
datahandlinglibs
{
5
6
// Override the issue_request implementation of the DefaultRequestHandlerModel
7
// in order to always respond with empty fragments.
8
template
<
class
ReadoutType,
class
LatencyBufferType>
9
void
10
EmptyFragmentRequestHandlerModel<ReadoutType, LatencyBufferType>::issue_request
(
11
dfmessages::DataRequest
datarequest,
bool
is_retry)
12
{
13
auto
frag_header =
inherited::create_fragment_header
(datarequest);
14
frag_header.status_bits |= (0x1 <<
static_cast<
size_t
>
(
daqdataformats::FragmentStatusBits::kEmptyFragment
));
15
auto
fragment = std::make_unique<daqdataformats::Fragment>(std::vector<std::pair<void*, size_t>>());
16
fragment->set_header_fields(frag_header);
17
18
TLOG_DEBUG
(
TLVL_WORK_STEPS
) <<
"DLH is configured to send empty fragment"
;
19
20
try
{
// Push to Fragment queue
21
TLOG_DEBUG
(
TLVL_QUEUE_PUSH
) <<
"Sending fragment with trigger_number "
<< fragment->get_trigger_number()
22
<<
", run number "
<< fragment->get_run_number() <<
", and SourceID "
23
<< fragment->get_element_id();
24
//auto frag = std::make_pair(std::move(fragment), datarequest.data_destination);
25
get_iom_sender<std::unique_ptr<daqdataformats::Fragment>
>(datarequest.
data_destination
)
26
->send(std::move(fragment),
inherited::m_fragment_send_timeout_ms
);
27
}
catch
(
const
ers::Issue
& excpt) {
28
ers::warning
(CannotWriteToQueue(
29
ERS_HERE
,
DefaultRequestHandlerModel<ReadoutType, LatencyBufferType>::m_sourceid
,
"fragment queue"
, excpt));
30
}
31
}
32
33
}
// namespace datahandlinglibs
34
}
// namespace dunedaq
TLVL_WORK_STEPS
@ TLVL_WORK_STEPS
Definition
IfaceWrapper.cpp:52
ERS_HERE
#define ERS_HERE
Definition
LocalContext.hpp:141
TLVL_QUEUE_PUSH
@ TLVL_QUEUE_PUSH
Definition
ReadoutLogging.hpp:24
dunedaq::datahandlinglibs::DefaultRequestHandlerModel::m_fragment_send_timeout_ms
int m_fragment_send_timeout_ms
Definition
DefaultRequestHandlerModel.hpp:310
dunedaq::datahandlinglibs::DefaultRequestHandlerModel::create_fragment_header
daqdataformats::FragmentHeader create_fragment_header(const dfmessages::DataRequest &dr)
Definition
DefaultRequestHandlerModel.hpp:169
dunedaq::datahandlinglibs::DefaultRequestHandlerModel::m_sourceid
daqdataformats::SourceID m_sourceid
Definition
DefaultRequestHandlerModel.hpp:272
dunedaq::datahandlinglibs::EmptyFragmentRequestHandlerModel::issue_request
void issue_request(dfmessages::DataRequest datarequest, bool is_retry=false) override
Issue a data request to the request handler.
Definition
EmptyFragmentRequestHandlerModel.hxx:10
ers::Issue
Base class for any user define issue.
Definition
Issue.hpp:80
TLOG_DEBUG
#define TLOG_DEBUG(lvl,...)
Definition
Logging.hpp:112
dunedaq::daqdataformats::FragmentStatusBits::kEmptyFragment
@ kEmptyFragment
This Fragment contains no data.
Definition
FragmentHeader.hpp:83
dunedaq::datahandlinglibs
Definition
DataHandlingConcept.hpp:16
dunedaq
Including Qt Headers.
Definition
module.cpp:16
dunedaq::get_iom_sender
static std::shared_ptr< iomanager::SenderConcept< Datatype > > get_iom_sender(iomanager::ConnectionId const &id)
Definition
IOManager.hxx:171
ers::warning
void warning(const Issue &issue)
Definition
ers.hpp:126
dunedaq::dfmessages::DataRequest
This message represents a request for data sent to a single component of the DAQ.
Definition
DataRequest.hpp:26
dunedaq::dfmessages::DataRequest::data_destination
std::string data_destination
Definition
DataRequest.hpp:40
Generated on
for DUNE-DAQ by
1.17.0