DynExp
Highly flexible laboratory automation for dynamically changing experiments.
Loading...
Searching...
No Matches
DynExpInstr::InputPortTasks::UpdateTask Class Reference

Defines a task for updating an instrument within an instrument inheritance hierarchy. Each instrument (indirectly) derived from class InstrumentBase must be accompanied by an update task class derived from UpdateTaskBase. Even if the task does not do anything, at least it has to call UpdateTaskBase::UpdateFuncImpl() of the derived instrument's update task class. More...

#include <InputPort.h>

+ Inheritance diagram for DynExpInstr::InputPortTasks::UpdateTask:

Private Member Functions

void UpdateFuncImpl (dispatch_tag< DataStreamInstrumentTasks::UpdateTask >, DynExp::InstrumentInstance &Instance) override final
 Updates the respective instrument within the instrument inheritance hierarchy. Call UpdateFuncImpl() of a derived instrument's update task as the last command in a base instrument's update task UpdateFuncImpl() to ensure that derived instruments are updated after base instruments. Overriding functions must throw an exception in case of an error.
 
virtual void UpdateFuncImpl (dispatch_tag< UpdateTask >, DynExp::InstrumentInstance &Instance)
 Updates the respective instrument within the instrument inheritance hierarchy. Call UpdateFuncImpl() of a derived instrument's update task as the last command in a base instrument's update task UpdateFuncImpl() to ensure that derived instruments are updated after base instruments. Overriding functions must throw an exception in case of an error.
 

Additional Inherited Members

- Public Types inherited from DynExp::TaskBase
enum class  TaskState {
  Waiting , Locked , Running , Finished ,
  Failed , Aborted
}
 Defines states an instrument's task can undergo. Possible state transitions are: More...
 
- Public Member Functions inherited from DynExp::TaskBase
 TaskBase (CallbackType CallbackFunc=nullptr, std::chrono::system_clock::time_point DeferUntil={}) noexcept
 Constructs an instrument task.
 
 TaskBase (TaskBase &Other, std::chrono::system_clock::time_point DeferUntil={}) noexcept
 Constructs an instrument task, moving CallbackFunc from another task to this task. The other task is left with a CallbackFunc that will not be executed anymore after this operation. Using this constructor is useful, if a running task enqueues (an)other task(s). In this case, the callback function should not be called by the original task but by the last task in this chain of tasks.
 
virtual ~TaskBase ()=0
 The destructor aborts a waiting task setting State to TaskState::Aborted. Then, it calls CallbackFunc with a default-constructed ExceptionContainer instance.
 
auto GetDeferUntil () const noexcept
 Getter for the instrument task's earliest execution time point.
 
TaskState GetState () const noexcept
 Getter for the instrument task's current state.
 
bool IsLocked () const noexcept
 Determines whether the task is locked.
 
bool IsAborting () const noexcept
 Determines whether the task should abort. A derived task is encouraged to call this method before performing any action or in between the individual steps of a more complex action.
 
int GetErrorCode () const noexcept
 Getter for the error code related to an error possibly occurred while the task was executed.
 
void Abort ()
 Requests the task to abort. There is no guarantee that the derived task does call IsAborting() to check whether it should abort. The task could have finished already or the implementation of RunChild() in the derived class does not allow for aborting.
 
- Public Attributes inherited from DynExp::TaskBase
InstrumentBaseOnlyType InstrumentBaseOnly
 Allow exclusive access to some of TaskBase's private methods to InstrumentBase.
 
InstrumentDataBaseOnlyType InstrumentDataBaseOnly
 Allow exclusive access to some of TaskBase's private methods to InstrumentDataBase.
 

Detailed Description

Defines a task for updating an instrument within an instrument inheritance hierarchy. Each instrument (indirectly) derived from class InstrumentBase must be accompanied by an update task class derived from UpdateTaskBase. Even if the task does not do anything, at least it has to call UpdateTaskBase::UpdateFuncImpl() of the derived instrument's update task class.

Definition at line 66 of file InputPort.h.

Member Function Documentation

◆ UpdateFuncImpl() [1/2]

void DynExpInstr::InputPortTasks::UpdateTask::UpdateFuncImpl ( dispatch_tag< DataStreamInstrumentTasks::UpdateTask ,
DynExp::InstrumentInstance Instance 
)
inlinefinaloverrideprivatevirtual

Updates the respective instrument within the instrument inheritance hierarchy. Call UpdateFuncImpl() of a derived instrument's update task as the last command in a base instrument's update task UpdateFuncImpl() to ensure that derived instruments are updated after base instruments. Overriding functions must throw an exception in case of an error.

Parameters
InstanceHandle to the instrument thread's data

Reimplemented from DynExpInstr::DataStreamInstrumentTasks::UpdateTask.

Definition at line 68 of file InputPort.h.

◆ UpdateFuncImpl() [2/2]

virtual void DynExpInstr::InputPortTasks::UpdateTask::UpdateFuncImpl ( dispatch_tag< UpdateTask ,
DynExp::InstrumentInstance Instance 
)
inlineprivatevirtual

Updates the respective instrument within the instrument inheritance hierarchy. Call UpdateFuncImpl() of a derived instrument's update task as the last command in a base instrument's update task UpdateFuncImpl() to ensure that derived instruments are updated after base instruments. Overriding functions must throw an exception in case of an error.

Parameters
InstanceHandle to the instrument thread's data

Reimplemented in DynExpInstr::AnalogInTasks::UpdateTask, and DynExpInstr::DigitalInTasks::UpdateTask.

Definition at line 73 of file InputPort.h.


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