Seems to work now

This commit is contained in:
Ian Roddis
2022-01-12 13:11:55 -04:00
parent 9a5a247f15
commit 868e74fbeb
4 changed files with 29 additions and 36 deletions

View File

@@ -77,14 +77,15 @@ namespace daggy::daggyr {
bool resolved;
};
std::mutex resolvedGuard_;
std::string resolved_;
size_t nResolved_;
void monitor();
std::atomic<bool> running_;
std::thread monitorWorker_;
std::mutex pendingGuard_;
std::unordered_map<TaskID, PendingJob> pending_;
std::mutex resolvedGuard_;
std::deque<std::string> resolved_;
};
} // namespace daggy::daggyr

View File

@@ -38,6 +38,8 @@ namespace daggy::daggyr {
, executor_(maxCores)
, maxCapacity_{maxCores, maxMemoryMB}
, curCapacity_{maxCores, maxMemoryMB}
, resolved_("[")
, nResolved_(0)
, running_(true)
, monitorWorker_(&Server::monitor, this)
{
@@ -200,8 +202,16 @@ namespace daggy::daggyr {
{
std::lock_guard<std::mutex> lock(resolvedGuard_);
for (const auto &[_, item] : payloads)
resolved_.push_back(item);
for (const auto &[_, item] : payloads) {
if (resolved_.empty()) {
resolved_ = "[";
}
if (nResolved_ > 0)
resolved_ += ',';
resolved_ += item;
++nResolved_;
}
}
std::this_thread::sleep_for(std::chrono::seconds(1));
@@ -213,37 +223,16 @@ namespace daggy::daggyr {
{
if (!handleAuth(request))
return;
auto ss = Clock::now();
std::stringstream payload;
payload << "[";
bool first = true;
size_t cnt = 0;
std::string payload = "[";
payload.reserve(65536);
{
std::lock_guard<std::mutex> lock(resolvedGuard_);
cnt = resolved_.size();
for (const auto &item : resolved_) {
if (first) {
first = false;
}
else {
payload << ", ";
}
payload << item;
}
resolved_.clear();
payload.swap(resolved_);
nResolved_ = 0;
}
payload << "]";
payload += "]";
auto payloadStr = payload.str();
response.send(Pistache::Http::Code::Ok, payloadStr);
auto ee = Clock::now();
std::cout
<< "Completed request: with " << cnt << " updates in"
<< " total ("
<< std::chrono::duration_cast<std::chrono::nanoseconds>(ee - ss).count()
<< " ns)\n";
response.send(Pistache::Http::Code::Ok, payload);
}
void Server::handleStopTask(const Pistache::Rest::Request &request,