1// Copyright (c) 2006-2008 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef NET_PROXY_PROXY_RETRY_INFO_H_
6#define NET_PROXY_PROXY_RETRY_INFO_H_
7
8#include <map>
9
10#include "base/time/time.h"
11
12namespace net {
13
14// Contains the information about when to retry a proxy server.
15struct ProxyRetryInfo {
16  ProxyRetryInfo() : try_while_bad(true), net_error(0) {}
17
18  // We should not retry until this time.
19  base::TimeTicks bad_until;
20
21  // This is the current delay. If the proxy is still bad, we need to increase
22  // this delay.
23  base::TimeDelta current_delay;
24
25  // True if this proxy should be considered even if still bad.
26  bool try_while_bad;
27
28  // The network error received when this proxy failed, or |OK| if the proxy
29  // was added to the retry list for a non-network related reason. (e.g. local
30  // policy).
31  int net_error;
32};
33
34// Map of proxy servers with the associated RetryInfo structures.
35// The key is a proxy URI string [<scheme>"://"]<host>":"<port>.
36typedef std::map<std::string, ProxyRetryInfo> ProxyRetryInfoMap;
37
38}  // namespace net
39
40#endif  // NET_PROXY_PROXY_RETRY_INFO_H_
41