| Index: net/spdy/lifo_write_scheduler.h
|
| diff --git a/net/spdy/lifo_write_scheduler.h b/net/spdy/lifo_write_scheduler.h
|
| deleted file mode 100644
|
| index 1242c8fc6a90fb5f0bd9153580db7ea7be9ded00..0000000000000000000000000000000000000000
|
| --- a/net/spdy/lifo_write_scheduler.h
|
| +++ /dev/null
|
| @@ -1,183 +0,0 @@
|
| -// Copyright (c) 2017 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_SPDY_LIFO_WRITE_SCHEDULER_H_
|
| -#define NET_SPDY_LIFO_WRITE_SCHEDULER_H_
|
| -
|
| -#include <map>
|
| -#include <set>
|
| -#include <tuple>
|
| -#include <vector>
|
| -
|
| -#include "net/spdy/platform/api/spdy_string_utils.h"
|
| -#include "net/spdy/write_scheduler.h"
|
| -
|
| -namespace net {
|
| -
|
| -namespace test {
|
| -
|
| -template <typename StreamIdType>
|
| -class LifoWriteSchedulerPeer;
|
| -
|
| -} // namespace test
|
| -
|
| -// Create a write scheduler where the stream added last will have the highest
|
| -// priority.
|
| -template <typename StreamIdType>
|
| -class LifoWriteScheduler : public WriteScheduler<StreamIdType> {
|
| - public:
|
| - using typename WriteScheduler<StreamIdType>::StreamPrecedenceType;
|
| -
|
| - LifoWriteScheduler() = default;
|
| -
|
| - void RegisterStream(StreamIdType stream_id,
|
| - const StreamPrecedenceType& /*precedence*/) override;
|
| -
|
| - void UnregisterStream(StreamIdType stream_id) override;
|
| -
|
| - bool StreamRegistered(StreamIdType stream_id) const override {
|
| - return registered_streams_.find(stream_id) != registered_streams_.end();
|
| - }
|
| -
|
| - // Stream precedence is not supported by this scheduler.
|
| - StreamPrecedenceType GetStreamPrecedence(
|
| - StreamIdType stream_id) const override {
|
| - return StreamPrecedenceType(kV3LowestPriority);
|
| - }
|
| -
|
| - void UpdateStreamPrecedence(StreamIdType stream_id,
|
| - const StreamPrecedenceType& precedence) override {
|
| - }
|
| -
|
| - std::vector<StreamIdType> GetStreamChildren(
|
| - StreamIdType stream_id) const override {
|
| - return std::vector<StreamIdType>();
|
| - }
|
| -
|
| - void RecordStreamEventTime(StreamIdType stream_id,
|
| - int64_t now_in_usec) override;
|
| -
|
| - int64_t GetLatestEventWithPrecedence(StreamIdType stream_id) const override;
|
| -
|
| - StreamIdType PopNextReadyStream() override;
|
| -
|
| - std::tuple<StreamIdType, StreamPrecedenceType>
|
| - PopNextReadyStreamAndPrecedence() override {
|
| - return std::make_tuple(PopNextReadyStream(),
|
| - StreamPrecedenceType(kV3LowestPriority));
|
| - }
|
| -
|
| - bool ShouldYield(StreamIdType stream_id) const override {
|
| - // stream_id is not necessary to be on the ready list.
|
| - return stream_id < *ready_streams_.rbegin();
|
| - }
|
| -
|
| - void MarkStreamReady(StreamIdType stream_id, bool /*add_to_front*/) override;
|
| -
|
| - void MarkStreamNotReady(StreamIdType stream_id) override;
|
| -
|
| - bool HasReadyStreams() const override { return !ready_streams_.empty(); }
|
| - size_t NumReadyStreams() const override { return ready_streams_.size(); }
|
| -
|
| - private:
|
| - friend class test::LifoWriteSchedulerPeer<StreamIdType>;
|
| -
|
| - std::set<StreamIdType> ready_streams_;
|
| - std::map<StreamIdType, int64_t> registered_streams_;
|
| -};
|
| -
|
| -template <typename StreamIdType>
|
| -void LifoWriteScheduler<StreamIdType>::RegisterStream(
|
| - StreamIdType stream_id,
|
| - const StreamPrecedenceType& /*precedence*/) {
|
| - if (StreamRegistered(stream_id)) {
|
| - SPDY_BUG << "Stream " << stream_id << " already registered";
|
| - return;
|
| - }
|
| - registered_streams_.emplace_hint(registered_streams_.end(), stream_id, 0);
|
| -}
|
| -
|
| -template <typename StreamIdType>
|
| -void LifoWriteScheduler<StreamIdType>::UnregisterStream(
|
| - StreamIdType stream_id) {
|
| - if (!StreamRegistered(stream_id)) {
|
| - SPDY_BUG << "Stream " << stream_id << " is not registered";
|
| - return;
|
| - }
|
| - registered_streams_.erase(stream_id);
|
| -}
|
| -
|
| -template <typename StreamIdType>
|
| -void LifoWriteScheduler<StreamIdType>::RecordStreamEventTime(
|
| - StreamIdType stream_id,
|
| - int64_t now_in_usec) {
|
| - auto it = registered_streams_.find(stream_id);
|
| - if (it != registered_streams_.end()) {
|
| - it->second = now_in_usec;
|
| - } else {
|
| - SPDY_BUG << "Stream " << stream_id << " is not registered";
|
| - }
|
| -}
|
| -
|
| -template <typename StreamIdType>
|
| -int64_t LifoWriteScheduler<StreamIdType>::GetLatestEventWithPrecedence(
|
| - StreamIdType stream_id) const {
|
| - if (!StreamRegistered(stream_id)) {
|
| - SPDY_BUG << "Stream " << stream_id << " is not registered";
|
| - return 0;
|
| - }
|
| - int64_t latest_event_time_us = 0;
|
| - for (auto it = registered_streams_.rbegin(); it != registered_streams_.rend();
|
| - ++it) {
|
| - if (stream_id < it->first) {
|
| - if (it->second > latest_event_time_us) {
|
| - latest_event_time_us = it->second;
|
| - }
|
| - } else {
|
| - break;
|
| - }
|
| - }
|
| - return latest_event_time_us;
|
| -}
|
| -
|
| -template <typename StreamIdType>
|
| -StreamIdType LifoWriteScheduler<StreamIdType>::PopNextReadyStream() {
|
| - if (ready_streams_.empty()) {
|
| - SPDY_BUG << "No ready streams available";
|
| - return 0;
|
| - }
|
| - auto it = --ready_streams_.end();
|
| - StreamIdType id = *it;
|
| - ready_streams_.erase(it);
|
| - return id;
|
| -}
|
| -
|
| -template <typename StreamIdType>
|
| -void LifoWriteScheduler<StreamIdType>::MarkStreamReady(StreamIdType stream_id,
|
| - bool /*add_to_front*/) {
|
| - if (!StreamRegistered(stream_id)) {
|
| - SPDY_BUG << "Stream " << stream_id << " is not registered";
|
| - return;
|
| - }
|
| - if (ready_streams_.find(stream_id) != ready_streams_.end()) {
|
| - SPDY_BUG << "Stream already exists in the list";
|
| - return;
|
| - }
|
| - ready_streams_.insert(stream_id);
|
| -}
|
| -
|
| -template <typename StreamIdType>
|
| -void LifoWriteScheduler<StreamIdType>::MarkStreamNotReady(
|
| - StreamIdType stream_id) {
|
| - auto it = ready_streams_.find(stream_id);
|
| - if (it == ready_streams_.end()) {
|
| - SPDY_BUG << "Try to remove a stream that is not on list";
|
| - return;
|
| - }
|
| - ready_streams_.erase(it);
|
| -}
|
| -
|
| -} // namespace net
|
| -
|
| -#endif // NET_SPDY_LIFO_WRITE_SCHEDULER_H_
|
|
|