fsfw/datapool/ReadCommitIF.h

35 lines
923 B
C
Raw Normal View History

2020-12-27 01:52:48 +01:00
#ifndef FSFW_DATAPOOL_READCOMMITIF_H_
#define FSFW_DATAPOOL_READCOMMITIF_H_
#include <fsfw/returnvalues/HasReturnvaluesIF.h>
#include <fsfw/ipc/MutexIF.h>
2020-12-27 01:52:48 +01:00
/**
* @brief Common interface for all software objects which employ read-commit
* semantics.
*/
class ReadCommitIF {
public:
virtual ~ReadCommitIF() {}
virtual ReturnValue_t read(MutexIF::TimeoutType timeoutType,
uint32_t timeoutMs) = 0;
virtual ReturnValue_t commit(MutexIF::TimeoutType timeoutType,
uint32_t timeoutMs) = 0;
2020-12-27 01:52:48 +01:00
protected:
//! Optional and protected because this is interesting for classes grouping
//! members with commit and read semantics where the lock is only necessary
//! once.
virtual ReturnValue_t readWithoutLock() {
return read(MutexIF::TimeoutType::WAITING, 20);
2020-12-27 01:52:48 +01:00
}
virtual ReturnValue_t commitWithoutLock() {
return commit(MutexIF::TimeoutType::WAITING, 20);
2020-12-27 01:52:48 +01:00
}
};
#endif /* FSFW_DATAPOOL_READCOMMITIF_H_ */