Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(199)

Side by Side Diff: net/quic/core/quic_config.h

Issue 2561893002: Add QUIC_EXPORT macros (Closed)
Patch Set: More Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « net/quic/core/quic_client_session_base.h ('k') | net/quic/core/quic_connection.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2013 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_CORE_QUIC_CONFIG_H_ 5 #ifndef NET_QUIC_CORE_QUIC_CONFIG_H_
6 #define NET_QUIC_CORE_QUIC_CONFIG_H_ 6 #define NET_QUIC_CORE_QUIC_CONFIG_H_
7 7
8 #include <stddef.h> 8 #include <stddef.h>
9 #include <stdint.h> 9 #include <stdint.h>
10 10
11 #include <string> 11 #include <string>
12 12
13 #include "net/base/net_export.h"
14 #include "net/quic/core/quic_packets.h" 13 #include "net/quic/core/quic_packets.h"
15 #include "net/quic/core/quic_time.h" 14 #include "net/quic/core/quic_time.h"
15 #include "net/quic/platform/api/quic_export.h"
16 16
17 namespace net { 17 namespace net {
18 18
19 namespace test { 19 namespace test {
20 class QuicConfigPeer; 20 class QuicConfigPeer;
21 } // namespace test 21 } // namespace test
22 22
23 class CryptoHandshakeMessage; 23 class CryptoHandshakeMessage;
24 24
25 // Describes whether or not a given QuicTag is required or optional in the 25 // Describes whether or not a given QuicTag is required or optional in the
26 // handshake message. 26 // handshake message.
27 enum QuicConfigPresence { 27 enum QuicConfigPresence {
28 // This negotiable value can be absent from the handshake message. Default 28 // This negotiable value can be absent from the handshake message. Default
29 // value is selected as the negotiated value in such a case. 29 // value is selected as the negotiated value in such a case.
30 PRESENCE_OPTIONAL, 30 PRESENCE_OPTIONAL,
31 // This negotiable value is required in the handshake message otherwise the 31 // This negotiable value is required in the handshake message otherwise the
32 // Process*Hello function returns an error. 32 // Process*Hello function returns an error.
33 PRESENCE_REQUIRED, 33 PRESENCE_REQUIRED,
34 }; 34 };
35 35
36 // Whether the CryptoHandshakeMessage is from the client or server. 36 // Whether the CryptoHandshakeMessage is from the client or server.
37 enum HelloType { 37 enum HelloType {
38 CLIENT, 38 CLIENT,
39 SERVER, 39 SERVER,
40 }; 40 };
41 41
42 // An abstract base class that stores a value that can be sent in CHLO/SHLO 42 // An abstract base class that stores a value that can be sent in CHLO/SHLO
43 // message. These values can be OPTIONAL or REQUIRED, depending on |presence_|. 43 // message. These values can be OPTIONAL or REQUIRED, depending on |presence_|.
44 class NET_EXPORT_PRIVATE QuicConfigValue { 44 class QUIC_EXPORT_PRIVATE QuicConfigValue {
45 public: 45 public:
46 QuicConfigValue(QuicTag tag, QuicConfigPresence presence); 46 QuicConfigValue(QuicTag tag, QuicConfigPresence presence);
47 virtual ~QuicConfigValue(); 47 virtual ~QuicConfigValue();
48 48
49 // Serialises tag name and value(s) to |out|. 49 // Serialises tag name and value(s) to |out|.
50 virtual void ToHandshakeMessage(CryptoHandshakeMessage* out) const = 0; 50 virtual void ToHandshakeMessage(CryptoHandshakeMessage* out) const = 0;
51 51
52 // Selects a mutually acceptable value from those offered in |peer_hello| 52 // Selects a mutually acceptable value from those offered in |peer_hello|
53 // and those defined in the subclass. 53 // and those defined in the subclass.
54 virtual QuicErrorCode ProcessPeerHello( 54 virtual QuicErrorCode ProcessPeerHello(
55 const CryptoHandshakeMessage& peer_hello, 55 const CryptoHandshakeMessage& peer_hello,
56 HelloType hello_type, 56 HelloType hello_type,
57 std::string* error_details) = 0; 57 std::string* error_details) = 0;
58 58
59 protected: 59 protected:
60 const QuicTag tag_; 60 const QuicTag tag_;
61 const QuicConfigPresence presence_; 61 const QuicConfigPresence presence_;
62 }; 62 };
63 63
64 class NET_EXPORT_PRIVATE QuicNegotiableValue : public QuicConfigValue { 64 class QUIC_EXPORT_PRIVATE QuicNegotiableValue : public QuicConfigValue {
65 public: 65 public:
66 QuicNegotiableValue(QuicTag tag, QuicConfigPresence presence); 66 QuicNegotiableValue(QuicTag tag, QuicConfigPresence presence);
67 ~QuicNegotiableValue() override; 67 ~QuicNegotiableValue() override;
68 68
69 bool negotiated() const { return negotiated_; } 69 bool negotiated() const { return negotiated_; }
70 70
71 protected: 71 protected:
72 void set_negotiated(bool negotiated) { negotiated_ = negotiated; } 72 void set_negotiated(bool negotiated) { negotiated_ = negotiated; }
73 73
74 private: 74 private:
75 bool negotiated_; 75 bool negotiated_;
76 }; 76 };
77 77
78 class NET_EXPORT_PRIVATE QuicNegotiableUint32 : public QuicNegotiableValue { 78 class QUIC_EXPORT_PRIVATE QuicNegotiableUint32 : public QuicNegotiableValue {
79 // TODO(fayang): some negotiated values use uint32 as bool (e.g., silent 79 // TODO(fayang): some negotiated values use uint32 as bool (e.g., silent
80 // close). Consider adding a QuicNegotiableBool type. 80 // close). Consider adding a QuicNegotiableBool type.
81 public: 81 public:
82 // Default and max values default to 0. 82 // Default and max values default to 0.
83 QuicNegotiableUint32(QuicTag name, QuicConfigPresence presence); 83 QuicNegotiableUint32(QuicTag name, QuicConfigPresence presence);
84 ~QuicNegotiableUint32() override; 84 ~QuicNegotiableUint32() override;
85 85
86 // Sets the maximum possible value that can be achieved after negotiation and 86 // Sets the maximum possible value that can be achieved after negotiation and
87 // also the default values to be assumed if PRESENCE_OPTIONAL and the *HLO msg 87 // also the default values to be assumed if PRESENCE_OPTIONAL and the *HLO msg
88 // doesn't contain a value corresponding to |name_|. |max| is serialised via 88 // doesn't contain a value corresponding to |name_|. |max| is serialised via
(...skipping 19 matching lines...) Expand all
108 HelloType hello_type, 108 HelloType hello_type,
109 std::string* error_details) override; 109 std::string* error_details) override;
110 110
111 private: 111 private:
112 uint32_t max_value_; 112 uint32_t max_value_;
113 uint32_t default_value_; 113 uint32_t default_value_;
114 uint32_t negotiated_value_; 114 uint32_t negotiated_value_;
115 }; 115 };
116 116
117 // Stores uint32_t from CHLO or SHLO messages that are not negotiated. 117 // Stores uint32_t from CHLO or SHLO messages that are not negotiated.
118 class NET_EXPORT_PRIVATE QuicFixedUint32 : public QuicConfigValue { 118 class QUIC_EXPORT_PRIVATE QuicFixedUint32 : public QuicConfigValue {
119 public: 119 public:
120 QuicFixedUint32(QuicTag name, QuicConfigPresence presence); 120 QuicFixedUint32(QuicTag name, QuicConfigPresence presence);
121 ~QuicFixedUint32() override; 121 ~QuicFixedUint32() override;
122 122
123 bool HasSendValue() const; 123 bool HasSendValue() const;
124 124
125 uint32_t GetSendValue() const; 125 uint32_t GetSendValue() const;
126 126
127 void SetSendValue(uint32_t value); 127 void SetSendValue(uint32_t value);
128 128
(...skipping 12 matching lines...) Expand all
141 std::string* error_details) override; 141 std::string* error_details) override;
142 142
143 private: 143 private:
144 uint32_t send_value_; 144 uint32_t send_value_;
145 bool has_send_value_; 145 bool has_send_value_;
146 uint32_t receive_value_; 146 uint32_t receive_value_;
147 bool has_receive_value_; 147 bool has_receive_value_;
148 }; 148 };
149 149
150 // Stores tag from CHLO or SHLO messages that are not negotiated. 150 // Stores tag from CHLO or SHLO messages that are not negotiated.
151 class NET_EXPORT_PRIVATE QuicFixedTagVector : public QuicConfigValue { 151 class QUIC_EXPORT_PRIVATE QuicFixedTagVector : public QuicConfigValue {
152 public: 152 public:
153 QuicFixedTagVector(QuicTag name, QuicConfigPresence presence); 153 QuicFixedTagVector(QuicTag name, QuicConfigPresence presence);
154 QuicFixedTagVector(const QuicFixedTagVector& other); 154 QuicFixedTagVector(const QuicFixedTagVector& other);
155 ~QuicFixedTagVector() override; 155 ~QuicFixedTagVector() override;
156 156
157 bool HasSendValues() const; 157 bool HasSendValues() const;
158 158
159 QuicTagVector GetSendValues() const; 159 QuicTagVector GetSendValues() const;
160 160
161 void SetSendValues(const QuicTagVector& values); 161 void SetSendValues(const QuicTagVector& values);
(...skipping 15 matching lines...) Expand all
177 std::string* error_details) override; 177 std::string* error_details) override;
178 178
179 private: 179 private:
180 QuicTagVector send_values_; 180 QuicTagVector send_values_;
181 bool has_send_values_; 181 bool has_send_values_;
182 QuicTagVector receive_values_; 182 QuicTagVector receive_values_;
183 bool has_receive_values_; 183 bool has_receive_values_;
184 }; 184 };
185 185
186 // Stores QuicSocketAddress from CHLO or SHLO messages that are not negotiated. 186 // Stores QuicSocketAddress from CHLO or SHLO messages that are not negotiated.
187 class NET_EXPORT_PRIVATE QuicFixedSocketAddress : public QuicConfigValue { 187 class QUIC_EXPORT_PRIVATE QuicFixedSocketAddress : public QuicConfigValue {
188 public: 188 public:
189 QuicFixedSocketAddress(QuicTag tag, QuicConfigPresence presence); 189 QuicFixedSocketAddress(QuicTag tag, QuicConfigPresence presence);
190 ~QuicFixedSocketAddress() override; 190 ~QuicFixedSocketAddress() override;
191 191
192 bool HasSendValue() const; 192 bool HasSendValue() const;
193 193
194 const QuicSocketAddress& GetSendValue() const; 194 const QuicSocketAddress& GetSendValue() const;
195 195
196 void SetSendValue(const QuicSocketAddress& value); 196 void SetSendValue(const QuicSocketAddress& value);
197 197
(...skipping 11 matching lines...) Expand all
209 209
210 private: 210 private:
211 QuicSocketAddress send_value_; 211 QuicSocketAddress send_value_;
212 bool has_send_value_; 212 bool has_send_value_;
213 QuicSocketAddress receive_value_; 213 QuicSocketAddress receive_value_;
214 bool has_receive_value_; 214 bool has_receive_value_;
215 }; 215 };
216 216
217 // QuicConfig contains non-crypto configuration options that are negotiated in 217 // QuicConfig contains non-crypto configuration options that are negotiated in
218 // the crypto handshake. 218 // the crypto handshake.
219 class NET_EXPORT_PRIVATE QuicConfig { 219 class QUIC_EXPORT_PRIVATE QuicConfig {
220 public: 220 public:
221 QuicConfig(); 221 QuicConfig();
222 QuicConfig(const QuicConfig& other); 222 QuicConfig(const QuicConfig& other);
223 ~QuicConfig(); 223 ~QuicConfig();
224 224
225 void SetConnectionOptionsToSend(const QuicTagVector& connection_options); 225 void SetConnectionOptionsToSend(const QuicTagVector& connection_options);
226 226
227 bool HasReceivedConnectionOptions() const; 227 bool HasReceivedConnectionOptions() const;
228 228
229 // Sets initial received connection options. All received connection options 229 // Sets initial received connection options. All received connection options
(...skipping 211 matching lines...) Expand 10 before | Expand all | Expand 10 after
441 // Force HOL blocking for measurement purposes. 441 // Force HOL blocking for measurement purposes.
442 QuicFixedUint32 force_hol_blocking_; 442 QuicFixedUint32 force_hol_blocking_;
443 443
444 // Whether support HTTP/2 SETTINGS_MAX_HEADER_LIST_SIZE SETTINGS frame. 444 // Whether support HTTP/2 SETTINGS_MAX_HEADER_LIST_SIZE SETTINGS frame.
445 QuicFixedUint32 support_max_header_list_size_; 445 QuicFixedUint32 support_max_header_list_size_;
446 }; 446 };
447 447
448 } // namespace net 448 } // namespace net
449 449
450 #endif // NET_QUIC_CORE_QUIC_CONFIG_H_ 450 #endif // NET_QUIC_CORE_QUIC_CONFIG_H_
OLDNEW
« no previous file with comments | « net/quic/core/quic_client_session_base.h ('k') | net/quic/core/quic_connection.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698