summaryrefslogtreecommitdiffstats
path: root/net/spdy/spdy_framer.cc
diff options
context:
space:
mode:
authorrtenneti@chromium.org <rtenneti@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-04-18 02:14:42 +0000
committerrtenneti@chromium.org <rtenneti@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-04-18 02:14:42 +0000
commit18b28abfc0a6afc32d44bafeff5caf4db80d0524 (patch)
treedf81aa7b884c28f2494f8e8d98803be44e16ad11 /net/spdy/spdy_framer.cc
parent0a798a15c94fd3092ef36d7857ef3a6119e4c7d4 (diff)
downloadchromium_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.cc18
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);