summaryrefslogtreecommitdiff
path: root/src/ingestor.hpp
diff options
context:
space:
mode:
authorDan Goodliffe <dan@randomdan.homeip.net>2026-03-25 18:44:15 +0000
committerDan Goodliffe <dan@randomdan.homeip.net>2026-03-25 18:44:15 +0000
commit426a6a3d9309e3f7cf5fc89d6a687c7895785cc3 (patch)
tree00daab1e20fbd1d5571fd8d8abd3af1c33f5fcf6 /src/ingestor.hpp
parent6a475f58c0fcb4398e48618d90b0ca05750c3ca8 (diff)
downloadwebstat-0.3.tar.bz2
webstat-0.3.tar.xz
webstat-0.3.zip
Revise stats and add signal handlers to log them and reset themwebstat-0.3
Also logs them on main loop exit.
Diffstat (limited to 'src/ingestor.hpp')
-rw-r--r--src/ingestor.hpp18
1 files changed, 14 insertions, 4 deletions
diff --git a/src/ingestor.hpp b/src/ingestor.hpp
index 3f6aa37..fcddc92 100644
--- a/src/ingestor.hpp
+++ b/src/ingestor.hpp
@@ -64,14 +64,20 @@ namespace WebStat {
IngestorSettings settings;
+ struct Stats {
+ size_t linesRead;
+ size_t linesParsed;
+ size_t linesParseFailed;
+ size_t logsInserted;
+ size_t entitiesInserted;
+ constexpr bool operator==(const Ingestor::Stats &) const = default;
+ };
+
protected:
static Ingestor * currentIngestor;
DB::ConnectionPoolPtr dbpool;
+ mutable Stats stats {};
- size_t linesRead = 0;
- size_t linesParsed = 0;
- size_t linesDiscarded = 0;
- size_t linesParked = 0;
std::flat_set<Crc32Value> existingEntities;
LineBatch queuedLines;
@@ -100,12 +106,16 @@ namespace WebStat {
template<typename... T> NewEntities newEntities(const std::tuple<T...> &) const;
void onNewUserAgent(const Entity &) const;
void handleCurlOperations();
+ void logStats() const;
+ void clearStats();
void jobIngestParkedLines(const std::filesystem::path &);
size_t jobIngestParkedLines(FILE *, size_t count);
static void sigtermHandler(int);
void terminate(int);
+ static void sigusr1Handler(int);
+ static void sigusr2Handler(int);
[[gnu::format(printf, 3, 4)]] virtual void log(int level, const char * msgfmt, ...) const = 0;
using CurlOperations = std::map<CURL *, std::unique_ptr<CurlOperation>>;