From efc0c2cbcdedad5675ba02ef6f4755d030499ffd Mon Sep 17 00:00:00 2001 From: Joel Klinghed Date: Fri, 17 Jul 2020 16:08:26 +0200 Subject: api/taskz?after= is apparently not cummulative So just write the last state. --- src/goma.cc | 43 +++++-------------------------------------- 1 file changed, 5 insertions(+), 38 deletions(-) diff --git a/src/goma.cc b/src/goma.cc index 717d7b1..c82920d 100644 --- a/src/goma.cc +++ b/src/goma.cc @@ -8,7 +8,6 @@ #include #include #include -#include #include "args.hh" #include "cairo.hh" @@ -62,8 +61,6 @@ private: std::unique_ptr curl(curl_easy_init()); uint64_t after = 0; - std::unordered_set active; - std::unordered_set failed; curl_easy_setopt(curl.get(), CURLOPT_NOPROGRESS, 1L); curl_easy_setopt(curl.get(), CURLOPT_WRITEFUNCTION, @@ -81,7 +78,7 @@ private: curl_easy_setopt(curl.get(), CURLOPT_URL, url.c_str()); auto ret = curl_easy_perform(curl.get()); if (ret == CURLE_OK) { - parse(content_, &state, &active, &failed, &after); + parse(content_, &state, &after); } else { state.error_ = true; state.msg_ = curl_easy_strerror(ret); @@ -99,11 +96,11 @@ private: } static void parse(std::string const& content, State* state, - std::unordered_set* active, - std::unordered_set* failed, uint64_t* after) { *after = 0; state->error_ = false; + state->running_ = 0; + state->failed_ = 0; rapidjson::Document doc; doc.Parse(content.data(), content.size()); @@ -121,45 +118,15 @@ private: if (doc.HasMember("active")) { auto& member = doc["active"]; if (member.IsArray()) { - for (auto& task : member.GetArray()) { - if (task.HasMember("id")) { - auto& id = task["id"]; - if (id.IsUint64()) { - active->insert(id.GetUint64()); - } - } - } + state->running_ = member.Size(); } } if (doc.HasMember("failed")) { auto& member = doc["failed"]; if (member.IsArray()) { - for (auto& task : member.GetArray()) { - if (task.HasMember("id")) { - auto& id = task["id"]; - if (id.IsUint64()) { - failed->insert(id.GetUint64()); - } - } - } + state->failed_ = member.Size(); } } - if (doc.HasMember("finished")) { - auto& member = doc["finished"]; - if (member.IsArray()) { - for (auto& task : member.GetArray()) { - if (task.HasMember("id")) { - auto& id = task["id"]; - if (id.IsUint64()) { - active->erase(id.GetUint64()); - } - } - } - } - } - - state->running_ = active->size(); - state->failed_ = failed->size(); } static size_t write_callback(char* ptr, size_t size, size_t nmemb, -- cgit v1.3