make building handlers from json more generic
Problem: version-handler, a new feature that will be added to this
repository will also parse json files from the same directory ipmi-flash
does. Currently buildjson is a mix of some code that can be reused and
other code that is pretty specific to firmware updates; this makes it
hard to reuse the code.
Solution: factor out the generic parts and place it in bmc and then
leave the specific parts in firmware-handler. Also code changes have
been made to buildjson: wrap functions in a templated class that leaves
feature specific parsing as a pure virtual method.
Tested:
Ran the unit tests, which do test the parsing functionality.
Signed-off-by: Jason Ling <jasonling@google.com>
Change-Id: I021dc829a82d1719b4cb862cdfb224eca629a44d
diff --git a/bmc/firmware-handler/firmware_handlers_builder.hpp b/bmc/firmware-handler/firmware_handlers_builder.hpp
new file mode 100644
index 0000000..6cfb649
--- /dev/null
+++ b/bmc/firmware-handler/firmware_handlers_builder.hpp
@@ -0,0 +1,17 @@
+#pragma once
+#include "buildjson.hpp"
+#include "firmware_handler.hpp"
+
+#include <nlohmann/json.hpp>
+
+#include <vector>
+
+namespace ipmi_flash
+{
+class FirmwareHandlersBuilder : public HandlersBuilderIfc<ActionPack>
+{
+ public:
+ std::vector<HandlerConfig<ActionPack>>
+ buildHandlerFromJson(const nlohmann::json& data) override;
+};
+} // namespace ipmi_flash