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