#pragma once #ifndef FSPP_BLOCKSTORE_BLOCKSTORE_H_ #define FSPP_BLOCKSTORE_BLOCKSTORE_H_ #include #include #include namespace blockstore { //TODO Don't use string, but own class for keys? (better performance for all keys have same length) class BlockStore { public: virtual ~BlockStore() {} virtual std::unique_ptr create(size_t size) = 0; //TODO Use boost::optional (if key doesn't exist) // Return nullptr if block with this key doesn't exists virtual std::unique_ptr load(const Key &key) = 0; virtual void remove(std::unique_ptr block) = 0; virtual uint64_t numBlocks() const = 0; }; } #endif