hce-node application  1.4.3
HCE Hierarchical Cluster Engine node application
 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), jsonErrorMessage(""), jsonErrorCode(NO_ERROR),
13  jsonNodeHost(""), jsonNodeName(""), jsonNodePort(""), jsonState(0), jsonRequestType(0)
14 {
15  makeJSON(dataItemsCount, filesCount);
16 }
17 //-----------------------------------------------------------------------------
18 bool DRCEDefaultJSON::fillResultData(DRCEResultData& resultData, unsigned int dataItemsCount, unsigned int filesCount)
19 {
20  try
21  {
22  if (dataItemsCount == 0)
23  {
24  DRCEResultDataItem resultDataItem;
25  resultDataItem.setStdoutStream("It's default json");
26  resultDataItem.addFileItem("", "", 0);
27  resultDataItem.setErrorCode(jsonErrorCode);
28  resultDataItem.setErrorMessage(jsonErrorMessage);
29  resultDataItem.setNodeHost(jsonNodeHost);
30  resultDataItem.setNodeName(jsonNodeName);
31  resultDataItem.setNodePort(jsonNodePort);
32  resultDataItem.setState(jsonState);
33  resultDataItem.setRequestType(static_cast<DRCETaskRequest::RequestType>(jsonRequestType));
34  resultData.addDataItem(std::forward<DRCEResultDataItem>(resultDataItem));
35  }
36  else
37  {
38  for (unsigned int i=1;i<=dataItemsCount;++i)
39  {
40  DRCEResultDataItem resultDataItem;
41  resultDataItem.setNodeName("node_"+std::to_string(i));
42  resultDataItem.setNodeHost("host_"+std::to_string(i));
43  resultDataItem.setNodePort("host_"+std::to_string(i));
44  resultDataItem.setRequestId(i);
45  resultDataItem.setRequestType(DRCETaskRequest::RequestType::rtGetTaskData);
46  resultDataItem.setState(static_cast<unsigned int>(DRCETaskRequest::TaskState::IN_PROGRESS));
47  resultDataItem.setStdoutStream("stdout_stream_"+std::to_string(i));
48  resultDataItem.setStderrStream("stderr_stream_"+std::to_string(i));
49  resultDataItem.setTime(i);
50  resultDataItem.setErrorCode(jsonErrorCode);
51  resultDataItem.setErrorMessage(jsonErrorMessage);
52 
53  for (size_t k=0;k<filesCount;++k)
54  resultDataItem.addFileItem("file_"+std::to_string(i), "data_"+std::to_string(i),
56 
57  resultData.addDataItem(std::forward<DRCEResultDataItem>(resultDataItem));
58  }
59  }
60  _isError = false;
61  }
62  catch(std::exception& e)
63  {
64  _isError = true;
65  errorMsg = e.what();
66  errorCode = ERROR_MAKE_DEFAULT_JSON;
67  }
68  return !_isError;
69 }
70 //-----------------------------------------------------------------------------
71 bool DRCEDefaultJSON::makeJSON(unsigned int dataItemsCount, unsigned int filesCount)
72 {
73  json.clear();
74  errorMsg.clear();
75  errorCode = NO_ERROR;
76  _isError = false;
77  DRCEResultData resultData;
78  DRCEResultDataSerializator resultSerializator(resultData);
79 
80  _isError = !fillResultData(resultData, dataItemsCount, filesCount);
81 
82  if (!_isError)
83  {
84  if (!resultSerializator.serialize(json))
85  {
86  _isError = resultSerializator.isError();
87  errorMsg = resultSerializator.getErrorMsg();
88  errorCode = resultSerializator.getErrorCode();
89  }
90  }
91  return !_isError;
92 }
93 //-----------------------------------------------------------------------------
94 std::ostream& operator<<(std::ostream& os, const DRCEDefaultJSON& defaultJson)
95 {
96  return os << defaultJson.getJSON();
97 }
98 //-----------------------------------------------------------------------------
99 //-----------------------------------------------------------------------------
100 } // namespace drce
101 } // namespace HCE