#ifndef SERVICES_DEVICE_COMPUTE_PRESSURE_VIRTUAL_CPU_PROBE_MANAGER_H_
#define SERVICES_DEVICE_COMPUTE_PRESSURE_VIRTUAL_CPU_PROBE_MANAGER_H_
#include <memory>
#include "base/functional/callback_forward.h"
#include "base/time/time.h"
#include "services/device/compute_pressure/cpu_probe_manager.h"
#include "services/device/public/cpp/compute_pressure/cpu_pressure_converter.h"
#include "services/device/public/mojom/pressure_update.mojom-shared.h"
namespace device {
class VirtualCpuProbeManager final : public CpuProbeManager {
public:
static std::unique_ptr<VirtualCpuProbeManager> Create(
base::TimeDelta sampling_interval,
base::RepeatingCallback<void(mojom::PressureDataPtr)> sampling_callback);
~VirtualCpuProbeManager() final;
void OnCpuSampleAvailable(std::optional<system_cpu::CpuSample>) override;
void SetPressureState(mojom::PressureState desired_state);
void SetOwnContributionEstimate(double desired_estimate);
private:
VirtualCpuProbeManager(
base::TimeDelta sampling_interval,
base::RepeatingCallback<void(mojom::PressureDataPtr)> sampling_callback);
device::CpuPressureConverter converter_;
double own_contribution_estimate_;
};
}
#endif