1// Copyright 2014 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#ifndef NET_QUIC_QUIC_CLIENT_SESSION_BASE_H_ 6#define NET_QUIC_QUIC_CLIENT_SESSION_BASE_H_ 7 8#include "net/quic/quic_crypto_client_stream.h" 9#include "net/quic/quic_session.h" 10 11namespace net { 12 13// Base class for all client-specific QuicSession subclasses. 14class NET_EXPORT_PRIVATE QuicClientSessionBase : public QuicSession { 15 public: 16 QuicClientSessionBase(QuicConnection* connection, 17 const QuicConfig& config); 18 19 virtual ~QuicClientSessionBase(); 20 21 // Called when the proof in |cached| is marked valid. If this is a secure 22 // QUIC session, then this will happen only after the proof verifier 23 // completes. If this is an insecure QUIC connection, this will happen 24 // as soon as a valid config is discovered (either from the cache or 25 // from the server). 26 virtual void OnProofValid( 27 const QuicCryptoClientConfig::CachedState& cached) = 0; 28 29 // Called when proof verification details become available, either because 30 // proof verification is complete, or when cached details are used. This 31 // will only be called for secure QUIC connections. 32 virtual void OnProofVerifyDetailsAvailable( 33 const ProofVerifyDetails& verify_details) = 0; 34 35 // Override base class to set FEC policy before any data is sent by client. 36 virtual void OnCryptoHandshakeEvent(CryptoHandshakeEvent event) OVERRIDE; 37 38 private: 39 DISALLOW_COPY_AND_ASSIGN(QuicClientSessionBase); 40}; 41 42} // namespace net 43 44#endif // NET_QUIC_QUIC_CLIENT_SESSION_BASE_H_ 45