blob: f82f47ea1c75e490581085685f91f3e9f1d3c524 [file] [log] [blame]
// Copyright (c) 2019 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.
#include "net/third_party/quiche/src/quic/quartc/test/quartc_competing_endpoint.h"
#include <utility>
#include "net/third_party/quiche/src/quic/platform/api/quic_str_cat.h"
namespace quic {
namespace test {
QuartcCompetingEndpoint::QuartcCompetingEndpoint(
simulator::Simulator* simulator,
QuicTime::Delta send_interval,
QuicByteCount bytes_per_interval,
const std::string& name,
const std::string& peer_name,
Perspective perspective,
QuicConnectionId connection_id)
: Actor(simulator, QuicStrCat(name, " actor")),
send_interval_(send_interval),
bytes_per_interval_(bytes_per_interval),
endpoint_(std::make_unique<simulator::QuicEndpoint>(simulator,
name,
peer_name,
perspective,
connection_id)) {
// Schedule the first send for one send interval into the test.
Schedule(simulator_->GetClock()->Now() + send_interval_);
last_send_time_ = simulator_->GetClock()->Now();
}
void QuartcCompetingEndpoint::Act() {
endpoint_->AddBytesToTransfer(bytes_per_interval_);
if (send_interval_ > QuicTime::Delta::Zero()) {
Schedule(last_send_time_ + send_interval_);
}
last_send_time_ = simulator_->GetClock()->Now();
}
} // namespace test
} // namespace quic