1
#pragma once
2

            
3
#include "envoy/common/time.h"
4
#include "envoy/extensions/resource_monitors/cpu_utilization/v3/cpu_utilization.pb.h"
5
#include "envoy/server/resource_monitor.h"
6

            
7
#include "source/common/runtime/runtime_features.h"
8
#include "source/extensions/resource_monitors/cpu_utilization/cpu_stats_reader.h"
9

            
10
namespace Envoy {
11
namespace Extensions {
12
namespace ResourceMonitors {
13
namespace CpuUtilizationMonitor {
14

            
15
class CpuUtilizationMonitor : public Server::ResourceMonitor {
16
public:
17
  CpuUtilizationMonitor(
18
      const envoy::extensions::resource_monitors::cpu_utilization::v3::CpuUtilizationConfig& config,
19
      std::unique_ptr<CpuStatsReader> cpu_stats_reader);
20

            
21
  void updateResourceUsage(Server::ResourceUpdateCallbacks& callbacks) override;
22

            
23
private:
24
  double utilization_ = 0.0;
25
  std::unique_ptr<CpuStatsReader> cpu_stats_reader_;
26
};
27

            
28
} // namespace CpuUtilizationMonitor
29
} // namespace ResourceMonitors
30
} // namespace Extensions
31
} // namespace Envoy