1c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Copyright (c) 2010 The Chromium Authors. All rights reserved.
2c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Use of this source code is governed by a BSD-style license that can be
3c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// found in the LICENSE file.
4c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
5c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#ifndef NET_SPDY_SPDY_SETTING_STORAGE_H_
6c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#define NET_SPDY_SPDY_SETTING_STORAGE_H_
73345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick#pragma once
8c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
9c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include <map>
10c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "base/basictypes.h"
11c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "net/base/host_port_pair.h"
12c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "net/spdy/spdy_framer.h"
13c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
14c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochnamespace net {
15c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
16c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// SpdySettingsStorage stores SpdySettings which have been transmitted between
17c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// endpoints for the SPDY SETTINGS frame.
18c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass SpdySettingsStorage {
19c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch public:
20c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  SpdySettingsStorage();
213345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  ~SpdySettingsStorage();
22c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
23c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // Get a copy of the SpdySettings stored for a host.
24c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // If no settings are stored, returns an empty set of settings.
25c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  const spdy::SpdySettings& Get(const HostPortPair& host_port_pair) const;
26c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
27c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // Save settings for a host.
28c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  void Set(const HostPortPair& host_port_pair,
29c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch           const spdy::SpdySettings& settings);
30c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
31c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch private:
32c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  typedef std::map<HostPortPair, spdy::SpdySettings> SettingsMap;
33c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
34c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  SettingsMap settings_map_;
35c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
36c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  DISALLOW_COPY_AND_ASSIGN(SpdySettingsStorage);
37c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch};
38c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
39c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}  // namespace net
40c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
41c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#endif  // NET_SPDY_SPDY_SETTING_STORAGE_H_
42c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
43