1// Copyright (c) 2011 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_HTTP_HTTP_NETWORK_SESSION_PEER_H_
6#define NET_HTTP_HTTP_NETWORK_SESSION_PEER_H_
7#pragma once
8
9#include "base/memory/ref_counted.h"
10
11namespace net {
12
13class HostPortPair;
14class HttpNetworkSession;
15class HttpProxyClientSocketPool;
16class HttpStreamFactory;
17class ProxyService;
18class SOCKSClientSocketPool;
19class SSLClientSocketPool;
20class TransportClientSocketPool;
21
22class HttpNetworkSessionPeer {
23 public:
24  explicit HttpNetworkSessionPeer(
25      const scoped_refptr<HttpNetworkSession>& session);
26  ~HttpNetworkSessionPeer();
27
28  void SetTransportSocketPool(TransportClientSocketPool* pool);
29
30  void SetSocketPoolForSOCKSProxy(
31      const HostPortPair& socks_proxy,
32      SOCKSClientSocketPool* pool);
33
34  void SetSocketPoolForHTTPProxy(
35      const HostPortPair& http_proxy,
36      HttpProxyClientSocketPool* pool);
37
38  void SetSSLSocketPool(SSLClientSocketPool* pool);
39
40  void SetSocketPoolForSSLWithProxy(
41      const HostPortPair& proxy_host,
42      SSLClientSocketPool* pool);
43
44  void SetProxyService(ProxyService* proxy_service);
45
46  void SetHttpStreamFactory(HttpStreamFactory* http_stream_factory);
47
48 private:
49  const scoped_refptr<HttpNetworkSession> session_;
50
51  DISALLOW_COPY_AND_ASSIGN(HttpNetworkSessionPeer);
52};
53
54}  // namespace net
55
56#endif  // NET_HTTP_HTTP_NETWORK_SESSION_PEER_H_
57