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

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

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

Protected Types

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

Private Member Functions

void InitFuncImpl (dispatch_tag< typename BaseInstr::InitTaskType >, DynExp::InstrumentInstance &Instance) override final
 Initializes the respective instrument within the instrument inheritance hierarchy. Call InitFuncImpl() of a derived instrument's initialization task as the last command in a base instrument's initialization task InitFuncImpl() to ensure that derived instruments are initialized after base instruments. Overriding functions must throw an exception in case of an error. More...
 
virtual void InitFuncImpl (dispatch_tag< InitTask< BaseInstr, 0, gRPCStubs... >>, DynExp::InstrumentInstance &Instance)
 Initializes the respective instrument within the instrument inheritance hierarchy. Call InitFuncImpl() of a derived instrument's initialization task as the last command in a base instrument's initialization task InitFuncImpl() to ensure that derived instruments are initialized after 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::InitTask< BaseInstr,, gRPCStubs >

Defines a task for initializing an instrument within an instrument inheritance hierarchy. Each instrument (indirectly) derived from class InstrumentBase must be accompanied by an initialization task class derived from InitTaskBase. Even if the task does not do anything, at least it has to call InitTaskBase::InitFuncImpl() of the derived instrument's initialization 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 34 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::InitTask< BaseInstr,, gRPCStubs >::dispatch_tag = DynExp::InitTaskBase::dispatch_tag<Type>
protected

Refer to DynExp::ParamsBase::dispatch_tag.

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

Definition at line 41 of file gRPCInstrument.h.

Member Function Documentation

◆ InitFuncImpl() [1/2]

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

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

Parameters
InstanceHandle to the instrument thread's data

Definition at line 64 of file gRPCInstrument.h.

◆ InitFuncImpl() [2/2]

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

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

Parameters
InstanceHandle to the instrument thread's data

Definition at line 48 of file gRPCInstrument.h.


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