blob: 0fc316bcf8b882a7a42c905289e90d44e0b2a467 [file] [log] [blame]
#pragma once
#include <cstdint>
#include <string>
#include <vector>
using std::size_t;
using std::uint16_t;
using std::uint32_t;
using std::uint64_t;
using std::uint8_t;
namespace binstore
{
/**
* @class BinaryStoreInterface is an abstraction for a storage location.
* Each instance would be uniquely identified by a baseId string.
*/
class BinaryStoreInterface
{
public:
virtual ~BinaryStoreInterface() = default;
virtual std::string getBaseBlobId() const = 0;
virtual std::vector<std::string> getBlobIds() const = 0;
virtual bool canHandleBlob(const std::string& blobId) const = 0;
virtual bool openOrCreateBlob(const std::string& blobId,
uint16_t flags) = 0;
virtual std::vector<uint8_t> read(uint32_t offset,
uint32_t requestedSize) = 0;
virtual bool write(uint32_t offset, const std::vector<uint8_t>& data) = 0;
virtual bool commit() = 0;
virtual bool close() = 0;
virtual bool stat() = 0;
};
} // namespace binstore