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 // A QuicSession, which demuxes a single connection to individual streams. | 5 // A QuicSession, which demuxes a single connection to individual streams. |
6 | 6 |
7 #ifndef NET_QUIC_QUIC_SESSION_H_ | 7 #ifndef NET_QUIC_QUIC_SESSION_H_ |
8 #define NET_QUIC_QUIC_SESSION_H_ | 8 #define NET_QUIC_QUIC_SESSION_H_ |
9 | 9 |
10 #include <vector> | 10 #include <vector> |
(...skipping 244 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
255 } | 255 } |
256 | 256 |
257 private: | 257 private: |
258 friend class test::QuicSessionPeer; | 258 friend class test::QuicSessionPeer; |
259 friend class VisitorShim; | 259 friend class VisitorShim; |
260 | 260 |
261 // Performs the work required to close |stream_id|. If |locally_reset| | 261 // Performs the work required to close |stream_id|. If |locally_reset| |
262 // then the stream has been reset by this endpoint, not by the peer. | 262 // then the stream has been reset by this endpoint, not by the peer. |
263 void CloseStreamInner(QuicStreamId stream_id, bool locally_reset); | 263 void CloseStreamInner(QuicStreamId stream_id, bool locally_reset); |
264 | 264 |
| 265 // When a stream is closed locally, it may not yet know how many bytes the |
| 266 // peer sent on that stream. |
| 267 // When this data arrives (via stream frame w. FIN, or RST) this method |
| 268 // is called, and correctly updates the connection level flow controller. |
| 269 void UpdateFlowControlOnFinalReceivedByteOffset( |
| 270 QuicStreamId id, QuicStreamOffset final_byte_offset); |
| 271 |
| 272 // Keep track of highest received byte offset of locally closed streams, while |
| 273 // waiting for a definitive final highest offset from the peer. |
| 274 std::map<QuicStreamId, QuicStreamOffset> |
| 275 locally_closed_streams_highest_offset_; |
| 276 |
265 scoped_ptr<QuicConnection> connection_; | 277 scoped_ptr<QuicConnection> connection_; |
266 | 278 |
267 scoped_ptr<QuicHeadersStream> headers_stream_; | 279 scoped_ptr<QuicHeadersStream> headers_stream_; |
268 | 280 |
269 // A shim to stand between the connection and the session, to handle stream | 281 // A shim to stand between the connection and the session, to handle stream |
270 // deletions. | 282 // deletions. |
271 scoped_ptr<VisitorShim> visitor_shim_; | 283 scoped_ptr<VisitorShim> visitor_shim_; |
272 | 284 |
273 std::vector<QuicDataStream*> closed_streams_; | 285 std::vector<QuicDataStream*> closed_streams_; |
274 | 286 |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
306 | 318 |
307 // Initial flow control receive window size for new streams. | 319 // Initial flow control receive window size for new streams. |
308 uint32 max_flow_control_receive_window_bytes_; | 320 uint32 max_flow_control_receive_window_bytes_; |
309 | 321 |
310 DISALLOW_COPY_AND_ASSIGN(QuicSession); | 322 DISALLOW_COPY_AND_ASSIGN(QuicSession); |
311 }; | 323 }; |
312 | 324 |
313 } // namespace net | 325 } // namespace net |
314 | 326 |
315 #endif // NET_QUIC_QUIC_SESSION_H_ | 327 #endif // NET_QUIC_QUIC_SESSION_H_ |
OLD | NEW |