// Copyright 2017 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef NET_HTTP_BROKEN_ALTERNATIVE_SERVICES_H_ #define NET_HTTP_BROKEN_ALTERNATIVE_SERVICES_H_ #include <list> #include <set> #include "base/containers/lru_cache.h" #include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" #include "base/time/time.h" #include "base/timer/timer.h" #include "net/base/network_anonymization_key.h" #include "net/http/alternative_service.h" namespace base { class TickClock; } namespace net { // Contains information about a broken alternative service, and the context in // which it's known to be broken. struct NET_EXPORT_PRIVATE BrokenAlternativeService { … }; // Stores broken alternative services and when their brokenness expires. BrokenAlternativeServiceList; // Stores how many times an alternative service has been marked broken. class RecentlyBrokenAlternativeServices : public base::LRUCache<BrokenAlternativeService, int> { … }; // This class tracks HTTP alternative services that have been marked as broken. // The brokenness of an alt-svc will expire after some time according to an // exponential back-off formula: each time an alt-svc is marked broken, the // expiration delay will be some constant multiple of its previous expiration // delay. This prevents broken alt-svcs from being retried too often by the // network stack. // // Intended solely for use by HttpServerProperties. class NET_EXPORT_PRIVATE BrokenAlternativeServices { … }; } // namespace net #endif // NET_HTTP_BROKEN_ALTERNATIVE_SERVICES_H_