1// Copyright (c) 2013 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_SPDY_SPDY_SESSION_KEY_H_
6#define NET_SPDY_SPDY_SESSION_KEY_H_
7
8#include "net/base/privacy_mode.h"
9#include "net/proxy/proxy_server.h"
10
11namespace net {
12
13// SpdySessionKey is used as unique index for SpdySessionPool.
14class NET_EXPORT_PRIVATE SpdySessionKey {
15 public:
16  SpdySessionKey();
17  SpdySessionKey(const HostPortPair& host_port_pair,
18                 const ProxyServer& proxy_server,
19                 PrivacyMode privacy_mode);
20
21  // Temporary hack for implicit copy constructor
22  SpdySessionKey(const HostPortProxyPair& host_port_proxy_pair,
23                 PrivacyMode privacy_mode);
24
25  ~SpdySessionKey();
26
27  // Comparator function so this can be placed in a std::map.
28  bool operator<(const SpdySessionKey& other) const;
29
30  // Equality test of contents. (Probably another violation of style guide).
31  bool Equals(const SpdySessionKey& other) const;
32
33  const HostPortProxyPair& host_port_proxy_pair() const {
34    return host_port_proxy_pair_;
35  }
36
37  const HostPortPair& host_port_pair() const {
38    return host_port_proxy_pair_.first;
39  }
40
41  const ProxyServer& proxy_server() const {
42    return host_port_proxy_pair_.second;
43  }
44
45  PrivacyMode privacy_mode() const {
46    return privacy_mode_;
47  }
48
49 private:
50  HostPortProxyPair host_port_proxy_pair_;
51  // If enabled, then session cannot be tracked by the server.
52  PrivacyMode privacy_mode_;
53};
54
55}  // namespace net
56
57#endif  // NET_SPDY_SPDY_SESSION_KEY_H_
58
59