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

Side by Side Diff: net/http/http_server_properties.h

Issue 1043973002: Introduce AlternativeServiceInfo. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Early return. Created 5 years, 8 months 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/http/http_network_transaction_unittest.cc ('k') | net/http/http_server_properties.cc » ('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) 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_HTTP_HTTP_SERVER_PROPERTIES_H_ 5 #ifndef NET_HTTP_HTTP_SERVER_PROPERTIES_H_
6 #define NET_HTTP_HTTP_SERVER_PROPERTIES_H_ 6 #define NET_HTTP_HTTP_SERVER_PROPERTIES_H_
7 7
8 #include <map> 8 #include <map>
9 #include <string> 9 #include <string>
10 #include "base/basictypes.h" 10 #include "base/basictypes.h"
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
79 ALTERNATE_PROTOCOL_MAXIMUM_VALID_VERSION - 79 ALTERNATE_PROTOCOL_MAXIMUM_VALID_VERSION -
80 ALTERNATE_PROTOCOL_MINIMUM_VALID_VERSION + 1, 80 ALTERNATE_PROTOCOL_MINIMUM_VALID_VERSION + 1,
81 }; 81 };
82 82
83 NET_EXPORT const char* AlternateProtocolToString(AlternateProtocol protocol); 83 NET_EXPORT const char* AlternateProtocolToString(AlternateProtocol protocol);
84 NET_EXPORT AlternateProtocol AlternateProtocolFromString( 84 NET_EXPORT AlternateProtocol AlternateProtocolFromString(
85 const std::string& str); 85 const std::string& str);
86 NET_EXPORT_PRIVATE AlternateProtocol AlternateProtocolFromNextProto( 86 NET_EXPORT_PRIVATE AlternateProtocol AlternateProtocolFromNextProto(
87 NextProto next_proto); 87 NextProto next_proto);
88 88
89 // (protocol, host, port) triple as defined in
90 // https://tools.ietf.org/id/draft-ietf-httpbis-alt-svc-06.html
89 struct NET_EXPORT AlternativeService { 91 struct NET_EXPORT AlternativeService {
90 AlternativeService() 92 AlternativeService()
91 : protocol(UNINITIALIZED_ALTERNATE_PROTOCOL), host(), port(0) {} 93 : protocol(UNINITIALIZED_ALTERNATE_PROTOCOL), host(), port(0) {}
92 94
93 AlternativeService(AlternateProtocol protocol, 95 AlternativeService(AlternateProtocol protocol,
94 const std::string& host, 96 const std::string& host,
95 uint16 port) 97 uint16 port)
96 : protocol(protocol), host(host), port(port) {} 98 : protocol(protocol), host(host), port(port) {}
97 99
98 AlternativeService(AlternateProtocol protocol, 100 AlternativeService(AlternateProtocol protocol,
(...skipping 12 matching lines...) Expand all
111 } 113 }
112 114
113 bool operator<(const AlternativeService& other) const { 115 bool operator<(const AlternativeService& other) const {
114 if (protocol != other.protocol) 116 if (protocol != other.protocol)
115 return protocol < other.protocol; 117 return protocol < other.protocol;
116 if (host != other.host) 118 if (host != other.host)
117 return host < other.host; 119 return host < other.host;
118 return port < other.port; 120 return port < other.port;
119 } 121 }
120 122
123 std::string ToString() const;
124
121 AlternateProtocol protocol; 125 AlternateProtocol protocol;
122 std::string host; 126 std::string host;
123 uint16 port; 127 uint16 port;
124 }; 128 };
125 129
126 struct NET_EXPORT AlternateProtocolInfo { 130 struct NET_EXPORT AlternativeServiceInfo {
127 AlternateProtocolInfo() 131 AlternativeServiceInfo() : alternative_service(), probability(0.0) {}
128 : port(0), protocol(UNINITIALIZED_ALTERNATE_PROTOCOL), probability(0) {}
129 132
130 AlternateProtocolInfo(uint16 port, 133 AlternativeServiceInfo(const AlternativeService& alternative_service,
131 AlternateProtocol protocol, 134 double probability)
132 double probability) 135 : alternative_service(alternative_service), probability(probability) {}
133 : port(port), protocol(protocol), probability(probability) {}
134 136
135 bool Equals(const AlternateProtocolInfo& other) const { 137 AlternativeServiceInfo(AlternateProtocol protocol,
136 return port == other.port && 138 const std::string& host,
137 protocol == other.protocol && 139 uint16 port,
138 probability == other.probability; 140 double probability)
141 : alternative_service(protocol, host, port), probability(probability) {}
142
143 AlternativeServiceInfo(
144 const AlternativeServiceInfo& alternative_service_info) = default;
145 AlternativeServiceInfo& operator=(
146 const AlternativeServiceInfo& alternative_service_info) = default;
147
148 bool operator==(const AlternativeServiceInfo& other) const {
149 return alternative_service == other.alternative_service &&
150 probability == other.probability;
151 }
152
153 bool operator!=(const AlternativeServiceInfo& other) const {
154 return !this->operator==(other);
139 } 155 }
140 156
141 std::string ToString() const; 157 std::string ToString() const;
142 158
143 uint16 port; 159 AlternativeService alternative_service;
144 AlternateProtocol protocol;
145 double probability; 160 double probability;
146 }; 161 };
147 162
148 struct NET_EXPORT SupportsQuic { 163 struct NET_EXPORT SupportsQuic {
149 SupportsQuic() : used_quic(false) {} 164 SupportsQuic() : used_quic(false) {}
150 SupportsQuic(bool used_quic, const std::string& address) 165 SupportsQuic(bool used_quic, const std::string& address)
151 : used_quic(used_quic), 166 : used_quic(used_quic),
152 address(address) {} 167 address(address) {}
153 168
154 bool Equals(const SupportsQuic& other) const { 169 bool Equals(const SupportsQuic& other) const {
155 return used_quic == other.used_quic && address == other.address; 170 return used_quic == other.used_quic && address == other.address;
156 } 171 }
157 172
158 bool used_quic; 173 bool used_quic;
159 std::string address; 174 std::string address;
160 }; 175 };
161 176
162 struct NET_EXPORT ServerNetworkStats { 177 struct NET_EXPORT ServerNetworkStats {
163 ServerNetworkStats() : bandwidth_estimate(QuicBandwidth::Zero()) {} 178 ServerNetworkStats() : bandwidth_estimate(QuicBandwidth::Zero()) {}
164 179
165 base::TimeDelta srtt; 180 base::TimeDelta srtt;
166 QuicBandwidth bandwidth_estimate; 181 QuicBandwidth bandwidth_estimate;
167 }; 182 };
168 183
169 typedef base::MRUCache< 184 typedef base::MRUCache<HostPortPair, AlternativeServiceInfo>
170 HostPortPair, AlternateProtocolInfo> AlternateProtocolMap; 185 AlternativeServiceMap;
171 typedef base::MRUCache<HostPortPair, SettingsMap> SpdySettingsMap; 186 typedef base::MRUCache<HostPortPair, SettingsMap> SpdySettingsMap;
172 typedef base::MRUCache<HostPortPair, ServerNetworkStats> ServerNetworkStatsMap; 187 typedef base::MRUCache<HostPortPair, ServerNetworkStats> ServerNetworkStatsMap;
173 188
174 extern const char kAlternateProtocolHeader[]; 189 extern const char kAlternateProtocolHeader[];
175 190
176 // The interface for setting/retrieving the HTTP server properties. 191 // The interface for setting/retrieving the HTTP server properties.
177 // Currently, this class manages servers': 192 // Currently, this class manages servers':
178 // * SPDY support (based on NPN results) 193 // * SPDY support (based on NPN results)
179 // * Alternate-Protocol support 194 // * alternative service support
180 // * Spdy Settings (like CWND ID field) 195 // * Spdy Settings (like CWND ID field)
181 class NET_EXPORT HttpServerProperties { 196 class NET_EXPORT HttpServerProperties {
182 public: 197 public:
183 HttpServerProperties() {} 198 HttpServerProperties() {}
184 virtual ~HttpServerProperties() {} 199 virtual ~HttpServerProperties() {}
185 200
186 // Gets a weak pointer for this object. 201 // Gets a weak pointer for this object.
187 virtual base::WeakPtr<HttpServerProperties> GetWeakPtr() = 0; 202 virtual base::WeakPtr<HttpServerProperties> GetWeakPtr() = 0;
188 203
189 // Deletes all data. 204 // Deletes all data.
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
240 virtual bool WasAlternativeServiceRecentlyBroken( 255 virtual bool WasAlternativeServiceRecentlyBroken(
241 const AlternativeService& alternative_service) = 0; 256 const AlternativeService& alternative_service) = 0;
242 257
243 // Confirms that |alternative_service| is working. 258 // Confirms that |alternative_service| is working.
244 virtual void ConfirmAlternativeService( 259 virtual void ConfirmAlternativeService(
245 const AlternativeService& alternative_service) = 0; 260 const AlternativeService& alternative_service) = 0;
246 261
247 // Clears the alternative service for |origin|. 262 // Clears the alternative service for |origin|.
248 virtual void ClearAlternativeService(const HostPortPair& origin) = 0; 263 virtual void ClearAlternativeService(const HostPortPair& origin) = 0;
249 264
250 // Returns all Alternate-Protocol mappings. 265 // Returns all alternative service mappings.
251 virtual const AlternateProtocolMap& alternate_protocol_map() const = 0; 266 virtual const AlternativeServiceMap& alternative_service_map() const = 0;
252 267
253 // Sets the threshold to be used when evaluating alternative service 268 // Sets the threshold to be used when evaluating alternative service
254 // advertisments. Only advertisements with a probability greater than or equal 269 // advertisments. Only advertisements with a probability greater than or equal
255 // to |threshold| will be honored. |threshold| must be between 0.0 and 1.0 270 // to |threshold| will be honored. |threshold| must be between 0.0 and 1.0
256 // inclusive. Hence, a threshold of 0.0 implies that all advertisements will 271 // inclusive. Hence, a threshold of 0.0 implies that all advertisements will
257 // be honored. 272 // be honored.
258 virtual void SetAlternateProtocolProbabilityThreshold( 273 virtual void SetAlternateProtocolProbabilityThreshold(
259 double threshold) = 0; 274 double threshold) = 0;
260 275
261 // Gets a reference to the SettingsMap stored for a host. 276 // Gets a reference to the SettingsMap stored for a host.
(...skipping 30 matching lines...) Expand all
292 307
293 virtual const ServerNetworkStatsMap& server_network_stats_map() const = 0; 308 virtual const ServerNetworkStatsMap& server_network_stats_map() const = 0;
294 309
295 private: 310 private:
296 DISALLOW_COPY_AND_ASSIGN(HttpServerProperties); 311 DISALLOW_COPY_AND_ASSIGN(HttpServerProperties);
297 }; 312 };
298 313
299 } // namespace net 314 } // namespace net
300 315
301 #endif // NET_HTTP_HTTP_SERVER_PROPERTIES_H_ 316 #endif // NET_HTTP_HTTP_SERVER_PROPERTIES_H_
OLDNEW
« no previous file with comments | « net/http/http_network_transaction_unittest.cc ('k') | net/http/http_server_properties.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698