ChimeraTK-DeviceAccess
03.18.00
|
The Domain is the thread-safe entry point for each distribution tree. More...
#include <Domain.h>
Public Member Functions | |
virtual void | sendException (const std::exception_ptr &e) noexcept=0 |
virtual void | deactivate ()=0 |
virtual | ~Domain ()=default |
std::lock_guard< std::mutex > | getDomainLock () |
Protected Member Functions | |
bool | unsafeGetIsActive () const |
Friend classes are allowed to read the _isActiveFlag without acquiring the mutex. More... | |
Protected Attributes | |
std::mutex | _mutex |
bool | _isActive {false} |
Friends | |
class | AsyncAccessorManager |
class | TriggeredPollDistributor |
template<typename BackendSpecificDataType > | |
class | SubDomain |
class | MuxedInterruptDistributor |
template<typename SourceType > | |
class | SourceTypedAsyncAccessorManager |
template<typename UserType > | |
class | AsyncNDRegisterAccessor |
The Domain is the thread-safe entry point for each distribution tree.
Distributing data to accessors, sending exceptions and subscription of new accessors will all happen from different threads. This class implements a central mutex such that only one operation on the distribution three is executed at the same time.
This base class is providing the mutex and the _isActive flag, which is needed throughout the distribution tree. It also has a virtual setException() function to a allow sending exception from code that does not know about the backend-specific data type.
All other functions depend on a backend-specific data type, the according SubDomain and distributors, and are implemented in the templated DomainImpl.
|
virtualdefault |
|
pure virtual |
Implemented in ChimeraTK::async::DomainImpl< BackendDataType >.
|
inline |
|
pure virtualnoexcept |
Implemented in ChimeraTK::async::DomainImpl< BackendDataType >.
|
inlineprotected |
|
friend |
|
friend |
|
friend |
|
friend |
|
friend |
|
friend |