#include "rediska/common/MessageArguments.hpp" #include "rediska/common/enums.hpp" #include "rediska/common/types.hpp" namespace cache { class CachePolicy { public: virtual ~CachePolicy() = default; virtual void get(CacheKey&& key) = 0; virtual void set(CacheKey&& key, CacheValue&& value, TTL ttl) = 0; virtual void applyTo(CacheKey&& key, OperationId op, MessageArguments&& args) = 0; protected: virtual void evict() = 0; [[nodiscard]] virtual inline bool isFull() const = 0; }; }