hce-node application  1.4.3
HCE Hierarchical Cluster Engine node application
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
AdminCommandParameters.cpp
Go to the documentation of this file.
1 #include <Poco/JSON/Object.h>
2 #include <Poco/JSON/Array.h>
3 #include <Poco/JSON/JSON.h>
4 #include <Poco/JSON/Stringifier.h>
5 #include <Poco/JSON/Parser.h>
6 #include <Poco/JSON/JSONException.h>
7 #include <Poco/Dynamic/Var.h>
8 
10 #include "HandlerTypes.hpp"
11 
12 namespace HCE
13 {
14 namespace handlers
15 {
16 //-----------------------------------------------------------------------------
18 : inherited(), parameters(""), realtime(PROPERTY_REALTIME_DEFAULT), _isJson(false)
19 {
20  if (!str.empty())
21  {
22  if (isJsonString(str))
23  {
24  unserialize(str);
25  }
26  else
27  {
28  parameters = str;
29  }
30  }
31 }
32 //-----------------------------------------------------------------------------
33 bool AdminCommandParameters::serialize(std::string& json)
34 {
35  resetError();
36  try
37  {
38  Poco::JSON::Object::Ptr pObj = new Poco::JSON::Object();
39  if (pObj.isNull())
40  throw Poco::Exception("Object instance was not created");
41 
42  pObj->set(PARAMETERS, parameters);
43  pObj->set(REALTIME, realtime);
44 
45  std::stringstream ostr;
46  Poco::JSON::Stringifier::stringify(pObj, ostr);
47  json = ostr.str();
48 
49  _isError = false;
50  }
51  catch(Poco::Exception& e)
52  {
53  _isError = true;
54  errorMsg = e.displayText();
56  }
57  catch(std::exception& e)
58  {
59  _isError = true;
60  errorMsg = e.what();
62  }
63  return !_isError;
64 }
65 //-----------------------------------------------------------------------------
66 bool AdminCommandParameters::unserialize(const std::string& json)
67 {
68  clear();
69  try
70  {
71  Poco::JSON::Parser parser;
72  Poco::Dynamic::Var res = parser.parse(json);
73 
74  Poco::JSON::Object::Ptr pObj = res.extract<Poco::JSON::Object::Ptr>();
75 
76  if (!pObj.isNull())
77  {
78  Poco::Dynamic::Var tmp = pObj->get(PARAMETERS);
79  if (tmp.isString())
80  parameters = tmp.convert<std::string>();
81 
82  tmp = pObj->get(REALTIME);
83  realtime = convertVarToNumeric<unsigned int>(tmp, 0);
84  }
85 
86  _isError = false;
87  }
88  catch(Poco::JSON::JSONException& e)
89  {
90  _isError = true;
91  errorMsg = e.displayText();
93  }
94  catch(Poco::Exception& e)
95  {
96  _isError = true;
97  errorMsg = e.displayText();
99  }
100  catch(std::exception& e)
101  {
102  _isError = true;
103  errorMsg = e.what();
105  }
106  return !_isError;
107 }
108 //-----------------------------------------------------------------------------
110 {
111  resetError();
112  parameters.clear();
113  realtime = PROPERTY_REALTIME_DEFAULT;
114 }
115 //-----------------------------------------------------------------------------
117 {
118  return (realtime);
119 }
120 //-----------------------------------------------------------------------------
121 bool AdminCommandParameters::isJsonString(const std::string& str)
122 {
123  _isJson = (str.front()=='{' && str.back()=='}');
124  return _isJson;
125 }
126 //-----------------------------------------------------------------------------
127 //-----------------------------------------------------------------------------
128 } // end namespace handlers
129 } // end namespace HCE