10 template<
typename UserType>
138 bool mayReplaceOther(
const boost::shared_ptr<TransferElement const>& other)
const override {
139 if(
this == other.get()) {
148 return {boost::enable_shared_from_this<TransferElement>::shared_from_this()};
153 std::list<boost::shared_ptr<TransferElement>> r;
249 this->
_readQueue.push_exception(std::current_exception());
254 throw ChimeraTK::detail::DiscardValueException();
258 this->
_readQueue.push_exception(std::current_exception());
Set of AccessMode flags with additional functionality for an easier handling.
N-dimensional register accessor.
std::vector< std::vector< UserType > > buffer_2D
Buffer of converted data elements.
AccessModeFlags _accessModeFlags
The access mode flags for this transfer element.
std::exception_ptr _activeException
Exception to be rethrown in postXXX() in case hasSeenException == true Can be set via setActiveExcept...
void interrupt_impl(QUEUE_TYPE &dataTransportQueue)
Implementation of interrupt()
VersionNumber _versionNumber
The version number of the last successful transfer.
cppext::future_queue< void > _readQueue
The queue for asynchronous read transfers.
Special accessor used to test the behaviour of the TransferElement base class and the TransferGroup.
std::set< TransferElementID > _listMayReplaceElements
bool isReadOnly() const override
Check if transfer element is read only, i.e.
size_t _postWrite_counter
bool doWriteTransfer(ChimeraTK::VersionNumber versionNumber) override
Implementation version of writeTransfer().
void doReadTransferSynchronously() override
Implementation version of readTransfer() for synchronous reads.
TransferType _transferType_pre
~TransferElementTestAccessor() override
void doPostWrite(TransferType type, VersionNumber versionNumber) override
Backend specific implementation of postWrite().
size_t _writeTransfer_counter
TransferType _transferType_post
std::exception_ptr _seenActiveException
UserType _setPostReadData
std::vector< boost::shared_ptr< TransferElementTestAccessor< UserType > > > _internalElements
void replaceTransferElement(boost::shared_ptr< TransferElement > newElement) override
Search for all underlying TransferElements which are considered identical (see sameRegister()) with t...
size_t _readTransfer_counter
bool _throwRuntimeErrInPre
std::exception_ptr _activeException
Exception to be rethrown in postXXX() in case hasSeenException == true Can be set via setActiveExcept...
VersionNumber _postWrite_version
VersionNumber _preWrite_version
bool doWriteTransferDestructively(ChimeraTK::VersionNumber versionNumber) override
Implementation version of writeTransferDestructively().
std::list< TransferElementID > _listReplacementElements
void putRuntimeErrorOnQueue()
VersionNumber _setPostReadVersion
static std::atomic< size_t > _currentIndex
std::vector< boost::shared_ptr< TransferElement > > _hardwareAccessingElements
VersionNumber _writeTransfer_version
void interrupt() override
Return from a blocking read immediately and throw boost::thread_interrupted.
cppext::future_queue< void > _readQueue
The queue for asynchronous read transfers.
void putDiscardValueOnQueue()
void doPreWrite(TransferType type, VersionNumber versionNumber) override
Backend specific implementation of preWrite().
size_t _writeTransferDestructively_counter
std::vector< boost::shared_ptr< TransferElement > > getHardwareAccessingElements() override
Obtain the underlying TransferElements with actual hardware access.
bool _throwRuntimeErrInTransfer
std::list< boost::shared_ptr< TransferElement > > getInternalElements() override
Obtain the full list of TransferElements internally used by this TransferElement.
bool isReadable() const override
Check if transfer element is readable.
bool mayReplaceOther(const boost::shared_ptr< TransferElement const > &other) const override
Check whether the TransferElement can be used in places where the TransferElement "other" is currentl...
void doPreRead(TransferType type) override
Backend specific implementation of preRead().
bool isWriteable() const override
Check if transfer element is writeable.
TransferElementTestAccessor(AccessModeFlags flags)
std::exception_ptr _thrownException
void doPostRead(TransferType type, bool updateDataBuffer) override
Backend specific implementation of postRead().
Class for generating and holding version numbers without exposing a numeric representation.
Exception thrown when a logic error has occured.
Exception thrown when a runtime error has occured.
TransferType
Used to indicate the applicable operation on a Transferelement.