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