From baa48dacc43d89456d6d6c9e2d73a42118864d97 Mon Sep 17 00:00:00 2001
From: Rainer Kartmann <rainer.kartmann@kit.edu>
Date: Thu, 24 Jun 2021 20:32:36 +0200
Subject: [PATCH] Add json conversion for MemoryID

---
 .../RobotAPI/libraries/armem/CMakeLists.txt   |  2 ++
 .../libraries/armem/core/json_conversions.cpp | 26 +++++++++++++++++++
 .../libraries/armem/core/json_conversions.h   | 12 +++++++++
 3 files changed, 40 insertions(+)
 create mode 100644 source/RobotAPI/libraries/armem/core/json_conversions.cpp
 create mode 100644 source/RobotAPI/libraries/armem/core/json_conversions.h

diff --git a/source/RobotAPI/libraries/armem/CMakeLists.txt b/source/RobotAPI/libraries/armem/CMakeLists.txt
index 3e0900893..38d9515cc 100644
--- a/source/RobotAPI/libraries/armem/CMakeLists.txt
+++ b/source/RobotAPI/libraries/armem/CMakeLists.txt
@@ -35,6 +35,7 @@ set(LIB_FILES
     core/Time.cpp
     core/ice_conversions.cpp
     core/aron_conversions.cpp
+    core/json_conversions.cpp
 
     core/base/detail/MemoryItem.cpp
     core/base/detail/MaxHistorySize.cpp
@@ -136,6 +137,7 @@ set(LIB_HEADERS
     core/SuccessHeader.h
     core/Time.h
     core/aron_conversions.h
+    core/json_conversions.h
     core/ice_conversions.h
     core/ice_conversions_templates.h
 
diff --git a/source/RobotAPI/libraries/armem/core/json_conversions.cpp b/source/RobotAPI/libraries/armem/core/json_conversions.cpp
new file mode 100644
index 000000000..e4da9d89b
--- /dev/null
+++ b/source/RobotAPI/libraries/armem/core/json_conversions.cpp
@@ -0,0 +1,26 @@
+#include "json_conversions.h"
+
+#include <RobotAPI/libraries/armem/core/MemoryID.h>
+
+
+void armarx::armem::to_json(nlohmann::json& j, const MemoryID& bo)
+{
+    j["memoryName"] = bo.memoryName;
+    j["coreSegmentName"] = bo.coreSegmentName;
+    j["providerSegmentName"] = bo.providerSegmentName;
+    j["entityName"] = bo.entityName;
+    j["timestamp_usec"] = bo.timestamp.toMicroSeconds();
+    j["timestamp_datetime"] = toDateTimeMilliSeconds(bo.timestamp);
+    j["instanceIndex"] = bo.instanceIndex;
+}
+
+void armarx::armem::from_json(const nlohmann::json& j, MemoryID& bo)
+{
+    j.at("memoryName").get_to(bo.memoryName);
+    j.at("coreSegmentName").get_to(bo.coreSegmentName);
+    j.at("providerSegmentName").get_to(bo.providerSegmentName);
+    j.at("entityName").get_to(bo.entityName);
+    bo.timestamp = Time::microSeconds(j.at("timestamp_usec").get<int64_t>());
+    // j.at("timestamp_datetime").get_to(toDateTimeMilliSeconds(bo.timestamp));
+    j.at("instanceIndex").get_to(bo.instanceIndex);
+}
diff --git a/source/RobotAPI/libraries/armem/core/json_conversions.h b/source/RobotAPI/libraries/armem/core/json_conversions.h
new file mode 100644
index 000000000..86e508c22
--- /dev/null
+++ b/source/RobotAPI/libraries/armem/core/json_conversions.h
@@ -0,0 +1,12 @@
+#pragma once
+
+#include <SimoxUtility/json/json.hpp>
+
+
+namespace armarx::armem
+{
+    class MemoryID;
+
+    void to_json(nlohmann::json& j, const MemoryID& bo);
+    void from_json(const nlohmann::json& j, MemoryID& bo);
+}
-- 
GitLab