2020-12-27 01:52:48 +01:00
|
|
|
#ifndef FSFW_DATAPOOL_READCOMMITIF_H_
|
|
|
|
#define FSFW_DATAPOOL_READCOMMITIF_H_
|
|
|
|
|
|
|
|
#include <fsfw/returnvalues/HasReturnvaluesIF.h>
|
2021-01-06 21:14:23 +01:00
|
|
|
#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() {}
|
2021-01-06 21:14:23 +01:00
|
|
|
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() {
|
2021-01-06 21:14:23 +01:00
|
|
|
return read(MutexIF::TimeoutType::WAITING, 20);
|
2020-12-27 01:52:48 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
virtual ReturnValue_t commitWithoutLock() {
|
2021-01-06 21:14:23 +01:00
|
|
|
return commit(MutexIF::TimeoutType::WAITING, 20);
|
2020-12-27 01:52:48 +01:00
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
#endif /* FSFW_DATAPOOL_READCOMMITIF_H_ */
|