blob: 005cf46c0608deef6f536fffc63f84661c7d1b65 [file] [log] [blame]
// Copyright 2022 The Chromium OS Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef FEDERATED_NETWORK_STATUS_TRAINING_CONDITION_H_
#define FEDERATED_NETWORK_STATUS_TRAINING_CONDITION_H_
#include <base/memory/ref_counted.h>
#include <shill/dbus/client/client.h>
#include <memory>
#include "federated/training_condition.h"
namespace dbus {
class Bus;
} // namespace dbus
namespace federated {
// Monitors the network status and answers whether there the conditions
// are satisfied. Currently, we check that the network is not metered
class NetworkStatusTrainingCondition : public TrainingCondition {
public:
explicit NetworkStatusTrainingCondition(
std::unique_ptr<shill::Client> network_client);
NetworkStatusTrainingCondition(const NetworkStatusTrainingCondition&) =
delete;
NetworkStatusTrainingCondition& operator=(
const NetworkStatusTrainingCondition&) = delete;
~NetworkStatusTrainingCondition() override = default;
// TrainingCondition:
[[nodiscard]] bool IsTrainingConditionSatisfied() const override;
private:
const std::unique_ptr<shill::Client> dbus_network_client_;
};
} // namespace federated
#endif // FEDERATED_NETWORK_STATUS_TRAINING_CONDITION_H_