| Index: net/quic/quic_session.h
|
| diff --git a/net/quic/quic_session.h b/net/quic/quic_session.h
|
| index 712d0d60eae5f1c64cc586a3d9a28e368ab6b93e..0201d4396cd6cdc767ab8b4a5ef50ae2b41122d3 100644
|
| --- a/net/quic/quic_session.h
|
| +++ b/net/quic/quic_session.h
|
| @@ -31,7 +31,6 @@ namespace net {
|
| class QuicCryptoStream;
|
| class QuicFlowController;
|
| class ReliableQuicStream;
|
| -class VisitorShim;
|
|
|
| namespace test {
|
| class QuicSessionPeer;
|
| @@ -75,6 +74,9 @@ class NET_EXPORT_PRIVATE QuicSession : public QuicConnectionVisitorInterface {
|
| void OnCanWrite() override;
|
| void OnCongestionWindowChange(QuicTime /*now*/) override {}
|
| void OnConnectionMigration() override {}
|
| + // Deletes streams that are safe to be deleted now that it's safe to do so (no
|
| + // other operations are being done on the streams at this time).
|
| + void PostProcessAfterData() override;
|
| bool WillingAndAbleToWrite() const override;
|
| bool HasPendingHandshake() const override;
|
| bool HasOpenDynamicStreams() const override;
|
| @@ -201,12 +203,16 @@ class NET_EXPORT_PRIVATE QuicSession : public QuicConnectionVisitorInterface {
|
| // Returns true if any stream is flow controller blocked.
|
| bool IsStreamFlowControlBlocked();
|
|
|
| - size_t get_max_open_streams() const { return max_open_streams_; }
|
| + size_t max_open_incoming_streams() const {
|
| + return max_open_incoming_streams_;
|
| + }
|
|
|
| - size_t get_max_available_streams() const {
|
| - return max_open_streams_ * kMaxAvailableStreamsMultiplier;
|
| + size_t max_open_outgoing_streams() const {
|
| + return max_open_outgoing_streams_;
|
| }
|
|
|
| + size_t MaxAvailableStreams() const;
|
| +
|
| ReliableQuicStream* GetStream(const QuicStreamId stream_id);
|
|
|
| // Mark a stream as draining.
|
| @@ -248,12 +254,6 @@ class NET_EXPORT_PRIVATE QuicSession : public QuicConnectionVisitorInterface {
|
| // exists, the connection is closed.
|
| ReliableQuicStream* GetOrCreateDynamicStream(QuicStreamId stream_id);
|
|
|
| - // This is called after every call other than OnConnectionClose from the
|
| - // QuicConnectionVisitor to allow post-processing once the work has been done.
|
| - // In this case, it deletes streams given that it's safe to do so (no other
|
| - // operations are being done on the streams at this time)
|
| - virtual void PostProcessAfterData();
|
| -
|
| // Performs the work required to close |stream_id|. If |locally_reset|
|
| // then the stream has been reset by this endpoint, not by the peer.
|
| virtual void CloseStreamInner(QuicStreamId stream_id, bool locally_reset);
|
| @@ -279,7 +279,8 @@ class NET_EXPORT_PRIVATE QuicSession : public QuicConnectionVisitorInterface {
|
| return &closed_streams_;
|
| }
|
|
|
| - void set_max_open_streams(size_t max_open_streams);
|
| + void set_max_open_incoming_streams(size_t max_open_incoming_streams);
|
| + void set_max_open_outgoing_streams(size_t max_open_outgoing_streams);
|
|
|
| void set_largest_peer_created_stream_id(
|
| QuicStreamId largest_peer_created_stream_id) {
|
| @@ -326,7 +327,6 @@ class NET_EXPORT_PRIVATE QuicSession : public QuicConnectionVisitorInterface {
|
|
|
| private:
|
| friend class test::QuicSessionPeer;
|
| - friend class VisitorShim;
|
|
|
| // Called in OnConfigNegotiated when we receive a new stream level flow
|
| // control window in a negotiated config. Closes the connection if invalid.
|
| @@ -351,16 +351,15 @@ class NET_EXPORT_PRIVATE QuicSession : public QuicConnectionVisitorInterface {
|
|
|
| scoped_ptr<QuicConnection> connection_;
|
|
|
| - // A shim to stand between the connection and the session, to handle stream
|
| - // deletions.
|
| - scoped_ptr<VisitorShim> visitor_shim_;
|
| -
|
| std::vector<ReliableQuicStream*> closed_streams_;
|
|
|
| QuicConfig config_;
|
|
|
| - // Returns the maximum number of streams this connection can open.
|
| - size_t max_open_streams_;
|
| + // The maximum number of outgoing streams this connection can open.
|
| + size_t max_open_outgoing_streams_;
|
| +
|
| + // The maximum number of incoming streams this connection will allow.
|
| + size_t max_open_incoming_streams_;
|
|
|
| // Static streams, such as crypto and header streams. Owned by child classes
|
| // that create these streams.
|
|
|