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

Unified Diff: net/quic/core/quic_session.h

Issue 2862563003: Landing Recent QUIC changes until Sat Apr 29 00:22:04 2017 +0000 (Closed)
Patch Set: rebase and fix test bugs detected by swarm bot. Created 3 years, 7 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « net/quic/core/quic_server_session_base_test.cc ('k') | net/quic/core/quic_session.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: net/quic/core/quic_session.h
diff --git a/net/quic/core/quic_session.h b/net/quic/core/quic_session.h
index 32f19589f65ae1832f480ab43c22c3abfd7270e6..403f0e58cce598f3b4206061fa3d90897ae962a6 100644
--- a/net/quic/core/quic_session.h
+++ b/net/quic/core/quic_session.h
@@ -250,6 +250,10 @@ class QUIC_EXPORT_PRIVATE QuicSession : public QuicConnectionVisitorInterface {
// Returns true if this stream should yield writes to another blocked stream.
bool ShouldYield(QuicStreamId stream_id);
+ void set_respect_goaway(bool respect_goaway) {
+ respect_goaway_ = respect_goaway;
+ }
+
protected:
using StaticStreamMap = QuicSmallMap<QuicStreamId, QuicStream*, 2>;
@@ -258,6 +262,28 @@ class QUIC_EXPORT_PRIVATE QuicSession : public QuicConnectionVisitorInterface {
using ClosedStreams = std::vector<std::unique_ptr<QuicStream>>;
+ // TODO(ckrasic) - For all *DynamicStream2 below, rename after
+ // quic_reloadable_flag_quic_refactor_stream_creation is deprecated.
+
+ // Returns true if an incoming stream can be created.
+ virtual bool ShouldCreateIncomingDynamicStream2(QuicStreamId id);
+
+ // Returns true if an outgoing stream can be created.
+ virtual bool ShouldCreateOutgoingDynamicStream2();
+
+ // Creates a new stream to handle a peer-initiated stream.
+ // Caller does not own the returned stream.
+ // Returns nullptr and does error handling if the stream can not be created.
+ virtual QuicStream* MaybeCreateIncomingDynamicStream(QuicStreamId id);
+
+ // Create a new stream to handle a locally-initiated stream.
+ // Caller does not own the returned stream.
+ // Returns nullptr if max streams have already been opened.
+ virtual QuicStream* MaybeCreateOutgoingDynamicStream(SpdyPriority priority);
+
+ // TODO(ckrasic) - For all Create*DynamicStream below, remove when
+ // quic_reloadable_flag_quic_refactor_stream_creation is deprecated.
+
// Creates a new stream to handle a peer-initiated stream.
// Caller does not own the returned stream.
// Returns nullptr and does error handling if the stream can not be created.
@@ -303,6 +329,14 @@ class QUIC_EXPORT_PRIVATE QuicSession : public QuicConnectionVisitorInterface {
// Return true if given stream is peer initiated.
bool IsIncomingStream(QuicStreamId id) const;
+ // Unconditionally creates a stream. Subclasses should use this to
+ // provide streams appropriately subclassed from |QuicStream|,
+ // e.g. |QuicSpdySession::CreateStream()| creates a |QuicSpdyStream|.
+ virtual std::unique_ptr<QuicStream> CreateStream(QuicStreamId id) = 0;
+
+ // Creates a stream and activates it, owned by the session.
+ QuicStream* CreateAndActivateStream(QuicStreamId id);
+
StaticStreamMap& static_streams() { return static_stream_map_; }
const StaticStreamMap& static_streams() const { return static_stream_map_; }
@@ -359,6 +393,8 @@ class QUIC_EXPORT_PRIVATE QuicSession : public QuicConnectionVisitorInterface {
virtual void HandleRstOnValidNonexistentStream(
const QuicRstStreamFrame& frame);
+ bool respect_goaway() const { return respect_goaway_; }
+
private:
friend class test::QuicSessionPeer;
@@ -444,6 +480,11 @@ class QUIC_EXPORT_PRIVATE QuicSession : public QuicConnectionVisitorInterface {
// call stack of OnCanWrite.
QuicStreamId currently_writing_stream_id_;
+ // If this is set to false, the session will ignore peer GOAWAYs and
+ // allow the creation of outgoing streams regardless of the high
+ // chance they will fail.
+ bool respect_goaway_;
+
DISALLOW_COPY_AND_ASSIGN(QuicSession);
};
« no previous file with comments | « net/quic/core/quic_server_session_base_test.cc ('k') | net/quic/core/quic_session.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698