10 boost::shared_ptr<ChimeraTK::NDRegisterAccessor<UserType>> accessor,
11 boost::shared_ptr<RecoveryHelper> recoveryHelper)
12 :
ChimeraTK::NDRegisterAccessorDecorator<UserType>(std::move(accessor)), _recoveryHelper(std::move(recoveryHelper)) {
14 if(TransferElement::getAccessModeFlags().has(AccessMode::wait_for_new_data)) {
15 throw ChimeraTK::logic_error(
"Cannot use reverse recovery on push-type input");
19 TransferElement::_accessModeFlags.add(AccessMode::wait_for_new_data);
26 _recoveryHelper->notificationQueue.template then<void>([&,
this]() { _target->read(); }, std::launch::deferred);
57 _target->setActiveException(this->_activeException);
60 this->_dataValidity = _target->dataValidity();
61 this->_versionNumber = _target->getVersionNumber();
67 for(
size_t i = 0; i < _target->getNumberOfChannels(); ++i) {
68 this->buffer_2D[i].swap(_target->accessChannel(i));