fsfw/src/fsfw/datapool/ReadCommitIF.h

28 lines
938 B
C
Raw Normal View History

2020-12-27 01:52:48 +01:00
#ifndef FSFW_DATAPOOL_READCOMMITIF_H_
#define FSFW_DATAPOOL_READCOMMITIF_H_
2021-01-13 12:18:05 +01:00
#include "../ipc/MutexIF.h"
2022-08-16 12:48:22 +02:00
#include "../returnvalues/returnvalue.h"
2020-12-27 01:52:48 +01:00
/**
* @brief Common interface for all software objects which employ read-commit
* semantics.
*/
class ReadCommitIF {
2022-02-02 10:29:30 +01:00
friend class ReadCommitIFAttorney;
2020-12-27 01:52:48 +01:00
2022-02-02 10:29:30 +01:00
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
2022-02-02 10:29:30 +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
2022-02-02 10:29:30 +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_ */