OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef NET_QUIC_QUIC_CRYPTO_STREAM_H_ | 5 #ifndef NET_QUIC_QUIC_CRYPTO_STREAM_H_ |
6 #define NET_QUIC_QUIC_CRYPTO_STREAM_H_ | 6 #define NET_QUIC_QUIC_CRYPTO_STREAM_H_ |
7 | 7 |
8 #include "net/quic/crypto/crypto_framer.h" | 8 #include "net/quic/crypto/crypto_framer.h" |
9 #include "net/quic/crypto/crypto_utils.h" | 9 #include "net/quic/crypto/crypto_utils.h" |
10 #include "net/quic/quic_protocol.h" | 10 #include "net/quic/quic_protocol.h" |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
51 | 51 |
52 void SetHandshakeComplete(QuicErrorCode error); | 52 void SetHandshakeComplete(QuicErrorCode error); |
53 | 53 |
54 private: | 54 private: |
55 CryptoFramer crypto_framer_; | 55 CryptoFramer crypto_framer_; |
56 bool handshake_complete_; | 56 bool handshake_complete_; |
57 | 57 |
58 DISALLOW_COPY_AND_ASSIGN(QuicCryptoStream); | 58 DISALLOW_COPY_AND_ASSIGN(QuicCryptoStream); |
59 }; | 59 }; |
60 | 60 |
61 // QuicNegotiatedParameters contains non-crypto parameters that are agreed upon | |
62 // during the crypto handshake. | |
63 class NET_EXPORT_PRIVATE QuicNegotiatedParameters { | |
64 public: | |
65 QuicNegotiatedParameters(); | |
66 | |
67 CryptoTag congestion_control; | |
68 QuicTime::Delta idle_connection_state_lifetime; | |
69 QuicTime::Delta keepalive_timeout; | |
70 }; | |
71 | |
72 // QuicConfig contains non-crypto configuration options that are negotiated in | |
73 // the crypto handshake. | |
74 class NET_EXPORT_PRIVATE QuicConfig { | |
75 public: | |
76 QuicConfig(); | |
77 ~QuicConfig(); | |
78 | |
79 // SetDefaults sets the members to sensible, default values. | |
80 void SetDefaults(); | |
81 | |
82 // SetFromMessage extracts the non-crypto configuration from |msg| and sets | |
83 // the members of this object to match. This is expected to be called in the | |
84 // case of a server which is loading a server config. The server config | |
85 // contains the non-crypto parameters and so the server will need to keep its | |
86 // QuicConfig in sync with the server config that it'll be sending to | |
87 // clients. | |
88 bool SetFromHandshakeMessage(const CryptoHandshakeMessage& scfg); | |
89 | |
90 // ToHandshakeMessage serializes the settings in this object as a series of | |
91 // tags /value pairs and adds them to |out|. | |
92 void ToHandshakeMessage(CryptoHandshakeMessage* out) const; | |
93 | |
94 QuicErrorCode ProcessFinalPeerHandshake( | |
95 const CryptoHandshakeMessage& peer_handshake, | |
96 CryptoUtils::Priority priority, | |
97 QuicNegotiatedParameters* out_params, | |
98 string* error_details) const; | |
99 | |
100 private: | |
101 // Congestion control feedback type. | |
102 CryptoTagVector congestion_control_; | |
103 // Idle connection state lifetime | |
104 QuicTime::Delta idle_connection_state_lifetime_; | |
105 // Keepalive timeout, or 0 to turn off keepalive probes | |
106 QuicTime::Delta keepalive_timeout_; | |
107 }; | |
108 | |
109 } // namespace net | 61 } // namespace net |
110 | 62 |
111 #endif // NET_QUIC_QUIC_CRYPTO_STREAM_H_ | 63 #endif // NET_QUIC_QUIC_CRYPTO_STREAM_H_ |
OLD | NEW |