// 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 "net/quic/quic_crypto_client_stream.h" #include "net/quic/quic_session.h" namespace net { // Base class for all client-specific QuicSession subclasses. class NET_EXPORT_PRIVATE QuicClientSessionBase : public QuicSession { public: QuicClientSessionBase(QuicConnection* connection, const QuicConfig& config); virtual ~QuicClientSessionBase(); // Called when the proof in |cached| is marked valid. If this is a secure // QUIC session, then this will happen only after the proof verifier // completes. If this is an insecure QUIC connection, this will happen // as soon as a valid config is discovered (either from the cache or // from the server). virtual void OnProofValid( const QuicCryptoClientConfig::CachedState& cached) = 0; // Called when proof verification details become available, either because // proof verification is complete, or when cached details are used. This // will only be called for secure QUIC connections. virtual void OnProofVerifyDetailsAvailable( const ProofVerifyDetails& verify_details) = 0; // Override base class to set FEC policy before any data is sent by client. virtual void OnCryptoHandshakeEvent(CryptoHandshakeEvent event) OVERRIDE; private: DISALLOW_COPY_AND_ASSIGN(QuicClientSessionBase); }; } // namespace net #endif // NET_QUIC_QUIC_CLIENT_SESSION_BASE_H_