• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright (c) 2010 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 #include "net/spdy/spdy_settings_storage.h"
6 
7 #include <utility>
8 
9 namespace net {
10 
SpdySettingsStorage()11 SpdySettingsStorage::SpdySettingsStorage() {
12 }
13 
~SpdySettingsStorage()14 SpdySettingsStorage::~SpdySettingsStorage() {
15 }
16 
Get(const HostPortPair & host_port_pair) const17 const spdy::SpdySettings& SpdySettingsStorage::Get(
18     const HostPortPair& host_port_pair) const {
19   SettingsMap::const_iterator it = settings_map_.find(host_port_pair);
20   if (it == settings_map_.end()) {
21     static const spdy::SpdySettings kEmpty;
22     return kEmpty;
23   }
24   return it->second;
25 }
26 
Set(const HostPortPair & host_port_pair,const spdy::SpdySettings & settings)27 void SpdySettingsStorage::Set(const HostPortPair& host_port_pair,
28                               const spdy::SpdySettings& settings) {
29   spdy::SpdySettings persistent_settings;
30 
31   // Iterate through the list, and only copy those settings which are marked
32   // for persistence.
33   spdy::SpdySettings::const_iterator it;
34   for (it = settings.begin(); it != settings.end(); ++it) {
35     spdy::SettingsFlagsAndId id = it->first;
36     if (id.flags() & spdy::SETTINGS_FLAG_PLEASE_PERSIST) {
37       id.set_flags(spdy::SETTINGS_FLAG_PERSISTED);
38       persistent_settings.push_back(std::make_pair(id, it->second));
39     }
40   }
41 
42   // If we didn't persist anything, then we are done.
43   if (persistent_settings.empty())
44     return;
45 
46   settings_map_[host_port_pair] = persistent_settings;
47 }
48 
49 }  // namespace net
50 
51