HCE project C++ developers source code library  1.1.1
HCE project developer library
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
DRCEDefaultJSON.cpp
Go to the documentation of this file.
2 #include "DRCEResultData.hpp"
3 #include "DRCEError.hpp"
4 #include "DRCEDefaultJSON.hpp"
5 
6 namespace HCE
7 {
8 namespace drce
9 {
10 //-----------------------------------------------------------------------------
11 DRCEDefaultJSON::DRCEDefaultJSON(unsigned int dataItemsCount, unsigned int filesCount)
12 : json(""), errorMsg(""), errorCode(NO_ERROR), _isError(false)
13 {
14  makeJSON(dataItemsCount, filesCount);
15 }
16 //-----------------------------------------------------------------------------
17 bool DRCEDefaultJSON::fillResultData(DRCEResultData& resultData, unsigned int dataItemsCount, unsigned int filesCount)
18 {
19  try
20  {
21  if (dataItemsCount == 0)
22  {
23  DRCEResultDataItem resultDataItem;
24  resultDataItem.addFileItem("", "", 0);
25  resultData.addDataItem(std::forward<DRCEResultDataItem>(resultDataItem));
26  }
27  else
28  {
29  for (size_t i=1;i<=dataItemsCount;++i)
30  {
31  DRCEResultDataItem resultDataItem;
32  resultDataItem.setNodeName("node_"+std::to_string(i));
33  resultDataItem.setStdoutStream("stdout_stream_"+std::to_string(i));
34  resultDataItem.setStderrStream("stderr_stream_"+std::to_string(i));
35  resultDataItem.setTime(i);
36 
37  for (size_t k=0;k<filesCount;++k)
38  resultDataItem.addFileItem("file_"+std::to_string(i), "data_"+std::to_string(i),
40 
41  resultData.addDataItem(std::forward<DRCEResultDataItem>(resultDataItem));
42  }
43  }
44  _isError = false;
45  }
46  catch(std::exception& e)
47  {
48  _isError = true;
49  errorMsg = e.what();
50  errorCode = ERROR_MAKE_DEFAULT_JSON;
51  }
52  return !_isError;
53 }
54 //-----------------------------------------------------------------------------
55 bool DRCEDefaultJSON::makeJSON(unsigned int dataItemsCount, unsigned int filesCount)
56 {
57  json.clear();
58  errorMsg.clear();
59  errorCode = NO_ERROR;
60  _isError = false;
61  DRCEResultData resultData;
62  DRCEResultDataSerializator resultSerializator(resultData);
63 
64  _isError = !fillResultData(resultData, dataItemsCount, filesCount);
65 
66  if (!_isError)
67  {
68  if (!resultSerializator.serialize(json))
69  {
70  _isError = resultSerializator.isError();
71  errorMsg = resultSerializator.getErrorMsg();
72  errorCode = resultSerializator.getErrorCode();
73  }
74  }
75  return !_isError;
76 }
77 //-----------------------------------------------------------------------------
78 std::ostream& operator<<(std::ostream& os, const DRCEDefaultJSON& defaultJson)
79 {
80  return os << defaultJson.getJSON();
81 }
82 //-----------------------------------------------------------------------------
83 //-----------------------------------------------------------------------------
84 } // namespace drce
85 } // namespace HCE