Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(365)

Side by Side Diff: net/quic/quic_write_blocked_list.h

Issue 1468773002: Changing from QuicPriority to SpdyPriority. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@107610692
Patch Set: Created 5 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « net/quic/quic_utils.cc ('k') | net/quic/quic_write_blocked_list_test.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 // 4 //
5 #ifndef NET_QUIC_QUIC_WRITE_BLOCKED_LIST_H_ 5 #ifndef NET_QUIC_QUIC_WRITE_BLOCKED_LIST_H_
6 #define NET_QUIC_QUIC_WRITE_BLOCKED_LIST_H_ 6 #define NET_QUIC_QUIC_WRITE_BLOCKED_LIST_H_
7 7
8 #include <set> 8 #include <set>
9 9
10 #include "net/base/net_export.h" 10 #include "net/base/net_export.h"
11 #include "net/quic/quic_flags.h" 11 #include "net/quic/quic_flags.h"
12 #include "net/quic/quic_protocol.h" 12 #include "net/quic/quic_protocol.h"
13 #include "net/spdy/write_blocked_list.h" 13 #include "net/spdy/write_blocked_list.h"
14 14
15 namespace net { 15 namespace net {
16 16
17 // Keeps tracks of the QUIC streams that have data to write, sorted by 17 // Keeps tracks of the QUIC streams that have data to write, sorted by
18 // priority. QUIC stream priority order is: 18 // priority. QUIC stream priority order is:
19 // Crypto stream > Headers stream > Data streams by requested priority. 19 // Crypto stream > Headers stream > Data streams by requested priority.
20 class NET_EXPORT_PRIVATE QuicWriteBlockedList { 20 class NET_EXPORT_PRIVATE QuicWriteBlockedList {
21 private: 21 private:
22 typedef WriteBlockedList<QuicStreamId> QuicWriteBlockedListBase; 22 typedef WriteBlockedList<QuicStreamId> QuicWriteBlockedListBase;
23 23
24 public: 24 public:
25 static const QuicPriority kHighestPriority =
26 static_cast<QuicPriority>(net::kHighestPriority);
27 static const QuicPriority kLowestPriority =
28 static_cast<QuicPriority>(net::kLowestPriority);
29
30 QuicWriteBlockedList(); 25 QuicWriteBlockedList();
31 ~QuicWriteBlockedList(); 26 ~QuicWriteBlockedList();
32 27
33 bool HasWriteBlockedDataStreams() const { 28 bool HasWriteBlockedDataStreams() const {
34 return base_write_blocked_list_.HasWriteBlockedStreams(); 29 return base_write_blocked_list_.HasWriteBlockedStreams();
35 } 30 }
36 31
37 bool HasWriteBlockedCryptoOrHeadersStream() const { 32 bool HasWriteBlockedCryptoOrHeadersStream() const {
38 return crypto_stream_blocked_ || headers_stream_blocked_; 33 return crypto_stream_blocked_ || headers_stream_blocked_;
39 } 34 }
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
96 batch_write_stream_id_[last_priority_popped_] == 0 || 91 batch_write_stream_id_[last_priority_popped_] == 0 ||
97 bytes == 0); 92 bytes == 0);
98 } 93 }
99 } 94 }
100 } 95 }
101 96
102 // Pushes a stream to the back of the std::list for this priority level *unles s* it 97 // Pushes a stream to the back of the std::list for this priority level *unles s* it
103 // is latched for doing batched writes in which case it goes to the front of 98 // is latched for doing batched writes in which case it goes to the front of
104 // the std::list for this priority level. 99 // the std::list for this priority level.
105 // Headers and crypto streams are special cased to always resume first. 100 // Headers and crypto streams are special cased to always resume first.
106 void AddStream(QuicStreamId stream_id, QuicPriority priority) { 101 void AddStream(QuicStreamId stream_id, SpdyPriority priority) {
107 if (stream_id == kCryptoStreamId) { 102 if (stream_id == kCryptoStreamId) {
108 DCHECK_EQ(kHighestPriority, priority); 103 DCHECK_EQ(net::kHighestPriority, priority);
109 // TODO(avd) Add DCHECK(!crypto_stream_blocked_) 104 // TODO(avd) Add DCHECK(!crypto_stream_blocked_)
110 crypto_stream_blocked_ = true; 105 crypto_stream_blocked_ = true;
111 return; 106 return;
112 } 107 }
113 108
114 if (stream_id == kHeadersStreamId) { 109 if (stream_id == kHeadersStreamId) {
115 DCHECK_EQ(kHighestPriority, priority); 110 DCHECK_EQ(net::kHighestPriority, priority);
116 // TODO(avd) Add DCHECK(!headers_stream_blocked_); 111 // TODO(avd) Add DCHECK(!headers_stream_blocked_);
117 headers_stream_blocked_ = true; 112 headers_stream_blocked_ = true;
118 return; 113 return;
119 } 114 }
120 if (FLAGS_quic_batch_writes && 115 if (FLAGS_quic_batch_writes &&
121 stream_id == batch_write_stream_id_[last_priority_popped_] && 116 stream_id == batch_write_stream_id_[last_priority_popped_] &&
122 bytes_left_for_batch_write_[last_priority_popped_] > 0) { 117 bytes_left_for_batch_write_[last_priority_popped_] > 0) {
123 // If the batch write stream has more data to write, push it to the front 118 // If the batch write stream has more data to write, push it to the front
124 // for its priority level. 119 // for its priority level.
125 base_write_blocked_list_.PushFront( 120 base_write_blocked_list_.PushFront(stream_id, priority);
126 stream_id, static_cast<SpdyPriority>(priority));
127 } else { 121 } else {
128 base_write_blocked_list_.PushBack( 122 base_write_blocked_list_.PushBack(stream_id, priority);
129 stream_id, static_cast<SpdyPriority>(priority));
130 } 123 }
131 return; 124 return;
132 } 125 }
133 126
134 bool crypto_stream_blocked() const { return crypto_stream_blocked_; } 127 bool crypto_stream_blocked() const { return crypto_stream_blocked_; }
135 bool headers_stream_blocked() const { return headers_stream_blocked_; } 128 bool headers_stream_blocked() const { return headers_stream_blocked_; }
136 129
137 private: 130 private:
138 QuicWriteBlockedListBase base_write_blocked_list_; 131 QuicWriteBlockedListBase base_write_blocked_list_;
139 132
140 // If performing batch writes, this will be the stream ID of the stream doing 133 // If performing batch writes, this will be the stream ID of the stream doing
141 // batch writes for this priority level. We will allow this stream to write 134 // batch writes for this priority level. We will allow this stream to write
142 // until it has written kBatchWriteSize bytes, it has no more data to write, 135 // until it has written kBatchWriteSize bytes, it has no more data to write,
143 // or a higher priority stream preempts. 136 // or a higher priority stream preempts.
144 QuicStreamId batch_write_stream_id_[kLowestPriority + 1]; 137 QuicStreamId batch_write_stream_id_[kLowestPriority + 1];
145 // Set to kBatchWriteSize when we set a new batch_write_stream_id_ for a given 138 // Set to kBatchWriteSize when we set a new batch_write_stream_id_ for a given
146 // priority. This is decremented with each write the stream does until it is 139 // priority. This is decremented with each write the stream does until it is
147 // done with its batch write. 140 // done with its batch write.
148 int32 bytes_left_for_batch_write_[kLowestPriority + 1]; 141 int32 bytes_left_for_batch_write_[kLowestPriority + 1];
149 // Tracks the last priority popped for UpdateBytesForStream. 142 // Tracks the last priority popped for UpdateBytesForStream.
150 QuicPriority last_priority_popped_; 143 SpdyPriority last_priority_popped_;
151 144
152 bool crypto_stream_blocked_; 145 bool crypto_stream_blocked_;
153 bool headers_stream_blocked_; 146 bool headers_stream_blocked_;
154 147
155 DISALLOW_COPY_AND_ASSIGN(QuicWriteBlockedList); 148 DISALLOW_COPY_AND_ASSIGN(QuicWriteBlockedList);
156 }; 149 };
157 150
158 } // namespace net 151 } // namespace net
159 152
160 153
161 #endif // NET_QUIC_QUIC_WRITE_BLOCKED_LIST_H_ 154 #endif // NET_QUIC_QUIC_WRITE_BLOCKED_LIST_H_
OLDNEW
« no previous file with comments | « net/quic/quic_utils.cc ('k') | net/quic/quic_write_blocked_list_test.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698