-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathglobals.cpp
More file actions
38 lines (32 loc) · 863 Bytes
/
Copy pathglobals.cpp
File metadata and controls
38 lines (32 loc) · 863 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#include "globals.h"
#include <atomic>
#include <deque>
namespace
{
std::atomic<bool> g_stop{false};
std::mutex g_log_mu;
std::deque<std::string> g_log;
constexpr std::size_t kLogCap = 64;
}
bool GlobalEnv::Stop() { return g_stop.load(); }
void GlobalEnv::RequestStop() { g_stop.store(true); }
void GlobalLog::Add(const std::string& line)
{
std::lock_guard<std::mutex> lk(g_log_mu);
g_log.push_back(line);
while (g_log.size() > kLogCap)
{
g_log.pop_front();
}
}
std::vector<std::string> GlobalLog::Recent(std::size_t n)
{
std::lock_guard<std::mutex> lk(g_log_mu);
std::vector<std::string> out;
std::size_t start = g_log.size() > n ? g_log.size() - n : 0;
for (std::size_t i = start; i < g_log.size(); ++i)
{
out.push_back(g_log[i]);
}
return out;
}