OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 // The base class for client/server reliable streams. | 5 // The base class for client/server reliable streams. |
6 | 6 |
7 #ifndef NET_QUIC_RELIABLE_QUIC_STREAM_H_ | 7 #ifndef NET_QUIC_RELIABLE_QUIC_STREAM_H_ |
8 #define NET_QUIC_RELIABLE_QUIC_STREAM_H_ | 8 #define NET_QUIC_RELIABLE_QUIC_STREAM_H_ |
9 | 9 |
10 #include <sys/types.h> | 10 #include <sys/types.h> |
(...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
155 bool HasBufferedData() const; | 155 bool HasBufferedData() const; |
156 | 156 |
157 bool fin_buffered() const { return fin_buffered_; } | 157 bool fin_buffered() const { return fin_buffered_; } |
158 | 158 |
159 const QuicSession* session() const { return session_; } | 159 const QuicSession* session() const { return session_; } |
160 QuicSession* session() { return session_; } | 160 QuicSession* session() { return session_; } |
161 | 161 |
162 const QuicStreamSequencer* sequencer() const { return &sequencer_; } | 162 const QuicStreamSequencer* sequencer() const { return &sequencer_; } |
163 QuicStreamSequencer* sequencer() { return &sequencer_; } | 163 QuicStreamSequencer* sequencer() { return &sequencer_; } |
164 | 164 |
| 165 // TODO(rjshade): Remove this method when removing QUIC_VERSION_20. |
165 void DisableFlowControl() { | 166 void DisableFlowControl() { |
166 flow_controller_.Disable(); | 167 flow_controller_.Disable(); |
167 } | 168 } |
168 | 169 |
| 170 void DisableConnectionFlowControlForThisStream() { |
| 171 stream_contributes_to_connection_flow_control_ = false; |
| 172 } |
| 173 |
169 private: | 174 private: |
170 friend class test::ReliableQuicStreamPeer; | 175 friend class test::ReliableQuicStreamPeer; |
171 friend class QuicStreamUtils; | 176 friend class QuicStreamUtils; |
172 class ProxyAckNotifierDelegate; | 177 class ProxyAckNotifierDelegate; |
173 | 178 |
174 struct PendingData { | 179 struct PendingData { |
175 PendingData(string data_in, | 180 PendingData(string data_in, |
176 scoped_refptr<ProxyAckNotifierDelegate> delegate_in); | 181 scoped_refptr<ProxyAckNotifierDelegate> delegate_in); |
177 ~PendingData(); | 182 ~PendingData(); |
178 | 183 |
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
228 FecPolicy fec_policy_; | 233 FecPolicy fec_policy_; |
229 | 234 |
230 // True if the session this stream is running under is a server session. | 235 // True if the session this stream is running under is a server session. |
231 bool is_server_; | 236 bool is_server_; |
232 | 237 |
233 QuicFlowController flow_controller_; | 238 QuicFlowController flow_controller_; |
234 | 239 |
235 // The connection level flow controller. Not owned. | 240 // The connection level flow controller. Not owned. |
236 QuicFlowController* connection_flow_controller_; | 241 QuicFlowController* connection_flow_controller_; |
237 | 242 |
| 243 // Special streams, such as the crypto and headers streams, do not respect |
| 244 // connection level flow control limits (but are stream level flow control |
| 245 // limited). |
| 246 bool stream_contributes_to_connection_flow_control_; |
| 247 |
238 DISALLOW_COPY_AND_ASSIGN(ReliableQuicStream); | 248 DISALLOW_COPY_AND_ASSIGN(ReliableQuicStream); |
239 }; | 249 }; |
240 | 250 |
241 } // namespace net | 251 } // namespace net |
242 | 252 |
243 #endif // NET_QUIC_RELIABLE_QUIC_STREAM_H_ | 253 #endif // NET_QUIC_RELIABLE_QUIC_STREAM_H_ |
OLD | NEW |