summaryrefslogtreecommitdiff
path: root/src/ingestor.hpp
diff options
context:
space:
mode:
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>>;