Home | History | Annotate | Download | only in quic
      1 // Copyright (c) 2012 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 // A client specific QuicSession subclass.
      6 
      7 #ifndef NET_TOOLS_QUIC_QUIC_CLIENT_SESSION_H_
      8 #define NET_TOOLS_QUIC_QUIC_CLIENT_SESSION_H_
      9 
     10 #include <string>
     11 
     12 #include "net/quic/quic_crypto_client_stream.h"
     13 #include "net/quic/quic_protocol.h"
     14 #include "net/quic/quic_session.h"
     15 #include "net/tools/quic/quic_reliable_client_stream.h"
     16 
     17 namespace net {
     18 
     19 class QuicConnection;
     20 class ReliableQuicStream;
     21 
     22 namespace tools {
     23 
     24 class QuicReliableClientStream;
     25 
     26 class QuicClientSession : public QuicSession {
     27  public:
     28   QuicClientSession(const std::string& server_hostname,
     29                     const QuicConfig& config,
     30                     QuicConnection* connection,
     31                     QuicCryptoClientConfig* crypto_config);
     32   virtual ~QuicClientSession();
     33 
     34   // QuicSession methods:
     35   virtual QuicReliableClientStream* CreateOutgoingReliableStream() OVERRIDE;
     36   virtual QuicCryptoClientStream* GetCryptoStream() OVERRIDE;
     37 
     38   // Performs a crypto handshake with the server. Returns true if the crypto
     39   // handshake is started successfully.
     40   bool CryptoConnect();
     41 
     42  protected:
     43   // QuicSession methods:
     44   virtual ReliableQuicStream* CreateIncomingReliableStream(
     45       QuicStreamId id) OVERRIDE;
     46 
     47  private:
     48   QuicCryptoClientStream crypto_stream_;
     49 
     50   DISALLOW_COPY_AND_ASSIGN(QuicClientSession);
     51 };
     52 
     53 }  // namespace tools
     54 }  // namespace net
     55 
     56 #endif  // NET_TOOLS_QUIC_QUIC_CLIENT_SESSION_H_
     57