Fledge
An open source edge computing platform for industrial users
ingest_rate.h
1 #ifndef _INGEST_RATE_H
2 #define _INGEST_RATE_H
3 /*
4  * Fledge reading ingest rate.
5  *
6  * Copyright (c) 2024 Dianomic Systems
7  *
8  * Released under the Apache 2.0 Licence
9  *
10  * Author: Mark Riddoch
11  */
12 #include <logger.h>
13 #include <vector>
14 #include <queue>
15 #include <chrono>
16 #include <mutex>
17 #include <condition_variable>
18 #include <filter_plugin.h>
19 #include <filter_pipeline.h>
20 #include <asset_tracking.h>
21 #include <service_handler.h>
22 #include <set>
23 #include <ingest.h>
24 
25 #define IGRSAMPLES 10 // The number of samples used to calculate initial average
26 
49 class IngestRate {
50  public:
51  IngestRate(ManagementClient *mgmtClient, const std::string& service);
52  ~IngestRate();
53  void ingest(unsigned int numberReadings);
54  void periodic();
55  void updateConfig(int interval, int factor);
56  void relearn();
57  private:
58  void updateCounters();
59  private:
60  ManagementClient *m_mgmtClient;
61  std::string m_service;
62  int m_currentInterval;
63  int m_numIntervals;
64  unsigned long m_thisInterval;
65  double m_mean;
66  double m_dsq;
67  unsigned long m_count;
68  double m_factor;
69  std::mutex m_mutex;
70  bool m_alerted;
71  bool m_primed;
72 };
73 #endif
~IngestRate()
Destructor for the ingest rate class.
Definition: ingestRate.cpp:30
IngestRate(ManagementClient *mgmtClient, const std::string &service)
Constructor for ingest rate class.
Definition: ingestRate.cpp:21
void periodic()
Called periodically by the stats update thread.
Definition: ingestRate.cpp:89
void ingest(unsigned int numberReadings)
Called each time we ingest any readings.
Definition: ingestRate.cpp:78
The management client class used by services and tasks to communicate with the management API of the ...
Definition: management_client.h:43
void updateConfig(int interval, int factor)
Update the configuration of the ingest rate mechanism.
Definition: ingestRate.cpp:40
void relearn()
The configuration has changed so we need to reset our state and go back into the mode of determining ...
Definition: ingestRate.cpp:63
A class used to track and report on the ingest rates of a data stream.
Definition: ingest_rate.h:49