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

Side by Side Diff: net/quic/core/quic_session.h

Issue 2963763003: In QUIC, send data is copied to streams rather than frames. Protected by FLAGS_quic_reloadable_flag… (Closed)
Patch Set: Rebase Created 3 years, 5 months 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/core/quic_packet_generator_test.cc ('k') | net/quic/core/quic_session.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 (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_CORE_QUIC_SESSION_H_ 7 #ifndef NET_QUIC_CORE_QUIC_SESSION_H_
8 #define NET_QUIC_CORE_QUIC_SESSION_H_ 8 #define NET_QUIC_CORE_QUIC_SESSION_H_
9 9
10 #include <cstddef> 10 #include <cstddef>
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
101 void OnConnectionMigration(PeerAddressChangeType type) override {} 101 void OnConnectionMigration(PeerAddressChangeType type) override {}
102 // Deletes streams that are safe to be deleted now that it's safe to do so (no 102 // Deletes streams that are safe to be deleted now that it's safe to do so (no
103 // other operations are being done on the streams at this time). 103 // other operations are being done on the streams at this time).
104 void PostProcessAfterData() override; 104 void PostProcessAfterData() override;
105 // Adds a connection level WINDOW_UPDATE frame. 105 // Adds a connection level WINDOW_UPDATE frame.
106 void OnAckNeedsRetransmittableFrame() override; 106 void OnAckNeedsRetransmittableFrame() override;
107 bool WillingAndAbleToWrite() const override; 107 bool WillingAndAbleToWrite() const override;
108 bool HasPendingHandshake() const override; 108 bool HasPendingHandshake() const override;
109 bool HasOpenDynamicStreams() const override; 109 bool HasOpenDynamicStreams() const override;
110 void OnPathDegrading() override; 110 void OnPathDegrading() override;
111 void SaveStreamData(QuicStreamId id,
112 QuicIOVector iov,
113 size_t iov_offset,
114 QuicStreamOffset offset,
115 QuicByteCount data_length) override;
116 bool WriteStreamData(QuicStreamId id,
117 QuicStreamOffset offset,
118 QuicByteCount data_length,
119 QuicDataWriter* writer) override;
111 120
112 // StreamNotifierInterface methods: 121 // StreamNotifierInterface methods:
113 void OnStreamFrameAcked(const QuicStreamFrame& frame, 122 void OnStreamFrameAcked(const QuicStreamFrame& frame,
114 QuicTime::Delta ack_delay_time) override; 123 QuicTime::Delta ack_delay_time) override;
115 void OnStreamFrameRetransmitted(const QuicStreamFrame& frame) override; 124 void OnStreamFrameRetransmitted(const QuicStreamFrame& frame) override;
116 void OnStreamFrameDiscarded(const QuicStreamFrame& frame) override; 125 void OnStreamFrameDiscarded(const QuicStreamFrame& frame) override;
117 126
118 // Called on every incoming packet. Passes |packet| through to |connection_|. 127 // Called on every incoming packet. Passes |packet| through to |connection_|.
119 virtual void ProcessUdpPacket(const QuicSocketAddress& self_address, 128 virtual void ProcessUdpPacket(const QuicSocketAddress& self_address,
120 const QuicSocketAddress& peer_address, 129 const QuicSocketAddress& peer_address,
(...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after
262 271
263 // Returns true if this stream should yield writes to another blocked stream. 272 // Returns true if this stream should yield writes to another blocked stream.
264 bool ShouldYield(QuicStreamId stream_id); 273 bool ShouldYield(QuicStreamId stream_id);
265 274
266 void set_respect_goaway(bool respect_goaway) { 275 void set_respect_goaway(bool respect_goaway) {
267 respect_goaway_ = respect_goaway; 276 respect_goaway_ = respect_goaway;
268 } 277 }
269 278
270 bool use_stream_notifier() const { return use_stream_notifier_; } 279 bool use_stream_notifier() const { return use_stream_notifier_; }
271 280
281 bool streams_own_data() const { return streams_own_data_; }
282
272 protected: 283 protected:
273 using StaticStreamMap = QuicSmallMap<QuicStreamId, QuicStream*, 2>; 284 using StaticStreamMap = QuicSmallMap<QuicStreamId, QuicStream*, 2>;
274 285
275 using DynamicStreamMap = 286 using DynamicStreamMap =
276 QuicSmallMap<QuicStreamId, std::unique_ptr<QuicStream>, 10>; 287 QuicSmallMap<QuicStreamId, std::unique_ptr<QuicStream>, 10>;
277 288
278 using ClosedStreams = std::vector<std::unique_ptr<QuicStream>>; 289 using ClosedStreams = std::vector<std::unique_ptr<QuicStream>>;
279 290
280 using ZombieStreamMap = 291 using ZombieStreamMap =
281 QuicSmallMap<QuicStreamId, std::unique_ptr<QuicStream>, 10>; 292 QuicSmallMap<QuicStreamId, std::unique_ptr<QuicStream>, 10>;
(...skipping 227 matching lines...) Expand 10 before | Expand all | Expand 10 after
509 QuicStreamId currently_writing_stream_id_; 520 QuicStreamId currently_writing_stream_id_;
510 521
511 // If this is set to false, the session will ignore peer GOAWAYs and 522 // If this is set to false, the session will ignore peer GOAWAYs and
512 // allow the creation of outgoing streams regardless of the high 523 // allow the creation of outgoing streams regardless of the high
513 // chance they will fail. 524 // chance they will fail.
514 bool respect_goaway_; 525 bool respect_goaway_;
515 526
516 // This session is notified on every ack or loss. 527 // This session is notified on every ack or loss.
517 const bool use_stream_notifier_; 528 const bool use_stream_notifier_;
518 529
530 // Streams of this session own their outstanding data. Outstanding data here
531 // means sent data waiting to be acked.
532 const bool streams_own_data_;
533
519 DISALLOW_COPY_AND_ASSIGN(QuicSession); 534 DISALLOW_COPY_AND_ASSIGN(QuicSession);
520 }; 535 };
521 536
522 } // namespace net 537 } // namespace net
523 538
524 #endif // NET_QUIC_CORE_QUIC_SESSION_H_ 539 #endif // NET_QUIC_CORE_QUIC_SESSION_H_
OLDNEW
« no previous file with comments | « net/quic/core/quic_packet_generator_test.cc ('k') | net/quic/core/quic_session.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698