Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(896)

Side by Side Diff: net/spdy/spdy_framer.cc

Issue 10054034: SPDY - replaced SpdySettings (list) with SettingsMap (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 8 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « net/spdy/spdy_framer.h ('k') | net/spdy/spdy_framer_test.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 // TODO(rtenhove) clean up frame buffer size calculations so that we aren't 5 // TODO(rtenhove) clean up frame buffer size calculations so that we aren't
6 // constantly adding and subtracting header sizes; this is ugly and error- 6 // constantly adding and subtracting header sizes; this is ugly and error-
7 // prone. 7 // prone.
8 8
9 #include "net/spdy/spdy_framer.h" 9 #include "net/spdy/spdy_framer.h"
10 10
(...skipping 983 matching lines...) Expand 10 before | Expand all | Expand 10 after
994 } 994 }
995 995
996 // Store header. 996 // Store header.
997 (*block)[name] = value; 997 (*block)[name] = value;
998 } 998 }
999 return true; 999 return true;
1000 } 1000 }
1001 1001
1002 /* static */ 1002 /* static */
1003 bool SpdyFramer::ParseSettings(const SpdySettingsControlFrame* frame, 1003 bool SpdyFramer::ParseSettings(const SpdySettingsControlFrame* frame,
1004 SpdySettings* settings) { 1004 SettingsMap* settings) {
1005 DCHECK_EQ(frame->type(), SETTINGS); 1005 DCHECK_EQ(frame->type(), SETTINGS);
1006 DCHECK(settings); 1006 DCHECK(settings);
1007 1007
1008 SpdyFrameReader parser(frame->header_block(), frame->header_block_len()); 1008 SpdyFrameReader parser(frame->header_block(), frame->header_block_len());
1009 for (size_t index = 0; index < frame->num_entries(); ++index) { 1009 for (size_t index = 0; index < frame->num_entries(); ++index) {
1010 uint32 id_and_flags_wire; 1010 uint32 id_and_flags_wire;
1011 uint32 value; 1011 uint32 value;
1012 // SettingsFlagsAndId accepts off-the-wire (network byte order) data, so we 1012 // SettingsFlagsAndId accepts off-the-wire (network byte order) data, so we
1013 // use ReadBytes() instead of ReadUInt32() as the latter calls ntohl(). 1013 // use ReadBytes() instead of ReadUInt32() as the latter calls ntohl().
1014 if (!parser.ReadBytes(&id_and_flags_wire, 4)) { 1014 if (!parser.ReadBytes(&id_and_flags_wire, 4)) {
1015 return false; 1015 return false;
1016 } 1016 }
1017 if (!parser.ReadUInt32(&value)) 1017 if (!parser.ReadUInt32(&value))
1018 return false; 1018 return false;
1019 SettingsFlagsAndId id_and_flags = 1019 SettingsFlagsAndId flags_and_id =
1020 SettingsFlagsAndId::FromWireFormat(frame->version(), id_and_flags_wire); 1020 SettingsFlagsAndId::FromWireFormat(frame->version(), id_and_flags_wire);
1021 settings->insert(settings->end(), std::make_pair(id_and_flags, value)); 1021 SpdySettingsIds id = static_cast<SpdySettingsIds>(flags_and_id.id());
1022 SpdySettingsFlags flags =
1023 static_cast<SpdySettingsFlags>(flags_and_id.flags());
1024 settings->insert(std::make_pair(id, SettingsFlagsAndValue(flags, value)));
1022 } 1025 }
1023 return true; 1026 return true;
1024 } 1027 }
1025 1028
1026 /* static */ 1029 /* static */
1027 bool SpdyFramer::ParseCredentialData(const char* data, size_t len, 1030 bool SpdyFramer::ParseCredentialData(const char* data, size_t len,
1028 SpdyCredential* credential) { 1031 SpdyCredential* credential) {
1029 DCHECK(credential); 1032 DCHECK(credential);
1030 1033
1031 SpdyFrameReader parser(data, len); 1034 SpdyFrameReader parser(data, len);
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after
1132 size_t frame_size = SpdyRstStreamControlFrame::size(); 1135 size_t frame_size = SpdyRstStreamControlFrame::size();
1133 SpdyFrameBuilder frame(RST_STREAM, CONTROL_FLAG_NONE, spdy_version_, 1136 SpdyFrameBuilder frame(RST_STREAM, CONTROL_FLAG_NONE, spdy_version_,
1134 frame_size); 1137 frame_size);
1135 frame.WriteUInt32(stream_id); 1138 frame.WriteUInt32(stream_id);
1136 frame.WriteUInt32(status); 1139 frame.WriteUInt32(status);
1137 DCHECK_EQ(static_cast<size_t>(frame.length()), frame_size); 1140 DCHECK_EQ(static_cast<size_t>(frame.length()), frame_size);
1138 return reinterpret_cast<SpdyRstStreamControlFrame*>(frame.take()); 1141 return reinterpret_cast<SpdyRstStreamControlFrame*>(frame.take());
1139 } 1142 }
1140 1143
1141 SpdySettingsControlFrame* SpdyFramer::CreateSettings( 1144 SpdySettingsControlFrame* SpdyFramer::CreateSettings(
1142 const SpdySettings& values) const { 1145 const SettingsMap& values) const {
1143 size_t frame_size = SpdySettingsControlFrame::size() + 8 * values.size(); 1146 size_t frame_size = SpdySettingsControlFrame::size() + 8 * values.size();
1144 SpdyFrameBuilder frame(SETTINGS, CONTROL_FLAG_NONE, spdy_version_, 1147 SpdyFrameBuilder frame(SETTINGS, CONTROL_FLAG_NONE, spdy_version_,
1145 frame_size); 1148 frame_size);
1146 frame.WriteUInt32(values.size()); 1149 frame.WriteUInt32(values.size());
1147 SpdySettings::const_iterator it = values.begin(); 1150 SettingsMap::const_iterator it = values.begin();
1148 while (it != values.end()) { 1151 while (it != values.end()) {
1149 uint32 id_and_flags_wire = it->first.GetWireFormat(spdy_version_); 1152 SettingsFlagsAndId flags_and_id(it->second.first, it->first);
1153 uint32 id_and_flags_wire = flags_and_id.GetWireFormat(spdy_version_);
1150 frame.WriteBytes(&id_and_flags_wire, 4); 1154 frame.WriteBytes(&id_and_flags_wire, 4);
1151 frame.WriteUInt32(it->second); 1155 frame.WriteUInt32(it->second.second);
1152 ++it; 1156 ++it;
1153 } 1157 }
1154 DCHECK_EQ(static_cast<size_t>(frame.length()), frame_size); 1158 DCHECK_EQ(static_cast<size_t>(frame.length()), frame_size);
1155 return reinterpret_cast<SpdySettingsControlFrame*>(frame.take()); 1159 return reinterpret_cast<SpdySettingsControlFrame*>(frame.take());
1156 } 1160 }
1157 1161
1158 SpdyPingControlFrame* SpdyFramer::CreatePingFrame(uint32 unique_id) const { 1162 SpdyPingControlFrame* SpdyFramer::CreatePingFrame(uint32 unique_id) const {
1159 size_t frame_size = SpdyPingControlFrame::size(); 1163 size_t frame_size = SpdyPingControlFrame::size();
1160 SpdyFrameBuilder frame(PING, CONTROL_FLAG_NONE, spdy_version_, frame_size); 1164 SpdyFrameBuilder frame(PING, CONTROL_FLAG_NONE, spdy_version_, frame_size);
1161 frame.WriteUInt32(unique_id); 1165 frame.WriteUInt32(unique_id);
(...skipping 585 matching lines...) Expand 10 before | Expand all | Expand 10 after
1747 1751
1748 void SpdyFramer::set_validate_control_frame_sizes(bool value) { 1752 void SpdyFramer::set_validate_control_frame_sizes(bool value) {
1749 validate_control_frame_sizes_ = value; 1753 validate_control_frame_sizes_ = value;
1750 } 1754 }
1751 1755
1752 void SpdyFramer::set_enable_compression_default(bool value) { 1756 void SpdyFramer::set_enable_compression_default(bool value) {
1753 g_enable_compression_default = value; 1757 g_enable_compression_default = value;
1754 } 1758 }
1755 1759
1756 } // namespace net 1760 } // namespace net
OLDNEW
« no previous file with comments | « net/spdy/spdy_framer.h ('k') | net/spdy/spdy_framer_test.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698