Remove unused PacketLossEstimator class

These metrics were never hooked up to anything.

Bug: webrtc:7028
Change-Id: Id6fdf146de615839820f7ad3805eb42450c76c21
Reviewed-on: https://webrtc-review.googlesource.com/c/120303
Commit-Queue: Qingsi Wang <qingsi@webrtc.org>
Reviewed-by: Björn Terelius <terelius@webrtc.org>
Reviewed-by: Qingsi Wang <qingsi@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26451}
diff --git a/p2p/BUILD.gn b/p2p/BUILD.gn
index 6148105..633dc95 100644
--- a/p2p/BUILD.gn
+++ b/p2p/BUILD.gn
@@ -41,8 +41,6 @@
     "base/p2p_constants.h",
     "base/p2p_transport_channel.cc",
     "base/p2p_transport_channel.h",
-    "base/packet_loss_estimator.cc",
-    "base/packet_loss_estimator.h",
     "base/packet_socket_factory.cc",
     "base/packet_socket_factory.h",
     "base/packet_transport_interface.h",
@@ -158,7 +156,6 @@
       "base/ice_credentials_iterator_unittest.cc",
       "base/mdns_message_unittest.cc",
       "base/p2p_transport_channel_unittest.cc",
-      "base/packet_loss_estimator_unittest.cc",
       "base/port_allocator_unittest.cc",
       "base/port_unittest.cc",
       "base/pseudo_tcp_unittest.cc",
diff --git a/p2p/base/packet_loss_estimator.cc b/p2p/base/packet_loss_estimator.cc
deleted file mode 100644
index 435fbb0..0000000
--- a/p2p/base/packet_loss_estimator.cc
+++ /dev/null
@@ -1,107 +0,0 @@
-/*
- *  Copyright 2017 The WebRTC Project Authors. All rights reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-#include "p2p/base/packet_loss_estimator.h"
-
-#include "rtc_base/checks.h"
-
-namespace cricket {
-
-PacketLossEstimator::PacketLossEstimator(int64_t consider_lost_after_ms,
-                                         int64_t forget_after_ms)
-    : consider_lost_after_ms_(consider_lost_after_ms),
-      forget_after_ms_(forget_after_ms) {
-  RTC_DCHECK_LT(consider_lost_after_ms, forget_after_ms);
-}
-
-PacketLossEstimator::~PacketLossEstimator() = default;
-
-void PacketLossEstimator::ExpectResponse(std::string id, int64_t sent_time) {
-  tracked_packets_[id] = PacketInfo{sent_time, false};
-
-  // Called to free memory in case the client hasn't called UpdateResponseRate
-  // in a while.
-  MaybeForgetOldRequests(sent_time);
-}
-
-void PacketLossEstimator::ReceivedResponse(std::string id,
-                                           int64_t received_time) {
-  auto iter = tracked_packets_.find(id);
-  if (iter != tracked_packets_.end()) {
-    auto& packet_info = iter->second;
-    packet_info.response_received = true;
-  }
-
-  // Called to free memory in case the client hasn't called UpdateResponseRate
-  // in a while.
-  MaybeForgetOldRequests(received_time);
-}
-
-void PacketLossEstimator::UpdateResponseRate(int64_t now) {
-  int responses_expected = 0;
-  int responses_received = 0;
-
-  for (auto iter = tracked_packets_.begin(); iter != tracked_packets_.end();) {
-    const auto& packet_info = iter->second;
-    if (Forget(packet_info, now)) {
-      iter = tracked_packets_.erase(iter);
-      continue;
-    }
-    if (packet_info.response_received) {
-      responses_expected += 1;
-      responses_received += 1;
-    } else if (ConsiderLost(packet_info, now)) {
-      responses_expected += 1;
-    }
-    ++iter;
-  }
-
-  if (responses_expected > 0) {
-    response_rate_ =
-        static_cast<double>(responses_received) / responses_expected;
-  } else {
-    response_rate_ = 1.0;
-  }
-
-  last_forgot_at_ = now;
-}
-
-void PacketLossEstimator::MaybeForgetOldRequests(int64_t now) {
-  if (now - last_forgot_at_ <= forget_after_ms_) {
-    return;
-  }
-
-  for (auto iter = tracked_packets_.begin(); iter != tracked_packets_.end();) {
-    const auto& packet_info = iter->second;
-    if (Forget(packet_info, now)) {
-      iter = tracked_packets_.erase(iter);
-    } else {
-      ++iter;
-    }
-  }
-
-  last_forgot_at_ = now;
-}
-
-bool PacketLossEstimator::ConsiderLost(const PacketInfo& packet_info,
-                                       int64_t now) const {
-  return packet_info.sent_time < now - consider_lost_after_ms_;
-}
-
-bool PacketLossEstimator::Forget(const PacketInfo& packet_info,
-                                 int64_t now) const {
-  return now - packet_info.sent_time > forget_after_ms_;
-}
-
-std::size_t PacketLossEstimator::tracked_packet_count_for_testing() const {
-  return tracked_packets_.size();
-}
-
-}  // namespace cricket
diff --git a/p2p/base/packet_loss_estimator.h b/p2p/base/packet_loss_estimator.h
deleted file mode 100644
index 09a46fd..0000000
--- a/p2p/base/packet_loss_estimator.h
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- *  Copyright 2017 The WebRTC Project Authors. All rights reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-#ifndef P2P_BASE_PACKET_LOSS_ESTIMATOR_H_
-#define P2P_BASE_PACKET_LOSS_ESTIMATOR_H_
-
-#include <stddef.h>
-#include <stdint.h>
-#include <string>
-#include <unordered_map>
-
-namespace cricket {
-
-// Estimates the response rate for a series of messages expecting responses.
-// Messages and their corresponding responses are identified by a string id.
-//
-// Responses are considered lost if they are not received within
-// |consider_lost_after_ms|. If a response is received after
-// |consider_lost_after_ms|, it is still considered as a response.
-// Messages sent more than |forget_after_ms| ago are not considered
-// anymore. The response rate is initially assumed to be 1.0.
-//
-// If the current time is 7, |forget_after_ms| is 6, and
-// |consider_lost_after_ms| is 2, the response rate considers messages sent
-// between times 1 and 5, so only messages in the following window can be
-// considered lost:
-//
-// Time: 0 1 2 3 4 5 6 7
-// Wind:   <------->   |
-//
-// Responses received to the right of the window are still counted.
-class PacketLossEstimator {
- public:
-  explicit PacketLossEstimator(int64_t consider_lost_after_ms,
-                               int64_t forget_after_ms);
-  ~PacketLossEstimator();
-
-  // Registers that a message with the given |id| was sent at |sent_time|.
-  void ExpectResponse(std::string id, int64_t sent_time);
-
-  // Registers a response with the given |id| was received at |received_time|.
-  void ReceivedResponse(std::string id, int64_t received_time);
-
-  // Calculates the current response rate based on the expected and received
-  // messages. Messages sent more than |forget_after| ms ago will be forgotten.
-  void UpdateResponseRate(int64_t now);
-
-  // Gets the current response rate as updated by UpdateResponseRate.
-  double get_response_rate() const { return response_rate_; }
-
-  std::size_t tracked_packet_count_for_testing() const;
-
- private:
-  struct PacketInfo {
-    int64_t sent_time;
-    bool response_received;
-  };
-
-  // Called periodically by ExpectResponse and ReceivedResponse to manage memory
-  // usage.
-  void MaybeForgetOldRequests(int64_t now);
-
-  bool ConsiderLost(const PacketInfo&, int64_t now) const;
-  bool Forget(const PacketInfo&, int64_t now) const;
-
-  int64_t consider_lost_after_ms_;
-  int64_t forget_after_ms_;
-
-  int64_t last_forgot_at_ = 0;
-
-  std::unordered_map<std::string, PacketInfo> tracked_packets_;
-
-  double response_rate_ = 1.0;
-};
-
-}  // namespace cricket
-
-#endif  // P2P_BASE_PACKET_LOSS_ESTIMATOR_H_
diff --git a/p2p/base/packet_loss_estimator_unittest.cc b/p2p/base/packet_loss_estimator_unittest.cc
deleted file mode 100644
index f45d52e..0000000
--- a/p2p/base/packet_loss_estimator_unittest.cc
+++ /dev/null
@@ -1,173 +0,0 @@
-/*
- *  Copyright 2017 The WebRTC Project Authors. All rights reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-#include <cstdint>
-#include <utility>
-
-#include "p2p/base/packet_loss_estimator.h"
-#include "test/gtest.h"
-
-using cricket::PacketLossEstimator;
-
-class PacketLossEstimatorTest : public testing::Test {};
-
-TEST_F(PacketLossEstimatorTest, InitialResponseRate) {
-  PacketLossEstimator ple(5, 100);
-  EXPECT_EQ(1.0, ple.get_response_rate());
-}
-
-TEST_F(PacketLossEstimatorTest, InitialUpdateResponseRate) {
-  PacketLossEstimator ple(5, 100);
-  ple.UpdateResponseRate(10);
-  EXPECT_EQ(1.0, ple.get_response_rate());
-}
-
-TEST_F(PacketLossEstimatorTest, ResponseReceived) {
-  PacketLossEstimator ple(5, 100);
-
-  ple.ExpectResponse("a", 0);
-  ple.ReceivedResponse("a", 1);
-  ple.UpdateResponseRate(2);
-
-  EXPECT_EQ(1.0, ple.get_response_rate());
-}
-
-TEST_F(PacketLossEstimatorTest, ResponseNotConsideredLostYet) {
-  PacketLossEstimator ple(5, 100);
-
-  ple.ExpectResponse("a", 0);
-  ple.UpdateResponseRate(2);
-
-  EXPECT_EQ(1.0, ple.get_response_rate());
-}
-
-TEST_F(PacketLossEstimatorTest, ResponseConsideredLost) {
-  PacketLossEstimator ple(5, 100);
-
-  ple.ExpectResponse("a", 0);
-  ple.UpdateResponseRate(10);
-
-  EXPECT_EQ(0.0, ple.get_response_rate());
-}
-
-TEST_F(PacketLossEstimatorTest, ResponseLate) {
-  PacketLossEstimator ple(5, 100);
-
-  ple.ExpectResponse("a", 0);
-  ple.ReceivedResponse("a", 6);
-  ple.UpdateResponseRate(10);
-
-  EXPECT_EQ(1.0, ple.get_response_rate());
-}
-
-TEST_F(PacketLossEstimatorTest, ResponseForgotten) {
-  PacketLossEstimator ple(5, 100);
-  ple.ExpectResponse("a", 0);
-  ple.UpdateResponseRate(101);
-
-  EXPECT_EQ(1.0, ple.get_response_rate());
-}
-
-TEST_F(PacketLossEstimatorTest, Lost1_Received1) {
-  PacketLossEstimator ple(5, 100);
-
-  ple.ExpectResponse("a", 0);
-  ple.ExpectResponse("b", 2);
-  ple.ReceivedResponse("b", 6);
-  ple.UpdateResponseRate(7);
-
-  EXPECT_EQ(0.5, ple.get_response_rate());
-}
-
-static const std::pair<std::string, int64_t> kFivePackets[5] = {{"a", 0},
-                                                                {"b", 2},
-                                                                {"c", 4},
-                                                                {"d", 6},
-                                                                {"e", 8}};
-
-// Time: 0 1 2 3 4 5 6 7 8 9 10
-// Sent: a   b   c   d   e   |
-// Recv:       b             |
-// Wind: -------------->     |
-TEST_F(PacketLossEstimatorTest, Lost3_Received1_Waiting1) {
-  PacketLossEstimator ple(3, 100);
-
-  for (const auto& p : kFivePackets) {
-    ple.ExpectResponse(p.first, p.second);
-  }
-  ple.ReceivedResponse("b", 3);
-  ple.UpdateResponseRate(10);
-  EXPECT_EQ(0.25, ple.get_response_rate());
-}
-
-// Time: 0 1 2 3 4 5 6 7 8 9 10
-// Sent: a   b   c   d   e   |
-// Recv:                   e |
-// Wind: -------------->     |
-TEST_F(PacketLossEstimatorTest, Lost4_Early1) {
-  PacketLossEstimator ple(3, 100);
-
-  for (const auto& p : kFivePackets) {
-    ple.ExpectResponse(p.first, p.second);
-  }
-  ple.ReceivedResponse("e", 9);
-  ple.UpdateResponseRate(10);
-  // e should be considered, even though its response was received less than
-  // |consider_lost_after_ms| ago.
-  EXPECT_EQ(0.2, ple.get_response_rate());
-}
-
-// Time: 0 1 2 3 4 5 6 7 8 9 10
-// Sent: a   b   c   d   e   |
-// Recv:           c         |
-// Wind:       <------->     |
-TEST_F(PacketLossEstimatorTest, Forgot2_Received1_Lost1_Waiting1) {
-  PacketLossEstimator ple(3, 7);
-
-  for (const auto& p : kFivePackets) {
-    ple.ExpectResponse(p.first, p.second);
-  }
-  ple.ReceivedResponse("c", 5);
-  ple.UpdateResponseRate(10);
-  EXPECT_EQ(0.5, ple.get_response_rate());
-}
-
-// Tests that old messages are forgotten if ExpectResponse is called
-// |forget_after_ms| after |last_forgot_at|. It is important that ExpectResponse
-// and ReceivedResponse forget old messages to avoid |tracked_packets_| growing
-// without bound if UpdateResponseRate is never called (or rarely called).
-//
-// Time: 0 1 2 3 4 5 6
-// Sent: a           b
-// Wind:   <------->
-TEST_F(PacketLossEstimatorTest, ExpectResponseForgetsOldPackets) {
-  PacketLossEstimator ple(1, 5);
-  ple.ExpectResponse("a", 0);  // This message will be forgotten.
-  ple.ExpectResponse("b", 6);  // This call should trigger clean up.
-  // a should be forgotten, b should be tracked.
-  EXPECT_EQ(1u, ple.tracked_packet_count_for_testing());
-}
-
-// Tests that old messages are forgotten if ExpectResponse is called
-// |forget_after_ms| after |last_forgot_at|. It is important that ExpectResponse
-// and ReceivedResponse forget old messages to avoid |tracked_packets_| growing
-// without bound if UpdateResponseRate is never called (or rarely called).
-//
-// Time: 0 1 2 3 4 5 6
-// Sent: a
-// Recv:             b
-// Wind:   <------->
-TEST_F(PacketLossEstimatorTest, ReceivedResponseForgetsOldPackets) {
-  PacketLossEstimator ple(1, 5);
-  ple.ExpectResponse("a", 0);    // This message will be forgotten.
-  ple.ReceivedResponse("b", 6);  // This call should trigger clean up.
-  // a should be forgoten, b should not be tracked (received but not sent).
-  EXPECT_EQ(0u, ple.tracked_packet_count_for_testing());
-}
diff --git a/p2p/base/port.cc b/p2p/base/port.cc
index d6e8cdd..1977408 100644
--- a/p2p/base/port.cc
+++ b/p2p/base/port.cc
@@ -153,12 +153,6 @@
 // it to a little higher than a total STUN timeout.
 const int kPortTimeoutDelay = cricket::STUN_TOTAL_TIMEOUT + 5000;
 
-// For packet loss estimation.
-const int64_t kConsiderPacketLostAfter = 3000;  // 3 seconds
-
-// For packet loss estimation.
-const int64_t kForgetPacketAfter = 30000;  // 30 seconds
-
 }  // namespace
 
 namespace cricket {
@@ -1120,7 +1114,6 @@
       last_ping_received_(0),
       last_data_received_(0),
       last_ping_response_received_(0),
-      packet_loss_estimator_(kConsiderPacketLostAfter, kForgetPacketAfter),
       reported_(false),
       state_(IceCandidatePairState::WAITING),
       time_created_ms_(rtc::TimeMillis()) {
@@ -1513,7 +1506,6 @@
     nomination = nomination_;
   }
   pings_since_last_response_.push_back(SentPing(req->id(), now, nomination));
-  packet_loss_estimator_.ExpectResponse(req->id(), now);
   RTC_LOG(LS_VERBOSE) << ToString() << ": Sending STUN ping, id="
                       << rtc::hex_encode(req->id())
                       << ", nomination=" << nomination_;
@@ -1710,9 +1702,6 @@
   }
   ReceivedPingResponse(rtt, request->id());
 
-  int64_t time_received = rtc::TimeMillis();
-  packet_loss_estimator_.ReceivedResponse(request->id(), time_received);
-
   stats_.recv_ping_responses++;
   LogCandidatePairEvent(
       webrtc::IceCandidatePairEventType::kCheckResponseReceived,
diff --git a/p2p/base/port.h b/p2p/base/port.h
index cd8b737..5f07eb4 100644
--- a/p2p/base/port.h
+++ b/p2p/base/port.h
@@ -25,7 +25,6 @@
 #include "logging/rtc_event_log/ice_logger.h"
 #include "p2p/base/candidate_pair_interface.h"
 #include "p2p/base/p2p_constants.h"
-#include "p2p/base/packet_loss_estimator.h"
 #include "p2p/base/packet_socket_factory.h"
 #include "p2p/base/port_interface.h"
 #include "p2p/base/stun.h"
@@ -837,8 +836,6 @@
   int64_t receiving_unchanged_since_ = 0;
   std::vector<SentPing> pings_since_last_response_;
 
-  PacketLossEstimator packet_loss_estimator_;
-
   absl::optional<int> unwritable_timeout_;
   absl::optional<int> unwritable_min_checks_;
   absl::optional<int> inactive_timeout_;