// Copyright 2023 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_BASE_PROXY_CHAIN_H_ #define NET_BASE_PROXY_CHAIN_H_ #include <stdint.h> #include <iosfwd> #include <optional> #include <string> #include <string_view> #include <tuple> #include <vector> #include "net/base/host_port_pair.h" #include "net/base/net_export.h" #include "net/base/proxy_server.h" namespace base { class Pickle; class PickleIterator; } // namespace base namespace net { // ProxyChain represents a chain of ProxyServers. A chain with multiple proxy // servers means that a single connection will go through all of the proxies in // order, using a tunnel through the first proxy to connect to the second, etc. // A "direct" connection is a chain of length zero. class NET_EXPORT ProxyChain { … }; NET_EXPORT_PRIVATE std::ostream& operator<<(std::ostream& os, const ProxyChain& proxy_chain); // A HostPortProxyPair holds a host/port destination and a ProxyChain describing // how that destination is reached. HostPortProxyPair; } // namespace net #endif // NET_BASE_PROXY_CHAIN_H_