Initial commit of binary store handler.

Implement a dummy interface with TODOs.

Signed-off-by: Kun Yi <kunyi@google.com>
Change-Id: Ie58b3aa58d209063fe2af7402086a72da999fb5a
diff --git a/handler.hpp b/handler.hpp
new file mode 100644
index 0000000..dcc17b4
--- /dev/null
+++ b/handler.hpp
@@ -0,0 +1,45 @@
+#pragma once
+
+#include <blobs-ipmid/blobs.hpp>
+#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 blobs
+{
+
+class BinaryStoreBlobHandler : public GenericBlobInterface
+{
+  public:
+    BinaryStoreBlobHandler() = default;
+    ~BinaryStoreBlobHandler() = default;
+    BinaryStoreBlobHandler(const BinaryStoreBlobHandler&) = delete;
+    BinaryStoreBlobHandler& operator=(const BinaryStoreBlobHandler&) = delete;
+    BinaryStoreBlobHandler(BinaryStoreBlobHandler&&) = default;
+    BinaryStoreBlobHandler& operator=(BinaryStoreBlobHandler&&) = default;
+
+    bool canHandleBlob(const std::string& path) override;
+    std::vector<std::string> getBlobIds() override;
+    bool deleteBlob(const std::string& path) override;
+    bool stat(const std::string& path, struct BlobMeta* meta) override;
+    bool open(uint16_t session, uint16_t flags,
+              const std::string& path) override;
+    std::vector<uint8_t> read(uint16_t session, uint32_t offset,
+                              uint32_t requestedSize) override;
+    bool write(uint16_t session, uint32_t offset,
+               const std::vector<uint8_t>& data) override;
+    bool writeMeta(uint16_t session, uint32_t offset,
+                   const std::vector<uint8_t>& data) override;
+    bool commit(uint16_t session, const std::vector<uint8_t>& data) override;
+    bool close(uint16_t session) override;
+    bool stat(uint16_t session, struct BlobMeta* meta) override;
+    bool expire(uint16_t session) override;
+};
+
+} // namespace blobs