1
#pragma once
2

            
3
#include "envoy/common/pure.h"
4

            
5
#include "absl/status/statusor.h"
6

            
7
namespace Envoy {
8
namespace Extensions {
9
namespace ResourceMonitors {
10
namespace CpuUtilizationMonitor {
11

            
12
class CpuStatsReader {
13
public:
14
50
  CpuStatsReader() = default;
15
50
  virtual ~CpuStatsReader() = default;
16

            
17
  /**
18
   * Update CPU statistics and calculate current utilization.
19
   * Each implementation tracks its own previous state internally and
20
   * performs implementation-specific calculation logic.
21
   * @return StatusOr containing utilization value (0.0 to 1.0) on success,
22
   *         or InvalidArgumentError if calculation fails.
23
   */
24
  virtual absl::StatusOr<double> getUtilization() PURE;
25
};
26

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