simplified executeGet()

This commit is contained in:
john30
2017-07-02 10:11:23 +02:00
parent 31f3c2f5b3
commit 41eaa3ad4b
+24 -14
View File
@@ -1615,6 +1615,15 @@ result_t MainLoop::executeHelp(ostringstream* ostream) {
return RESULT_OK; 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<string>& args, bool* connected, ostringstream* ostream) { result_t MainLoop::executeGet(const vector<string>& args, bool* connected, ostringstream* ostream) {
bool numeric = false, valueName = false, required = false, full = false, withWrite = false, raw = false; bool numeric = false, valueName = false, required = false, full = false, withWrite = false, raw = false;
bool withDefinition = false; bool withDefinition = false;
@@ -1655,29 +1664,29 @@ result_t MainLoop::executeGet(const vector<string>& args, bool* connected, ostri
} else if (qname == "poll") { } else if (qname == "poll") {
pollPriority = (size_t)parseInt(value.c_str(), 10, 1, 9, &ret); pollPriority = (size_t)parseInt(value.c_str(), 10, 1, 9, &ret);
} else if (qname == "exact") { } else if (qname == "exact") {
exact = value.length() == 0 || value == "1" || value == "true"; exact = parseBoolQuery(value);
} else if (qname == "verbose") { } else if (qname == "verbose") {
if (value.length() == 0 || value == "1" || value == "true") { if (parseBoolQuery(value)) {
verbosity |= OF_UNITS | OF_COMMENTS; verbosity |= OF_UNITS | OF_COMMENTS;
} }
} else if (qname == "indexed") { } else if (qname == "indexed") {
if (value.length() == 0 || value == "1" || value == "true") { if (parseBoolQuery(value)) {
verbosity &= ~OF_NAMES; verbosity &= ~OF_NAMES;
} }
} else if (qname == "numeric") { } else if (qname == "numeric") {
numeric = value.length() == 0 || value == "1" || value == "true"; numeric = parseBoolQuery(value);
} else if (qname == "valuename") { } else if (qname == "valuename") {
valueName = value.length() == 0 || value == "1" || value == "true"; valueName = parseBoolQuery(value);
} else if (qname == "full") { } else if (qname == "full") {
full = value.length() == 0 || value == "1" || value == "true"; full = parseBoolQuery(value);
} else if (qname == "required") { } else if (qname == "required") {
required = value.length() == 0 || value == "1" || value == "true"; required = parseBoolQuery(value);
} else if (qname == "write") { } else if (qname == "write") {
withWrite = value.length() == 0 || value == "1" || value == "true"; withWrite = parseBoolQuery(value);
} else if (qname == "raw") { } else if (qname == "raw") {
raw = value.length() == 0 || value == "1" || value == "true"; raw = parseBoolQuery(value);
} else if (qname == "def") { } else if (qname == "def") {
withDefinition = value.length() == 0 || value == "1" || value == "true"; withDefinition = parseBoolQuery(value);
} else if (qname == "user") { } else if (qname == "user") {
user = value; user = value;
} else if (qname == "secret") { } else if (qname == "secret") {
@@ -1729,7 +1738,8 @@ result_t MainLoop::executeGet(const vector<string>& args, bool* connected, ostri
maxLastUp = lastup; maxLastUp = lastup;
} }
} }
if (message->getCircuit() != lastCircuit) { bool sameCircuit = message->getCircuit() == lastCircuit;
if (!sameCircuit) {
if (lastCircuit.length() > 0) { if (lastCircuit.length() > 0) {
*ostream << "\n }\n },"; *ostream << "\n }\n },";
} }
@@ -1743,10 +1753,10 @@ result_t MainLoop::executeGet(const vector<string>& args, bool* connected, ostri
first = true; first = true;
} }
name = message->getName(); name = message->getName();
bool same = name == lastName; bool same = sameCircuit && name == lastName;
if (!same && !lastName.empty() && it+1 != messages.end()) { if (!same && sameCircuit && it+1 != messages.end()) {
Message* next = *(it+1); Message* next = *(it+1);
same = next->getCircuit() == lastCircuit && next->getName() == name; same = next->getName() == name;
} }
message->decodeJson(!first, same, raw, verbosity, ostream); message->decodeJson(!first, same, raw, verbosity, ostream);
lastName = name; lastName = name;