ifw-daq 3.1.0
IFW Data Acquisition modules
Loading...
Searching...
No Matches
Classes | Public Types | Public Member Functions | List of all members
daq::dpm::SchedulerImpl Class Reference

#include <scheduler.hpp>

+ Inheritance diagram for daq::dpm::SchedulerImpl:

Public Types

using DaqControllerFactory = std::function< std::unique_ptr< DaqController >(std::unique_ptr< DaqWorkspace >, Resources &)>
 
- Public Types inherited from daq::dpm::Scheduler
using StatusSignal = boost::signals2::signal< void(Status const &)>
 Signals.
 

Public Member Functions

 SchedulerImpl (rad::IoExecutor &executor, Workspace &workspace, DaqControllerFactory daq_controller_factory, SchedulerOptions const &options)
 Constructs a scheduler loading information from workspace ws.
 
std::string QueueDaq (std::string const &dp_spec, std::string const &status) override
 Queues DAQ for processing.
 
void AbortDaq (std::string const &) override
 Abort merging DAQ identified by id.
 
bool IsQueued (std::string const &id) const noexcept override
 Queries if DAQ with ID has been queued before in the current workspace.
 
Status GetDaqStatus (std::string const &id) const override
 Queries current DAQ status, possibly from last recorded status in workspace.
 
std::vector< std::string > GetQueue () const noexcept override
 Queries current DAQ queue.
 
void Start () override
 Start/stop operations.
 
void Stop () override
 
Signals.
boost::signals2::connection ConnectStatus (StatusSignal::slot_type const &slot) override
 Signals.
 
- Public Member Functions inherited from daq::dpm::Scheduler
virtual ~Scheduler ()
 
virtual void Start ()=0
 Start/stop operations.
 
virtual void Stop ()=0
 
virtual std::string QueueDaq (std::string const &dp_spec, std::string const &status)=0
 Queues DAQ for processing.
 
virtual void AbortDaq (std::string const &id)=0
 Abort merging DAQ identified by id.
 
virtual bool IsQueued (std::string const &id) const noexcept=0
 Queries if DAQ with ID has been queued before in the current workspace.
 
virtual Status GetDaqStatus (std::string const &id) const =0
 Queries current DAQ status, possibly from last recorded status in workspace.
 
virtual std::vector< std::string > GetQueue () const noexcept=0
 Queries current DAQ queue.
 

Detailed Description

Definition at line 295 of file scheduler.hpp.

Member Typedef Documentation

◆ DaqControllerFactory

using daq::dpm::SchedulerImpl::DaqControllerFactory = std::function<std::unique_ptr<DaqController>(std::unique_ptr<DaqWorkspace>, Resources&)>

Definition at line 297 of file scheduler.hpp.

Constructor & Destructor Documentation

◆ SchedulerImpl()

daq::dpm::SchedulerImpl::SchedulerImpl ( rad::IoExecutor executor,
Workspace workspace,
DaqControllerFactory  daq_controller_factory,
SchedulerOptions const &  options 
)

Constructs a scheduler loading information from workspace ws.

The scheduler will load the stored list of queued DAQs and schedule operations to be performed in priority order.

Definition at line 98 of file scheduler.cpp.

Member Function Documentation

◆ AbortDaq()

void daq::dpm::SchedulerImpl::AbortDaq ( std::string const &  id)
overridevirtual

Abort merging DAQ identified by id.

Note
Workspace related to this will be purged.
Parameters
idDAQ id.
Exceptions
std::invalid_argumentif DAQ is unknown.

Implements daq::dpm::Scheduler.

Definition at line 218 of file scheduler.cpp.

◆ ConnectStatus()

boost::signals2::connection daq::dpm::SchedulerImpl::ConnectStatus ( StatusSignal::slot_type const &  slot)
overridevirtual

Signals.

Implements daq::dpm::Scheduler.

Definition at line 276 of file scheduler.cpp.

◆ GetDaqStatus()

Status daq::dpm::SchedulerImpl::GetDaqStatus ( std::string const &  id) const
overridevirtual

Queries current DAQ status, possibly from last recorded status in workspace.

Parameters
idDAQ id.
Returns
Merge status of id.
Exceptions
std::invalid_argumentif DAQ is not known.

Implements daq::dpm::Scheduler.

Definition at line 197 of file scheduler.cpp.

◆ GetQueue()

std::vector< std::string > daq::dpm::SchedulerImpl::GetQueue ( ) const
overridevirtualnoexcept

Queries current DAQ queue.

Returns
list of DAQs pending or already started to be merged.

Implements daq::dpm::Scheduler.

Definition at line 214 of file scheduler.cpp.

◆ IsQueued()

bool daq::dpm::SchedulerImpl::IsQueued ( std::string const &  id) const
overridevirtualnoexcept

Queries if DAQ with ID has been queued before in the current workspace.

Parameters
idDAQ id.
Returns
true if DAQ is in the merge queue, false otherwise.
Exceptions
std::invalid_argumentif DAQ is not known.

Implements daq::dpm::Scheduler.

Definition at line 193 of file scheduler.cpp.

◆ QueueDaq()

std::string daq::dpm::SchedulerImpl::QueueDaq ( std::string const &  dp_spec,
std::string const &  status 
)
overridevirtual

Queues DAQ for processing.

Note
Scheduler is responsible for creating unique local names for input files.
Parameters
dp_specJSON encoded Data Product Specification. If parsing fails a std::invalid_argument will be thrown.
statusJSON encoded daq::Status. May be an empty string in which case a default initial status will be used.
Returns
DAQ id on success.
Exceptions
std::invalid_argumentif dp_spec is invalid or is already queued.

Implements daq::dpm::Scheduler.

Definition at line 131 of file scheduler.cpp.

◆ Start()

void daq::dpm::SchedulerImpl::Start ( )
overridevirtual

Start/stop operations.

This assumes the implementation has an internal scheduler that it uses.

Implements daq::dpm::Scheduler.

Definition at line 122 of file scheduler.cpp.

◆ Stop()

void daq::dpm::SchedulerImpl::Stop ( )
overridevirtual

Implements daq::dpm::Scheduler.

Definition at line 127 of file scheduler.cpp.


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