34 lines
595 B
C++
34 lines
595 B
C++
#pragma once
|
|
#ifndef MESSMER_BLOCKSTORE_IMPLEMENTATIONS_CACHING2_CACHE_H_
|
|
#define MESSMER_BLOCKSTORE_IMPLEMENTATIONS_CACHING2_CACHE_H_
|
|
|
|
#include "../../interface/Block.h"
|
|
#include "CacheEntry.h"
|
|
#include <memory>
|
|
#include <mutex>
|
|
|
|
namespace blockstore {
|
|
namespace caching2 {
|
|
|
|
class Cache {
|
|
public:
|
|
static constexpr uint32_t MAX_ENTRIES = 1000;
|
|
|
|
Cache();
|
|
virtual ~Cache();
|
|
|
|
void push(std::unique_ptr<Block> block);
|
|
std::unique_ptr<Block> pop(const Key &key);
|
|
|
|
private:
|
|
mutable std::mutex _mutex;
|
|
std::map<Key, CacheEntry> _cachedBlocks;
|
|
|
|
void deleteOldestEntry();
|
|
};
|
|
|
|
}
|
|
}
|
|
|
|
#endif
|