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

Unified Diff: net/quic/quic_client_session_base.h

Issue 2193073003: Move shared files in net/quic/ into net/quic/core/ (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: io_thread_unittest.cc Created 4 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « net/quic/quic_client_push_promise_index_test.cc ('k') | net/quic/quic_client_session_base.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: net/quic/quic_client_session_base.h
diff --git a/net/quic/quic_client_session_base.h b/net/quic/quic_client_session_base.h
deleted file mode 100644
index 7814d2e0fbbb308b110954fa690fe3373fa1dcca..0000000000000000000000000000000000000000
--- a/net/quic/quic_client_session_base.h
+++ /dev/null
@@ -1,138 +0,0 @@
-// Copyright 2014 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef NET_QUIC_QUIC_CLIENT_SESSION_BASE_H_
-#define NET_QUIC_QUIC_CLIENT_SESSION_BASE_H_
-
-#include <string>
-
-#include "base/macros.h"
-#include "net/quic/quic_crypto_client_stream.h"
-#include "net/quic/quic_spdy_session.h"
-
-namespace net {
-
-class QuicClientPromisedInfo;
-class QuicClientPushPromiseIndex;
-class QuicSpdyClientStream;
-
-// For client/http layer code. Lookup promised streams based on
-// matching promised request url. The same map can be shared across
-// multiple sessions, since cross-origin pushes are allowed (subject
-// to authority constraints). Clients should use this map to enforce
-// session affinity for requests corresponding to cross-origin push
-// promised streams.
-using QuicPromisedByUrlMap =
- std::unordered_map<std::string, QuicClientPromisedInfo*>;
-
-// The maximum time a promises stream can be reserved without being
-// claimed by a client request.
-const int64_t kPushPromiseTimeoutSecs = 60;
-
-// Base class for all client-specific QuicSession subclasses.
-class NET_EXPORT_PRIVATE QuicClientSessionBase
- : public QuicSpdySession,
- public QuicCryptoClientStream::ProofHandler {
- public:
- // Caller retains ownership of |promised_by_url|.
- QuicClientSessionBase(QuicConnection* connection,
- QuicClientPushPromiseIndex* push_promise_index,
- const QuicConfig& config);
-
- ~QuicClientSessionBase() override;
-
- void OnConfigNegotiated() override;
-
- // Override base class to set FEC policy before any data is sent by client.
- void OnCryptoHandshakeEvent(CryptoHandshakeEvent event) override;
-
- // Called by |headers_stream_| when push promise headers have been
- // received for a stream.
- void OnPromiseHeaders(QuicStreamId stream_id,
- base::StringPiece headers_data) override;
-
- // Called by |headers_stream_| when push promise headers have been
- // completely received.
- void OnPromiseHeadersComplete(QuicStreamId stream_id,
- QuicStreamId promised_stream_id,
- size_t frame_len) override;
-
- // Called by |headers_stream_| when push promise headers have been
- // completely received.
- void OnPromiseHeaderList(QuicStreamId stream_id,
- QuicStreamId promised_stream_id,
- size_t frame_len,
- const QuicHeaderList& header_list) override;
-
- // Called by |QuicSpdyClientStream| on receipt of response headers,
- // needed to detect promised server push streams, as part of
- // client-request to push-stream rendezvous.
- void OnInitialHeadersComplete(QuicStreamId stream_id,
- const SpdyHeaderBlock& response_headers);
-
- // Called by |QuicSpdyClientStream| on receipt of PUSH_PROMISE, does
- // some session level validation and creates the
- // |QuicClientPromisedInfo| inserting into maps by (promised) id and
- // url.
- virtual void HandlePromised(QuicStreamId associated_id,
- QuicStreamId promised_id,
- const SpdyHeaderBlock& headers);
-
- // For cross-origin server push, this should verify the server is
- // authoritative per [RFC2818], Section 3. Roughly, subjectAltName
- // std::list in the certificate should contain a matching DNS name, or IP
- // address. |hostname| is derived from the ":authority" header field of
- // the PUSH_PROMISE frame, port if present there will be dropped.
- virtual bool IsAuthorized(const std::string& hostname) = 0;
-
- // Session retains ownership.
- QuicClientPromisedInfo* GetPromisedByUrl(const std::string& url);
- // Session retains ownership.
- QuicClientPromisedInfo* GetPromisedById(const QuicStreamId id);
-
- //
- QuicSpdyStream* GetPromisedStream(const QuicStreamId id);
-
- // Removes |promised| from the maps by url.
- void ErasePromisedByUrl(QuicClientPromisedInfo* promised);
-
- // Removes |promised| from the maps by url and id and destroys
- // promised.
- virtual void DeletePromised(QuicClientPromisedInfo* promised);
-
- // Sends Rst for the stream, and makes sure that future calls to
- // IsClosedStream(id) return true, which ensures that any subsequent
- // frames related to this stream will be ignored (modulo flow
- // control accounting).
- void ResetPromised(QuicStreamId id, QuicRstStreamErrorCode error_code);
-
- size_t get_max_promises() const {
- return max_open_incoming_streams() * kMaxPromisedStreamsMultiplier;
- }
-
- QuicClientPushPromiseIndex* push_promise_index() {
- return push_promise_index_;
- }
-
- private:
- // For QuicSpdyClientStream to detect that a response corresponds to a
- // promise.
- using QuicPromisedByIdMap =
- std::unordered_map<QuicStreamId, std::unique_ptr<QuicClientPromisedInfo>>;
-
- // As per rfc7540, section 10.5: track promise streams in "reserved
- // (remote)". The primary key is URL from he promise request
- // headers. The promised stream id is a secondary key used to get
- // promise info when the response headers of the promised stream
- // arrive.
- QuicClientPushPromiseIndex* push_promise_index_;
- QuicPromisedByIdMap promised_by_id_;
- QuicStreamId largest_promised_stream_id_;
-
- DISALLOW_COPY_AND_ASSIGN(QuicClientSessionBase);
-};
-
-} // namespace net
-
-#endif // NET_QUIC_QUIC_CLIENT_SESSION_BASE_H_
« no previous file with comments | « net/quic/quic_client_push_promise_index_test.cc ('k') | net/quic/quic_client_session_base.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698