ChimeraTK-DeviceAccess  03.18.00
ChimeraTK::async::SubDomain< BackendSpecificDataType > Class Template Reference

Send backend-specific asynchronous data to different distributors: More...

#include <MuxedInterruptDistributor.h>

+ Collaboration diagram for ChimeraTK::async::SubDomain< BackendSpecificDataType >:

Public Member Functions

 SubDomain (boost::shared_ptr< DeviceBackend > backend, std::vector< size_t > qualifiedAsyncId, boost::shared_ptr< MuxedInterruptDistributor > parent, boost::shared_ptr< Domain > domain)
 
void activate (BackendSpecificDataType, VersionNumber v)
 
void distribute (BackendSpecificDataType, VersionNumber v)
 
void sendException (const std::exception_ptr &e)
 
template<typename DistributorType >
boost::shared_ptr< AsyncAccessorManagergetAccessorManager (std::vector< size_t > const &qualifiedSubDomainId)
 Get an AsyncAccessorManager for a specific SubDomain. More...
 
boost::shared_ptr< DomaingetDomain ()
 
std::vector< size_t > getId ()
 
boost::shared_ptr< DeviceBackendgetBackend ()
 
template<typename UserType >
boost::shared_ptr< AsyncNDRegisterAccessor< UserType > > subscribe (RegisterPath name, size_t numberOfWords, size_t wordOffsetInRegister, AccessModeFlags flags)
 

Protected Attributes

std::vector< size_t > _id
 
boost::shared_ptr< DeviceBackend_backend
 
boost::weak_ptr< MuxedInterruptDistributor_muxedInterruptDistributor
 
boost::weak_ptr< TriggeredPollDistributor_pollDistributor
 
boost::weak_ptr< VariableDistributor< std::nullptr_t > > _variableDistributor
 
boost::shared_ptr< MuxedInterruptDistributor_parent
 
boost::shared_ptr< Domain_domain
 

Friends

template<typename UserType , typename BackendDataType >
class detail::SubDomainSubscriptionImplementor
 

Detailed Description

template<typename BackendSpecificDataType>
class ChimeraTK::async::SubDomain< BackendSpecificDataType >

Send backend-specific asynchronous data to different distributors:

Definition at line 23 of file MuxedInterruptDistributor.h.

Constructor & Destructor Documentation

◆ SubDomain()

template<typename BackendSpecificDataType >
ChimeraTK::async::SubDomain< BackendSpecificDataType >::SubDomain ( boost::shared_ptr< DeviceBackend backend,
std::vector< size_t >  qualifiedAsyncId,
boost::shared_ptr< MuxedInterruptDistributor parent,
boost::shared_ptr< Domain domain 
)

Definition at line 93 of file SubDomain.h.

Member Function Documentation

◆ activate()

template<typename BackendSpecificDataType >
void ChimeraTK::async::SubDomain< BackendSpecificDataType >::activate ( BackendSpecificDataType  data,
VersionNumber  v 
)

Definition at line 208 of file SubDomain.h.

+ Here is the caller graph for this function:

◆ distribute()

template<typename BackendSpecificDataType >
void ChimeraTK::async::SubDomain< BackendSpecificDataType >::distribute ( BackendSpecificDataType  data,
VersionNumber  v 
)

Definition at line 187 of file SubDomain.h.

◆ getAccessorManager()

template<typename BackendSpecificDataType >
template<typename DistributorType >
boost::shared_ptr< AsyncAccessorManager > ChimeraTK::async::SubDomain< BackendSpecificDataType >::getAccessorManager ( std::vector< size_t > const &  qualifiedSubDomainId)

Get an AsyncAccessorManager for a specific SubDomain.

The qualified SubDomain ID is relative to (and including) this SubDomain. If the ID has a length 1, it will return the AsyncAccessorManager for the matching DistributorType (TriggeredPollDistributor or VariableDistributor<BackendSpecificDataType>). If the ID is longer, it will get the distributor from the matching SubDomain further down the hierarchy. The Distributor and intermediate MuxedInterruptDistributors/SubDomains are created if they are not there.

Definition at line 111 of file SubDomain.h.

+ Here is the call graph for this function:

◆ getBackend()

template<typename BackendSpecificDataType >
boost::shared_ptr<DeviceBackend> ChimeraTK::async::SubDomain< BackendSpecificDataType >::getBackend ( )
inline

Definition at line 54 of file SubDomain.h.

◆ getDomain()

template<typename BackendSpecificDataType >
boost::shared_ptr<Domain> ChimeraTK::async::SubDomain< BackendSpecificDataType >::getDomain ( )
inline

Definition at line 52 of file SubDomain.h.

◆ getId()

template<typename BackendSpecificDataType >
std::vector<size_t> ChimeraTK::async::SubDomain< BackendSpecificDataType >::getId ( )
inline

Definition at line 53 of file SubDomain.h.

+ Here is the caller graph for this function:

◆ sendException()

template<typename BackendSpecificDataType >
void ChimeraTK::async::SubDomain< BackendSpecificDataType >::sendException ( const std::exception_ptr &  e)

Definition at line 226 of file SubDomain.h.

◆ subscribe()

template<typename BackendSpecificDataType >
template<typename UserType >
boost::shared_ptr< AsyncNDRegisterAccessor< UserType > > ChimeraTK::async::SubDomain< BackendSpecificDataType >::subscribe ( RegisterPath  name,
size_t  numberOfWords,
size_t  wordOffsetInRegister,
AccessModeFlags  flags 
)

Definition at line 101 of file SubDomain.h.

+ Here is the call graph for this function:

Friends And Related Function Documentation

◆ detail::SubDomainSubscriptionImplementor

template<typename BackendSpecificDataType >
template<typename UserType , typename BackendDataType >
friend class detail::SubDomainSubscriptionImplementor
friend

Definition at line 71 of file SubDomain.h.

Member Data Documentation

◆ _backend

template<typename BackendSpecificDataType >
boost::shared_ptr<DeviceBackend> ChimeraTK::async::SubDomain< BackendSpecificDataType >::_backend
protected

Definition at line 63 of file SubDomain.h.

◆ _domain

template<typename BackendSpecificDataType >
boost::shared_ptr<Domain> ChimeraTK::async::SubDomain< BackendSpecificDataType >::_domain
protected

Definition at line 68 of file SubDomain.h.

◆ _id

template<typename BackendSpecificDataType >
std::vector<size_t> ChimeraTK::async::SubDomain< BackendSpecificDataType >::_id
protected

Definition at line 61 of file SubDomain.h.

◆ _muxedInterruptDistributor

template<typename BackendSpecificDataType >
boost::weak_ptr<MuxedInterruptDistributor> ChimeraTK::async::SubDomain< BackendSpecificDataType >::_muxedInterruptDistributor
protected

Definition at line 64 of file SubDomain.h.

◆ _parent

template<typename BackendSpecificDataType >
boost::shared_ptr<MuxedInterruptDistributor> ChimeraTK::async::SubDomain< BackendSpecificDataType >::_parent
protected

Definition at line 67 of file SubDomain.h.

◆ _pollDistributor

template<typename BackendSpecificDataType >
boost::weak_ptr<TriggeredPollDistributor> ChimeraTK::async::SubDomain< BackendSpecificDataType >::_pollDistributor
protected

Definition at line 65 of file SubDomain.h.

◆ _variableDistributor

template<typename BackendSpecificDataType >
boost::weak_ptr<VariableDistributor<std::nullptr_t> > ChimeraTK::async::SubDomain< BackendSpecificDataType >::_variableDistributor
protected

Definition at line 66 of file SubDomain.h.


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