Skip to content
Snippets Groups Projects
Verified Commit 3fa57b7a authored by Tobias Triffterer's avatar Tobias Triffterer :house_with_garden:
Browse files

Add Parser for updateExperimentState Command

This action gets its own parser to make sure that all necessary values
are present (never trust your clients...).
parent 9b1288fc
No related branches found
No related tags found
No related merge requests found
Pipeline #2988 passed with stage
in 49 seconds
...@@ -75,6 +75,8 @@ Command Command::fromString(const QString& source) ...@@ -75,6 +75,8 @@ Command Command::fromString(const QString& source)
return parseAuthenticate(rootobj); return parseAuthenticate(rootobj);
case Action::storeToken: case Action::storeToken:
return parseStoreToken(rootobj); return parseStoreToken(rootobj);
case Action::updateExperimentState:
return parseUpdateExperimentState(rootobj);
case Action::sendHistogramUpdate: case Action::sendHistogramUpdate:
case Action::moveTargetCloser: case Action::moveTargetCloser:
case Action::moveTargetFarther: case Action::moveTargetFarther:
...@@ -88,7 +90,6 @@ Command Command::fromString(const QString& source) ...@@ -88,7 +90,6 @@ Command Command::fromString(const QString& source)
return parseError(rootobj); return parseError(rootobj);
// Not yet implemented: // Not yet implemented:
case Action::queryServerInformation: case Action::queryServerInformation:
case Action::updateExperimentState:
case Action::updateHistogram: case Action::updateHistogram:
case Action::setTargetState: case Action::setTargetState:
case Action::fillHistogram: case Action::fillHistogram:
...@@ -183,6 +184,29 @@ Protocol::Command Protocol::Command::parseError(const QJsonObject& input) ...@@ -183,6 +184,29 @@ Protocol::Command Protocol::Command::parseError(const QJsonObject& input)
); );
} }
Protocol::Command Protocol::Command::parseUpdateExperimentState(const QJsonObject& input)
{
if (
!input.keys().contains(QStringLiteral("action")) || !input.value(QStringLiteral("action")).isString()
|| !input.keys().contains(QStringLiteral("adcstate")) || !input.value(QStringLiteral("adcstate")).isString()
|| !input.keys().contains(QStringLiteral("adcthreshold")) || !input.value(QStringLiteral("adcthreshold")).isString()
|| !input.keys().contains(QStringLiteral("beamhole")) || !input.value(QStringLiteral("beamhole")).isString()
|| !input.keys().contains(QStringLiteral("pressurehPa")) || !input.value(QStringLiteral("pressurehPa")).isString()
|| !input.keys().contains(QStringLiteral("targetposition")) || !input.value(QStringLiteral("targetposition")).isString()
|| !input.keys().contains(QStringLiteral("token")) || !input.value(QStringLiteral("token")).isString()
|| !input.keys().contains(QStringLiteral("vacuumvalve")) || !input.value(QStringLiteral("vacuumvalve")).isString()
) {
logError(QStringLiteral("At least one property of the updateExperimentState command is missing or not a string."));
return Command();
}
return Command(
Action::updateExperimentState,
Arguments{std::make_pair(QStringLiteral("adcstate"), input.value(QStringLiteral("adcstate")).toString()), std::make_pair(QStringLiteral("adcthreshold"), input.value(QStringLiteral("adcthreshold")).toString()), std::make_pair(QStringLiteral("beamhole"), input.value(QStringLiteral("beamhole")).toString()), std::make_pair(QStringLiteral("pressurehPa"), input.value(QStringLiteral("pressurehPa")).toString()), std::make_pair(QStringLiteral("targetposition"), input.value(QStringLiteral("targetposition")).toString()), std::make_pair(QStringLiteral("vacuumvalve"), input.value(QStringLiteral("vacuumvalve")).toString())},
input.value(QStringLiteral("token")).toString()
);
}
QString Command::toString() const QString Command::toString() const
{ {
if (action == Action::invalid) if (action == Action::invalid)
......
...@@ -72,6 +72,7 @@ private: ...@@ -72,6 +72,7 @@ private:
static Command parseAuthenticate(const QJsonObject& input); static Command parseAuthenticate(const QJsonObject& input);
static Command parseStoreToken(const QJsonObject& input); static Command parseStoreToken(const QJsonObject& input);
static Command parseError(const QJsonObject& input); static Command parseError(const QJsonObject& input);
static Command parseUpdateExperimentState(const QJsonObject& input);
static QString getActionString(const Action action); static QString getActionString(const Action action);
}; };
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment