From 2003879c6b6ea69018b8598155bfc6e375d57eec Mon Sep 17 00:00:00 2001
From: Jason Wang <wangr1@ornl.gov>
Date: Fri, 17 Nov 2017 14:30:39 -0500
Subject: [PATCH] Added entry in DataManWriter engine for bp format

---
 source/adios2/engine/dataman/DataManWriter.h  |  1 +
 .../adios2/engine/dataman/DataManWriter.tcc   | 42 ++++++++++---------
 2 files changed, 24 insertions(+), 19 deletions(-)

diff --git a/source/adios2/engine/dataman/DataManWriter.h b/source/adios2/engine/dataman/DataManWriter.h
index 5f67a4bb1..2a401155b 100644
--- a/source/adios2/engine/dataman/DataManWriter.h
+++ b/source/adios2/engine/dataman/DataManWriter.h
@@ -33,6 +33,7 @@ public:
     void Close(const int transportIndex = -1) final;
 
 private:
+    std::string m_UseFormat = "json";
     bool m_DoRealTime = false;
     bool m_DoMonitor = false;
     transportman::DataMan m_Man;
diff --git a/source/adios2/engine/dataman/DataManWriter.tcc b/source/adios2/engine/dataman/DataManWriter.tcc
index a85f949fe..1e536aa0e 100644
--- a/source/adios2/engine/dataman/DataManWriter.tcc
+++ b/source/adios2/engine/dataman/DataManWriter.tcc
@@ -22,13 +22,8 @@ namespace adios2
 template <class T>
 void DataManWriter::PutSyncCommon(Variable<T> &variable, const T *values)
 {
-    // here comes your magic at Writing now variable.m_UserValues has the
-    // data
-    // passed by the user
-    // set variable
-    variable.SetData(values);
 
-    // This part will go away, this is just to monitor variables per rank
+    variable.SetData(values);
 
     if (variable.m_Shape.empty())
     {
@@ -43,19 +38,28 @@ void DataManWriter::PutSyncCommon(Variable<T> &variable, const T *values)
         variable.m_Start.assign(variable.m_Count.size(), 0);
     }
 
-    nlohmann::json jmsg;
-    jmsg["doid"] = m_Name;
-    jmsg["var"] = variable.m_Name;
-    jmsg["dtype"] = GetType<T>();
-    jmsg["putshape"] = variable.m_Count;
-    jmsg["varshape"] = variable.m_Shape;
-    jmsg["offset"] = variable.m_Start;
-    jmsg["timestep"] = 0;
-    jmsg["bytes"] =
-        std::accumulate(variable.m_Shape.begin(), variable.m_Shape.end(),
-                        sizeof(T), std::multiplies<size_t>());
-
-    m_Man.WriteWAN(values, jmsg);
+    if(m_UseFormat == "json"){
+
+        nlohmann::json jmsg;
+        jmsg["doid"] = m_Name;
+        jmsg["var"] = variable.m_Name;
+        jmsg["dtype"] = GetType<T>();
+        jmsg["putshape"] = variable.m_Count;
+        jmsg["varshape"] = variable.m_Shape;
+        jmsg["offset"] = variable.m_Start;
+        jmsg["timestep"] = 0;
+        jmsg["bytes"] =
+            std::accumulate(variable.m_Shape.begin(), variable.m_Shape.end(),
+                    sizeof(T), std::multiplies<size_t>());
+
+        m_Man.WriteWAN(values, jmsg);
+    }
+
+    if(m_UseFormat == "bp"){
+
+        // add bp serialization
+
+    }
 
     if (m_DoMonitor)
     {
-- 
GitLab