blob: 287442a02290eed77c09e22b78778123c65a31c1 [file] [log] [blame]
// Copyright 2016 The Chromium 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 NET_NQE_WEIGHTED_OBSERVATION_H_
#define NET_NQE_WEIGHTED_OBSERVATION_H_
#include <vector>
#include "base/gtest_prod_util.h"
#include "base/macros.h"
#include "base/time/time.h"
#include "net/base/net_export.h"
#include "net/nqe/network_quality_observation_source.h"
namespace net {
namespace nqe {
namespace internal {
// Holds an observation and its weight.
template <typename ValueType>
struct NET_EXPORT_PRIVATE WeightedObservation {
WeightedObservation(ValueType value, double weight)
: value(value), weight(weight) {}
WeightedObservation(const WeightedObservation& other)
: WeightedObservation(other.value, other.weight) {}
WeightedObservation& operator=(const WeightedObservation& other) {
value = other.value;
weight = other.weight;
return *this;
}
// Required for sorting the samples in the ascending order of values.
bool operator<(const WeightedObservation& other) const {
return (value < other.value);
}
// Value of the sample.
ValueType value;
// Weight of the sample. This is computed based on how much time has passed
// since the sample was taken.
double weight;
};
} // namespace internal
} // namespace nqe
} // namespace net
#endif // NET_NQE_WEIGHTED_OBSERVATION_H_