Skip to content
Snippets Groups Projects
Commit 77805ed7 authored by Jan H. K. Timm's avatar Jan H. K. Timm
Browse files

Merge branch 'master' into iss130

parents b36fbc1d 358cd80b
No related branches found
No related tags found
No related merge requests found
...@@ -52,7 +52,7 @@ namespace ChimeraTK { ...@@ -52,7 +52,7 @@ namespace ChimeraTK {
bool doReadTransferLatest() override { return doReadTransferNonBlocking(); } bool doReadTransferLatest() override { return doReadTransferNonBlocking(); }
void doPostRead(TransferType /*type*/) override { ChimeraTK::NDRegisterAccessor<UserType>::buffer_2D[0] = _value; } void doPostRead(TransferType /*type*/, bool /* hasNewData */) override { ChimeraTK::NDRegisterAccessor<UserType>::buffer_2D[0] = _value; }
bool doWriteTransfer(ChimeraTK::VersionNumber /*versionNumber*/ = {}) override { return true; } bool doWriteTransfer(ChimeraTK::VersionNumber /*versionNumber*/ = {}) override { return true; }
......
...@@ -26,8 +26,8 @@ namespace ChimeraTK { ...@@ -26,8 +26,8 @@ namespace ChimeraTK {
assert(feedingImpl->isReadable()); assert(feedingImpl->isReadable());
} }
void doPostRead(TransferType type) override { void doPostRead(TransferType type, bool hasNewData) override {
ChimeraTK::NDRegisterAccessorDecorator<UserType>::doPostRead(type); ChimeraTK::NDRegisterAccessorDecorator<UserType>::doPostRead(type, hasNewData);
for(auto& slave : FanOut<UserType>::slaves) { // send out copies to slaves for(auto& slave : FanOut<UserType>::slaves) { // send out copies to slaves
// do not send copy if no data is expected (e.g. trigger) // do not send copy if no data is expected (e.g. trigger)
if(slave->getNumberOfSamples() != 0) { if(slave->getNumberOfSamples() != 0) {
......
...@@ -60,9 +60,9 @@ namespace ChimeraTK { ...@@ -60,9 +60,9 @@ namespace ChimeraTK {
ChimeraTK::NDRegisterAccessorDecorator<UserType>::doPreRead(type); ChimeraTK::NDRegisterAccessorDecorator<UserType>::doPreRead(type);
} }
void doPostRead(TransferType type) override { void doPostRead(TransferType type, bool hasNewData) override {
std::cout << "postRead() called on '" << _fullyQualifiedName << "'." << std::endl; std::cout << "postRead() called on '" << _fullyQualifiedName << "'." << std::endl;
ChimeraTK::NDRegisterAccessorDecorator<UserType>::doPostRead(type); ChimeraTK::NDRegisterAccessorDecorator<UserType>::doPostRead(type, hasNewData);
} }
void doPreWrite(TransferType type) override { void doPreWrite(TransferType type) override {
...@@ -70,9 +70,9 @@ namespace ChimeraTK { ...@@ -70,9 +70,9 @@ namespace ChimeraTK {
ChimeraTK::NDRegisterAccessorDecorator<UserType>::doPreWrite(type); ChimeraTK::NDRegisterAccessorDecorator<UserType>::doPreWrite(type);
} }
void doPostWrite(TransferType type) override { void doPostWrite(TransferType type, bool dataLost) override {
std::cout << "postWrite() called on '" << _fullyQualifiedName << "'." << std::endl; std::cout << "postWrite() called on '" << _fullyQualifiedName << "'." << std::endl;
ChimeraTK::NDRegisterAccessorDecorator<UserType>::doPostWrite(type); ChimeraTK::NDRegisterAccessorDecorator<UserType>::doPostWrite(type, dataLost);
} }
protected: protected:
......
...@@ -89,10 +89,10 @@ namespace ChimeraTK { ...@@ -89,10 +89,10 @@ namespace ChimeraTK {
_returnSlave->preRead(type); _returnSlave->preRead(type);
} }
void doPostRead(TransferType type) override { void doPostRead(TransferType type, bool hasNewData) override {
if(!_withReturn) throw ChimeraTK::logic_error("Read operation called on write-only variable."); if(!_withReturn) throw ChimeraTK::logic_error("Read operation called on write-only variable.");
assert(_hasReturnSlave); assert(_hasReturnSlave);
_returnSlave->postRead(type); _returnSlave->postRead(type, hasNewData);
_returnSlave->accessChannel(0).swap(ChimeraTK::NDRegisterAccessor<UserType>::buffer_2D[0]); _returnSlave->accessChannel(0).swap(ChimeraTK::NDRegisterAccessor<UserType>::buffer_2D[0]);
// distribute return-channel update to the other slaves // distribute return-channel update to the other slaves
for(auto& slave : FanOut<UserType>::slaves) { // send out copies to slaves for(auto& slave : FanOut<UserType>::slaves) { // send out copies to slaves
...@@ -154,9 +154,9 @@ namespace ChimeraTK { ...@@ -154,9 +154,9 @@ namespace ChimeraTK {
return dataLost; return dataLost;
} }
void doPostWrite(TransferType type) override { void doPostWrite(TransferType type, bool dataLost) override {
for(auto& slave : FanOut<UserType>::slaves) { for(auto& slave : FanOut<UserType>::slaves) {
slave->postWrite(type); slave->postWrite(type, dataLost);
} }
FanOut<UserType>::slaves.front()->accessChannel(0).swap(ChimeraTK::NDRegisterAccessor<UserType>::buffer_2D[0]); FanOut<UserType>::slaves.front()->accessChannel(0).swap(ChimeraTK::NDRegisterAccessor<UserType>::buffer_2D[0]);
} }
......
...@@ -33,7 +33,7 @@ namespace ChimeraTK { ...@@ -33,7 +33,7 @@ namespace ChimeraTK {
NDRegisterAccessorDecorator<T, T>::doPreRead(type); NDRegisterAccessorDecorator<T, T>::doPreRead(type);
} }
void doPostRead(TransferType type) override; void doPostRead(TransferType type, bool hasNewData) override;
void doPreWrite(TransferType type) override; void doPreWrite(TransferType type) override;
protected: protected:
......
...@@ -175,9 +175,9 @@ namespace ChimeraTK { ...@@ -175,9 +175,9 @@ namespace ChimeraTK {
return true; return true;
} }
void doPostRead(TransferType type) override { void doPostRead(TransferType type, bool hasNewData) override {
if(_handleRead) obtainLockAndDecrementCounter(); if(_handleRead) obtainLockAndDecrementCounter();
ChimeraTK::NDRegisterAccessorDecorator<UserType>::doPostRead(type); ChimeraTK::NDRegisterAccessorDecorator<UserType>::doPostRead(type, hasNewData);
} }
protected: protected:
......
...@@ -4,8 +4,8 @@ ...@@ -4,8 +4,8 @@
namespace ChimeraTK { namespace ChimeraTK {
template<typename T> template<typename T>
void MetaDataPropagatingRegisterDecorator<T>::doPostRead(TransferType type) { void MetaDataPropagatingRegisterDecorator<T>::doPostRead(TransferType type, bool hasNewData) {
NDRegisterAccessorDecorator<T, T>::doPostRead(type); NDRegisterAccessorDecorator<T, T>::doPostRead(type, hasNewData);
// update the version number // update the version number
if(!isNonblockingRead) { if(!isNonblockingRead) {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment