| 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_
|
|
|