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 11 SpdySettingsStorage::SpdySettingsStorage() { 12 } 13 14 SpdySettingsStorage::~SpdySettingsStorage() { 15 } 16 17 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 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