| Index: net/http/http_server_properties.h
|
| diff --git a/net/http/http_server_properties.h b/net/http/http_server_properties.h
|
| index dcb4cdcecf84b76590a28fa4ccaab9e4cf594e5a..b4bc1fe1068ee29a409f1ba9b720fc60331fadfc 100644
|
| --- a/net/http/http_server_properties.h
|
| +++ b/net/http/http_server_properties.h
|
| @@ -7,6 +7,8 @@
|
|
|
| #include <map>
|
| #include <string>
|
| +#include <vector>
|
| +
|
| #include "base/basictypes.h"
|
| #include "base/containers/mru_cache.h"
|
| #include "base/memory/weak_ptr.h"
|
| @@ -80,17 +82,11 @@ enum AlternateProtocolSize {
|
| ALTERNATE_PROTOCOL_MINIMUM_VALID_VERSION + 1,
|
| };
|
|
|
| -NET_EXPORT const char* AlternateProtocolToString(AlternateProtocol protocol);
|
| -NET_EXPORT AlternateProtocol AlternateProtocolFromString(
|
| - const std::string& str);
|
| -NET_EXPORT_PRIVATE AlternateProtocol AlternateProtocolFromNextProto(
|
| - NextProto next_proto);
|
| -
|
| struct NET_EXPORT AlternateProtocolInfo {
|
| AlternateProtocolInfo()
|
| : port(0),
|
| protocol(UNINITIALIZED_ALTERNATE_PROTOCOL),
|
| - probability(0),
|
| + probability(0.0),
|
| is_broken(false) {}
|
|
|
| AlternateProtocolInfo(uint16 port,
|
| @@ -111,9 +107,12 @@ struct NET_EXPORT AlternateProtocolInfo {
|
| is_broken(is_broken) {}
|
|
|
| bool Equals(const AlternateProtocolInfo& other) const {
|
| - return port == other.port &&
|
| - protocol == other.protocol &&
|
| - probability == other.probability;
|
| + return port == other.port && protocol == other.protocol &&
|
| + probability == other.probability;
|
| + }
|
| +
|
| + bool EqualsModuloProbability(const AlternateProtocolInfo& other) const {
|
| + return port == other.port && protocol == other.protocol;
|
| }
|
|
|
| std::string ToString() const;
|
| @@ -145,13 +144,21 @@ struct NET_EXPORT ServerNetworkStats {
|
| QuicBandwidth bandwidth_estimate;
|
| };
|
|
|
| -typedef base::MRUCache<
|
| - HostPortPair, AlternateProtocolInfo> AlternateProtocolMap;
|
| +typedef std::vector<AlternateProtocolInfo> AlternateProtocols;
|
| +typedef base::MRUCache<HostPortPair, AlternateProtocols> AlternateProtocolMap;
|
| typedef base::MRUCache<HostPortPair, SettingsMap> SpdySettingsMap;
|
| typedef base::MRUCache<HostPortPair, ServerNetworkStats> ServerNetworkStatsMap;
|
|
|
| extern const char kAlternateProtocolHeader[];
|
|
|
| +NET_EXPORT const char* AlternateProtocolToString(AlternateProtocol protocol);
|
| +NET_EXPORT std::string AlternateProtocolsToString(
|
| + const AlternateProtocols& services);
|
| +NET_EXPORT AlternateProtocol
|
| +AlternateProtocolFromString(const std::string& str);
|
| +NET_EXPORT_PRIVATE AlternateProtocol
|
| +AlternateProtocolFromNextProto(NextProto next_proto);
|
| +
|
| // The interface for setting/retrieving the HTTP server properties.
|
| // Currently, this class manages servers':
|
| // * SPDY support (based on NPN results)
|
| @@ -190,30 +197,42 @@ class NET_EXPORT HttpServerProperties {
|
| virtual void MaybeForceHTTP11(const HostPortPair& server,
|
| SSLConfig* ssl_config) = 0;
|
|
|
| - // Returns the AlternateProtocol for |server| if it has probability equal to
|
| - // or exceeding threshold, or else the forced AlternateProtocol if there is
|
| - // one, or else one with UNINITIALIZED_ALTERNATE_PROTOCOL.
|
| - virtual AlternateProtocolInfo GetAlternateProtocol(
|
| + // Returns all alternate protocols for |server| with probability greater than
|
| + // or equal to the threshold, even broken ones.
|
| + virtual AlternateProtocols GetAlternateProtocols(
|
| const HostPortPair& server) = 0;
|
|
|
| - // Sets the Alternate-Protocol for |server|.
|
| - virtual void SetAlternateProtocol(const HostPortPair& server,
|
| + // Adds an alternate protocol for |server|.
|
| + virtual void AddAlternateProtocol(const HostPortPair& server,
|
| uint16 alternate_port,
|
| AlternateProtocol alternate_protocol,
|
| double probability) = 0;
|
|
|
| - // Sets the Alternate-Protocol for |server| to be BROKEN.
|
| - virtual void SetBrokenAlternateProtocol(const HostPortPair& server) = 0;
|
| + // Sets a given alternate protocol for |server| to be broken.
|
| + virtual void SetBrokenAlternateProtocol(
|
| + const HostPortPair& server,
|
| + const AlternateProtocolInfo& broken_alternate_protocol) = 0;
|
|
|
| - // Returns true if Alternate-Protocol for |server| was recently BROKEN.
|
| + // Returns true if given alternate protocol for |server| was recently broken.
|
| virtual bool WasAlternateProtocolRecentlyBroken(
|
| - const HostPortPair& server) = 0;
|
| + const HostPortPair& server,
|
| + const AlternateProtocolInfo& alternate_protocol) const = 0;
|
| +
|
| + // Removes given (alternate protocol, server) pair from recently broken list.
|
| + virtual void ConfirmAlternateProtocol(
|
| + const HostPortPair& server,
|
| + const AlternateProtocolInfo& alternate_protocol) = 0;
|
| +
|
| + // Clears all alternate protocols for |server|.
|
| + virtual void ClearAlternateProtocols(const HostPortPair& server) = 0;
|
|
|
| - // Confirms that Alternate-Protocol for |server| is working.
|
| - virtual void ConfirmAlternateProtocol(const HostPortPair& server) = 0;
|
| + // Clears all alternate protocols that are not broken for |server|.
|
| + virtual void ClearNonBrokenAlternateProtocols(const HostPortPair& server) = 0;
|
|
|
| - // Clears the Alternate-Protocol for |server|.
|
| - virtual void ClearAlternateProtocol(const HostPortPair& server) = 0;
|
| + // Removes an alternate protocol for |server|.
|
| + virtual void RemoveAlternateProtocol(
|
| + const HostPortPair& server,
|
| + const AlternateProtocolInfo& alternate_protocol) = 0;
|
|
|
| // Returns all Alternate-Protocol mappings.
|
| virtual const AlternateProtocolMap& alternate_protocol_map() const = 0;
|
|
|