handler_config: Split out from buildjson
This allows us to build the version-handler without the json
infrastructure.
Change-Id: I8c0a5715cb66f6cbb3e72cb714759f6e11e3f409
Signed-off-by: William A. Kennington III <wak@google.com>
diff --git a/bmc/handler_config.hpp b/bmc/handler_config.hpp
new file mode 100644
index 0000000..d8e6cf3
--- /dev/null
+++ b/bmc/handler_config.hpp
@@ -0,0 +1,35 @@
+#pragma once
+#include "image_handler.hpp"
+
+#include <memory>
+#include <string>
+
+namespace ipmi_flash
+{
+
+/**
+ * HandlerConfig associates a blobID with an ImageHandler and a set of
+ * supported actions of type T.
+ */
+template <typename T>
+struct HandlerConfig
+{
+ /* A string in the form: /flash/{unique}, s.t. unique is something like,
+ * flash, ubitar, statictar, or bios
+ */
+ std::string blobId;
+
+ /* This owns a handler interface, this is typically going to be a file
+ * writer object.
+ */
+ std::unique_ptr<ImageHandlerInterface> handler;
+
+ /* specifies actions to be taken in response to certain operations on a
+ * blob.
+ * Usually required but there are exceptions; the hashBlobId doesn't have
+ * an action pack.
+ */
+ std::unique_ptr<T> actions;
+};
+
+} // namespace ipmi_flash