普通文本  |  51行  |  1.41 KB

// 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