| // Copyright (c) 2010 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "net/spdy/spdy_settings_storage.h" |
| |
| #include <utility> |
| |
| namespace net { |
| |
| SpdySettingsStorage::SpdySettingsStorage() { |
| } |
| |
| SpdySettingsStorage::~SpdySettingsStorage() { |
| } |
| |
| const spdy::SpdySettings& SpdySettingsStorage::Get( |
| const HostPortPair& host_port_pair) const { |
| SettingsMap::const_iterator it = settings_map_.find(host_port_pair); |
| if (it == settings_map_.end()) { |
| static const spdy::SpdySettings kEmpty; |
| return kEmpty; |
| } |
| return it->second; |
| } |
| |
| void SpdySettingsStorage::Set(const HostPortPair& host_port_pair, |
| const spdy::SpdySettings& settings) { |
| spdy::SpdySettings persistent_settings; |
| |
| // Iterate through the list, and only copy those settings which are marked |
| // for persistence. |
| spdy::SpdySettings::const_iterator it; |
| for (it = settings.begin(); it != settings.end(); ++it) { |
| spdy::SettingsFlagsAndId id = it->first; |
| if (id.flags() & spdy::SETTINGS_FLAG_PLEASE_PERSIST) { |
| id.set_flags(spdy::SETTINGS_FLAG_PERSISTED); |
| persistent_settings.push_back(std::make_pair(id, it->second)); |
| } |
| } |
| |
| // If we didn't persist anything, then we are done. |
| if (persistent_settings.empty()) |
| return; |
| |
| settings_map_[host_port_pair] = persistent_settings; |
| } |
| |
| } // namespace net |
| |