Home | History | Annotate | Download | only in spdy
      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