From 41eaa3ad4bb0b9f0fe7292cbf24a3dc8a1bfb3a8 Mon Sep 17 00:00:00 2001 From: john30 Date: Sun, 2 Jul 2017 10:11:23 +0200 Subject: [PATCH] simplified executeGet() --- src/ebusd/mainloop.cpp | 38 ++++++++++++++++++++++++-------------- 1 file changed, 24 insertions(+), 14 deletions(-) diff --git a/src/ebusd/mainloop.cpp b/src/ebusd/mainloop.cpp index afcd3c38..7efdc100 100644 --- a/src/ebusd/mainloop.cpp +++ b/src/ebusd/mainloop.cpp @@ -1615,6 +1615,15 @@ result_t MainLoop::executeHelp(ostringstream* ostream) { return RESULT_OK; } +/** + * Parse a boolean query value. + * @param value the query value. + * @return the parsed boolean. + */ +bool parseBoolQuery(const string& value) { + return value.length() == 0 || value == "1" || value == "true"; +} + result_t MainLoop::executeGet(const vector& args, bool* connected, ostringstream* ostream) { bool numeric = false, valueName = false, required = false, full = false, withWrite = false, raw = false; bool withDefinition = false; @@ -1655,29 +1664,29 @@ result_t MainLoop::executeGet(const vector& args, bool* connected, ostri } else if (qname == "poll") { pollPriority = (size_t)parseInt(value.c_str(), 10, 1, 9, &ret); } else if (qname == "exact") { - exact = value.length() == 0 || value == "1" || value == "true"; + exact = parseBoolQuery(value); } else if (qname == "verbose") { - if (value.length() == 0 || value == "1" || value == "true") { + if (parseBoolQuery(value)) { verbosity |= OF_UNITS | OF_COMMENTS; } } else if (qname == "indexed") { - if (value.length() == 0 || value == "1" || value == "true") { + if (parseBoolQuery(value)) { verbosity &= ~OF_NAMES; } } else if (qname == "numeric") { - numeric = value.length() == 0 || value == "1" || value == "true"; + numeric = parseBoolQuery(value); } else if (qname == "valuename") { - valueName = value.length() == 0 || value == "1" || value == "true"; + valueName = parseBoolQuery(value); } else if (qname == "full") { - full = value.length() == 0 || value == "1" || value == "true"; + full = parseBoolQuery(value); } else if (qname == "required") { - required = value.length() == 0 || value == "1" || value == "true"; + required = parseBoolQuery(value); } else if (qname == "write") { - withWrite = value.length() == 0 || value == "1" || value == "true"; + withWrite = parseBoolQuery(value); } else if (qname == "raw") { - raw = value.length() == 0 || value == "1" || value == "true"; + raw = parseBoolQuery(value); } else if (qname == "def") { - withDefinition = value.length() == 0 || value == "1" || value == "true"; + withDefinition = parseBoolQuery(value); } else if (qname == "user") { user = value; } else if (qname == "secret") { @@ -1729,7 +1738,8 @@ result_t MainLoop::executeGet(const vector& args, bool* connected, ostri maxLastUp = lastup; } } - if (message->getCircuit() != lastCircuit) { + bool sameCircuit = message->getCircuit() == lastCircuit; + if (!sameCircuit) { if (lastCircuit.length() > 0) { *ostream << "\n }\n },"; } @@ -1743,10 +1753,10 @@ result_t MainLoop::executeGet(const vector& args, bool* connected, ostri first = true; } name = message->getName(); - bool same = name == lastName; - if (!same && !lastName.empty() && it+1 != messages.end()) { + bool same = sameCircuit && name == lastName; + if (!same && sameCircuit && it+1 != messages.end()) { Message* next = *(it+1); - same = next->getCircuit() == lastCircuit && next->getName() == name; + same = next->getName() == name; } message->decodeJson(!first, same, raw, verbosity, ostream); lastName = name;