PEL: Use ordered_json in code instead of fifo_map
JSON objects are defined as 'unordered collections' of zero or more
name/value pairs. The implementation doesn't need to preserve specific
orders of inputs objects and where it did (say in older versions)
external fifo_map header method was used. Now with built-in ordered_json
supported (nlohmann::ordered_json), the specific 'order of inputs
objects are preserved' automatically and are not jumbled up or external
header needed to preserve input objects anymore.
Signed-off-by: Sumit Kumar <sumit_kumar@in.ibm.com>
Change-Id: I9abc1220b9fbefbae412efc6ac128d797d0faa16
diff --git a/configure.ac b/configure.ac
index 6cebfae..2600f60 100644
--- a/configure.ac
+++ b/configure.ac
@@ -209,10 +209,6 @@
nlohmann/json.hpp,
[],
[AC_MSG_ERROR([Could not find nlohmann/json.hpp])])
- AC_CHECK_HEADER(
- fifo_map.hpp,
- [],
- [AC_MSG_ERROR([Could not find fifo_map.hpp])])
AX_PKG_CHECK_MODULES([LIBPLDM], [libpldm])
PKG_CHECK_MODULES([FMT], [fmt])
diff --git a/extensions/openpower-pels/src.cpp b/extensions/openpower-pels/src.cpp
index 398cfaa..e41de8c 100644
--- a/extensions/openpower-pels/src.cpp
+++ b/extensions/openpower-pels/src.cpp
@@ -22,7 +22,6 @@
#ifdef PELTOOL
#include <Python.h>
-#include <fifo_map.hpp>
#include <nlohmann/json.hpp>
#include <sstream>
#endif
@@ -42,11 +41,7 @@
constexpr size_t ccinSize = 4;
#ifdef PELTOOL
-// Use fifo_map as nlohmann::json's map. We are just ignoring the 'less'
-// compare. With this map the keys are kept in FIFO order.
-template <class K, class V, class dummy_compare, class A>
-using fifoMap = nlohmann::fifo_map<K, V, nlohmann::fifo_map_compare<K>, A>;
-using fifoJSON = nlohmann::basic_json<fifoMap>;
+using orderedJSON = nlohmann::ordered_json;
void pyDecRef(PyObject* pyObj)
{
@@ -64,9 +59,9 @@
*
* @return std::string - The JSON string
*/
-std::string prettyJSON(const fifoJSON& json)
+std::string prettyJSON(const orderedJSON& json)
{
- fifoJSON output;
+ orderedJSON output;
if (!json.is_object())
{
output["SRC Details"] = json;
@@ -187,7 +182,7 @@
const char* output = PyBytes_AS_STRING(pBytes);
try
{
- fifoJSON json = nlohmann::json::parse(output);
+ orderedJSON json = nlohmann::json::parse(output);
return prettyJSON(json);
}
catch (std::exception& e)
diff --git a/extensions/openpower-pels/user_data_json.cpp b/extensions/openpower-pels/user_data_json.cpp
index 934a4b8..4e15284 100644
--- a/extensions/openpower-pels/user_data_json.cpp
+++ b/extensions/openpower-pels/user_data_json.cpp
@@ -24,7 +24,6 @@
#include <Python.h>
-#include <fifo_map.hpp>
#include <iomanip>
#include <nlohmann/json.hpp>
#include <phosphor-logging/log.hpp>
@@ -34,12 +33,7 @@
{
namespace pv = openpower::pels::pel_values;
using namespace phosphor::logging;
-
-// Use fifo_map as nlohmann::json's map. We are just ignoring the 'less'
-// compare. With this map the keys are kept in FIFO order.
-template <class K, class V, class dummy_compare, class A>
-using fifoMap = nlohmann::fifo_map<K, V, nlohmann::fifo_map_compare<K>, A>;
-using fifoJSON = nlohmann::basic_json<fifoMap>;
+using orderedJSON = nlohmann::ordered_json;
void pyDecRef(PyObject* pyObj)
{
@@ -58,9 +52,9 @@
* @return std::string - The JSON string
*/
std::string prettyJSON(uint16_t componentID, uint8_t subType, uint8_t version,
- const fifoJSON& json)
+ const orderedJSON& json)
{
- fifoJSON output;
+ orderedJSON output;
output[pv::sectionVer] = std::to_string(version);
output[pv::subSection] = std::to_string(subType);
output[pv::createdBy] = getNumberString("0x%04X", componentID);
@@ -134,7 +128,7 @@
cborData.resize(data.size() - sizeof(pad) - pad);
}
- fifoJSON json = nlohmann::json::from_cbor(cborData);
+ orderedJSON json = nlohmann::json::from_cbor(cborData);
return prettyJSON(componentID, subType, version, json);
}
@@ -187,7 +181,7 @@
text.push_back(std::move(line));
}
- fifoJSON json = text;
+ orderedJSON json = text;
return prettyJSON(componentID, subType, version, json);
}
@@ -213,7 +207,7 @@
{
std::string jsonString{data.begin(), data.begin() + data.size()};
- fifoJSON json = nlohmann::json::parse(jsonString);
+ orderedJSON json = nlohmann::json::parse(jsonString);
return prettyJSON(componentID, subType, version, json);
}
@@ -315,7 +309,7 @@
const char* output = PyBytes_AS_STRING(pBytes);
try
{
- fifoJSON json = nlohmann::json::parse(output);
+ orderedJSON json = nlohmann::json::parse(output);
return prettyJSON(componentID, subType, version, json);
}
catch (std::exception& e)