DynExp
Highly flexible laboratory automation for dynamically changing experiments.
Loading...
Searching...
No Matches
DynExp::InstrumentBase::InstrumenThreadOnlyType Class Reference

Allow exclusive access to some of InstrumentBase's private methods to the instrument thread InstrumentThreadMain(). More...

Private Member Functions

constexpr InstrumenThreadOnlyType (InstrumentBase &Parent) noexcept
 Construcs an instance - one for each InstrumentBase instance.
 
auto HandleTask (InstrumentInstance &Instance)
 Executes and removes the next pending task from the instrument's task queue.
 
void UpdateData ()
 Inserts an update task (UpdateTaskBase) into the instrument's task queue. Override UpdateAdditionalData() to adjust behavior.
 
void SetException (std::exception_ptr Exception) noexcept
 Sets this instrument instance to an error state and tries to store the exception responsible for the error state in InstrumentData. If InstrumentData cannot be locked, still atomically sets an error flag.
 
void OnError ()
 Derived classes can perform critical shutdown actions after an error has occurred. Override OnErrorChild() to adjust behavior.
 
void SetInitialized ()
 Sets InstrumentBase::Initialized to true.
 

Private Attributes

InstrumentBaseParent
 Owning InstrumentBase instance.
 

Friends

class InstrumentBase
 
int InstrumentThreadMain (std::unique_ptr< RunnableInstance > &&, RunnableObject *)
 Instruments run in their own thread. This is the instrument thread's main function.
 

Detailed Description

Allow exclusive access to some of InstrumentBase's private methods to the instrument thread InstrumentThreadMain().

Definition at line 485 of file Instrument.h.

Constructor & Destructor Documentation

◆ InstrumenThreadOnlyType()

constexpr DynExp::InstrumentBase::InstrumenThreadOnlyType::InstrumenThreadOnlyType ( InstrumentBase Parent)
inlineconstexprprivatenoexcept

Construcs an instance - one for each InstrumentBase instance.

Parameters
ParentOwning InstrumentBase instance

Definition at line 494 of file Instrument.h.

Member Function Documentation

◆ HandleTask()

auto DynExp::InstrumentBase::InstrumenThreadOnlyType::HandleTask ( InstrumentInstance Instance)
inlineprivate

Executes and removes the next pending task from the instrument's task queue.

Parameters
InstanceHandle to the instrument thread's data
Returns
Returns how the instrument should proceed after handling a task at front of the task queue. Always indicates InstrumentBase::TaskHandlingContinuationType::Continue if there is no task to be handled.

Definition at line 496 of file Instrument.h.

◆ OnError()

void DynExp::InstrumentBase::InstrumenThreadOnlyType::OnError ( )
inlineprivate

Derived classes can perform critical shutdown actions after an error has occurred. Override OnErrorChild() to adjust behavior.

Definition at line 499 of file Instrument.h.

◆ SetException()

void DynExp::InstrumentBase::InstrumenThreadOnlyType::SetException ( std::exception_ptr  Exception)
inlineprivatenoexcept

Sets this instrument instance to an error state and tries to store the exception responsible for the error state in InstrumentData. If InstrumentData cannot be locked, still atomically sets an error flag.

Parameters
ExceptionException to store.

Definition at line 498 of file Instrument.h.

◆ SetInitialized()

void DynExp::InstrumentBase::InstrumenThreadOnlyType::SetInitialized ( )
inlineprivate

Sets InstrumentBase::Initialized to true.

Definition at line 500 of file Instrument.h.

◆ UpdateData()

void DynExp::InstrumentBase::InstrumenThreadOnlyType::UpdateData ( )
inlineprivate

Inserts an update task (UpdateTaskBase) into the instrument's task queue. Override UpdateAdditionalData() to adjust behavior.

Definition at line 497 of file Instrument.h.

Friends And Related Symbol Documentation

◆ InstrumentBase

friend class InstrumentBase
friend

Definition at line 487 of file Instrument.h.

◆ InstrumentThreadMain

int InstrumentThreadMain ( std::unique_ptr< RunnableInstance > &&  ,
RunnableObject  
)
friend

Instruments run in their own thread. This is the instrument thread's main function.

Parameters
InstancePtrPointer to a handle to the instrument thread's data related to the instrument running this thread. The instrument thread takes ownership of InstancePtr and is expected to let the lifetime of InstancePtr expire upon termination.
BaseObjectPointer to the instrument running this thread.
Returns
Util::DynExpErrorCodes::NoError if the thread terminated without an error, the respective error code otherwise.

Definition at line 8 of file Instrument.cpp.

Member Data Documentation

◆ Parent

InstrumentBase& DynExp::InstrumentBase::InstrumenThreadOnlyType::Parent
private

Owning InstrumentBase instance.

Definition at line 502 of file Instrument.h.


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