DynExp
Highly flexible laboratory automation for dynamically changing experiments.
DynExpInstr::gRPCInstrumentTasks::ExitTask< BaseInstr,, gRPCStubs > Class Template Reference

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

+ Inheritance diagram for DynExpInstr::gRPCInstrumentTasks::ExitTask< BaseInstr,, gRPCStubs >:

Protected Types

template<typename Type >
using dispatch_tag = DynExp::ExitTaskBase::dispatch_tag< Type >
 Refer to DynExp::ParamsBase::dispatch_tag. More...
 

Private Member Functions

void ExitFuncImpl (dispatch_tag< typename BaseInstr::ExitTaskType >, DynExp::InstrumentInstance &Instance) override final
 Deinitializes the respective instrument within the instrument inheritance hierarchy. Call ExitFuncImpl() of a derived instrument's exit task as the first command in a base instrument's exit task ExitFuncImpl() to ensure that derived instruments can shut down before base instruments. Overriding functions must throw an exception in case of an error. More...
 
virtual void ExitFuncImpl (dispatch_tag< ExitTask >, DynExp::InstrumentInstance &Instance)
 Deinitializes the respective instrument within the instrument inheritance hierarchy. Call ExitFuncImpl() of a derived instrument's exit task as the first command in a base instrument's exit task ExitFuncImpl() to ensure that derived instruments can shut down before base instruments. Overriding functions must throw an exception in case of an error. More...
 

Detailed Description

template<typename BaseInstr, std::enable_if_t< std::is_base_of_v< DynExp::InstrumentBase, BaseInstr >, int >, typename... gRPCStubs>
class DynExpInstr::gRPCInstrumentTasks::ExitTask< BaseInstr,, gRPCStubs >

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

Template Parameters
BaseInstrMeta instrument this class derives from.
enable_if_tInternal check whether BaseInstr is derived from DynExp::InstrumentBase. Pass 0.
...gRPCStubsgRPC stub types which this gRPC client expects from the server to be provided. The order of stub types should match the order of service types in the gRPCServices list of the respective DynExpModule::gRPCModule gRPC server.

Definition at line 72 of file gRPCInstrument.h.

Member Typedef Documentation

◆ dispatch_tag

template<typename BaseInstr , std::enable_if_t< std::is_base_of_v< DynExp::InstrumentBase, BaseInstr >, int > , typename... gRPCStubs>
template<typename Type >
using DynExpInstr::gRPCInstrumentTasks::ExitTask< BaseInstr,, gRPCStubs >::dispatch_tag = DynExp::ExitTaskBase::dispatch_tag<Type>
protected

Refer to DynExp::ParamsBase::dispatch_tag.

Template Parameters
Type(derived from DynExp::ExitTaskBase) to instantiate the dispatch tag template with.

Definition at line 79 of file gRPCInstrument.h.

Member Function Documentation

◆ ExitFuncImpl() [1/2]

template<typename BaseInstr , std::enable_if_t< std::is_base_of_v< DynExp::InstrumentBase, BaseInstr >, int > , typename... gRPCStubs>
virtual void DynExpInstr::gRPCInstrumentTasks::ExitTask< BaseInstr,, gRPCStubs >::ExitFuncImpl ( dispatch_tag< ExitTask< BaseInstr,, gRPCStubs > >  ,
DynExp::InstrumentInstance Instance 
)
inlineprivatevirtual

Deinitializes the respective instrument within the instrument inheritance hierarchy. Call ExitFuncImpl() of a derived instrument's exit task as the first command in a base instrument's exit task ExitFuncImpl() to ensure that derived instruments can shut down before base instruments. Overriding functions must throw an exception in case of an error.

Parameters
InstanceHandle to the instrument thread's data

Definition at line 105 of file gRPCInstrument.h.

◆ ExitFuncImpl() [2/2]

template<typename BaseInstr , std::enable_if_t< std::is_base_of_v< DynExp::InstrumentBase, BaseInstr >, int > , typename... gRPCStubs>
void DynExpInstr::gRPCInstrumentTasks::ExitTask< BaseInstr,, gRPCStubs >::ExitFuncImpl ( dispatch_tag< typename BaseInstr::ExitTaskType >  ,
DynExp::InstrumentInstance Instance 
)
inlinefinaloverrideprivate

Deinitializes the respective instrument within the instrument inheritance hierarchy. Call ExitFuncImpl() of a derived instrument's exit task as the first command in a base instrument's exit task ExitFuncImpl() to ensure that derived instruments can shut down before base instruments. Overriding functions must throw an exception in case of an error.

Parameters
InstanceHandle to the instrument thread's data

Definition at line 85 of file gRPCInstrument.h.


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