#ifndef FSFW_DATAPOOLLOCAL_POOLREADHELPER_H_ #define FSFW_DATAPOOLLOCAL_POOLREADHELPER_H_ #include "LocalPoolDataSetBase.h" #include "../serviceinterface/ServiceInterface.h" #include /** * @brief Helper class to read data sets or pool variables */ class PoolReadHelper { public: PoolReadHelper(ReadCommitIF* readObject, MutexIF::TimeoutType timeoutType = MutexIF::TimeoutType::WAITING, uint32_t mutexTimeout = 20): readObject(readObject), mutexTimeout(mutexTimeout) { if(readObject != nullptr) { readResult = readObject->read(timeoutType, mutexTimeout); #if FSFW_VERBOSE_LEVEL == 1 #if FSFW_CPP_OSTREAM_ENABLED == 1 sif::error << "PoolReadHelper: Read failed!" << std::endl; #else sif::printError("PoolReadHelper: Read failed!\n"); #endif /* FSFW_PRINT_VERBOSITY_LEVEL == 1 */ #endif /* FSFW_CPP_OSTREAM_ENABLED == 1 */ } } ReturnValue_t getReadResult() const { return readResult; } ~PoolReadHelper() { if(readObject != nullptr) { readObject->commit(timeoutType, mutexTimeout); } } private: ReadCommitIF* readObject = nullptr; ReturnValue_t readResult = HasReturnvaluesIF::RETURN_OK; MutexIF::TimeoutType timeoutType = MutexIF::TimeoutType::WAITING; uint32_t mutexTimeout = 20; }; #endif /* FSFW_DATAPOOLLOCAL_POOLREADHELPER_H_ */