diff options
author | rtenneti@chromium.org <rtenneti@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-04-18 02:14:42 +0000 |
---|---|---|
committer | rtenneti@chromium.org <rtenneti@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-04-18 02:14:42 +0000 |
commit | 18b28abfc0a6afc32d44bafeff5caf4db80d0524 (patch) | |
tree | df81aa7b884c28f2494f8e8d98803be44e16ad11 /net/spdy/spdy_framer.cc | |
parent | 0a798a15c94fd3092ef36d7857ef3a6119e4c7d4 (diff) | |
download | chromium_src-18b28abfc0a6afc32d44bafeff5caf4db80d0524.zip chromium_src-18b28abfc0a6afc32d44bafeff5caf4db80d0524.tar.gz chromium_src-18b28abfc0a6afc32d44bafeff5caf4db80d0524.tar.bz2 |
SPDY - replaced SpdySettings (list) with SettingsMap
CreateSettings accepts SettingsMap which enforces
that there are no duplicate settings.
Deleted unused class SpdySettingsStorage.
In net-internals, log setting's id, flags and value for
SpdySettings.
BUG=119752
R=rch@chromium.org,hkhalil@google.com
TEST=network unit tests
Review URL: http://codereview.chromium.org/10054034
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@132722 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net/spdy/spdy_framer.cc')
-rw-r--r-- | net/spdy/spdy_framer.cc | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/net/spdy/spdy_framer.cc b/net/spdy/spdy_framer.cc index a9edcf6..69a0e8b 100644 --- a/net/spdy/spdy_framer.cc +++ b/net/spdy/spdy_framer.cc @@ -1001,7 +1001,7 @@ bool SpdyFramer::ParseHeaderBlockInBuffer(const char* header_data, /* static */ bool SpdyFramer::ParseSettings(const SpdySettingsControlFrame* frame, - SpdySettings* settings) { + SettingsMap* settings) { DCHECK_EQ(frame->type(), SETTINGS); DCHECK(settings); @@ -1016,9 +1016,12 @@ bool SpdyFramer::ParseSettings(const SpdySettingsControlFrame* frame, } if (!parser.ReadUInt32(&value)) return false; - SettingsFlagsAndId id_and_flags = + SettingsFlagsAndId flags_and_id = SettingsFlagsAndId::FromWireFormat(frame->version(), id_and_flags_wire); - settings->insert(settings->end(), std::make_pair(id_and_flags, value)); + SpdySettingsIds id = static_cast<SpdySettingsIds>(flags_and_id.id()); + SpdySettingsFlags flags = + static_cast<SpdySettingsFlags>(flags_and_id.flags()); + settings->insert(std::make_pair(id, SettingsFlagsAndValue(flags, value))); } return true; } @@ -1139,16 +1142,17 @@ SpdyRstStreamControlFrame* SpdyFramer::CreateRstStream( } SpdySettingsControlFrame* SpdyFramer::CreateSettings( - const SpdySettings& values) const { + const SettingsMap& values) const { size_t frame_size = SpdySettingsControlFrame::size() + 8 * values.size(); SpdyFrameBuilder frame(SETTINGS, CONTROL_FLAG_NONE, spdy_version_, frame_size); frame.WriteUInt32(values.size()); - SpdySettings::const_iterator it = values.begin(); + SettingsMap::const_iterator it = values.begin(); while (it != values.end()) { - uint32 id_and_flags_wire = it->first.GetWireFormat(spdy_version_); + SettingsFlagsAndId flags_and_id(it->second.first, it->first); + uint32 id_and_flags_wire = flags_and_id.GetWireFormat(spdy_version_); frame.WriteBytes(&id_and_flags_wire, 4); - frame.WriteUInt32(it->second); + frame.WriteUInt32(it->second.second); ++it; } DCHECK_EQ(static_cast<size_t>(frame.length()), frame_size); |