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

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

Issue 12262004: Remove SpdyRstStreamControlFrame struct. Useful for SPDY 4 development. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 10 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 1190 matching lines...) Expand 10 before | Expand all | Expand 10 after
1201 uint32 delta_window_size = 0; 1201 uint32 delta_window_size = 0;
1202 bool successful_read = reader.ReadUInt31(&stream_id); 1202 bool successful_read = reader.ReadUInt31(&stream_id);
1203 DCHECK(successful_read); 1203 DCHECK(successful_read);
1204 successful_read = reader.ReadUInt32(&delta_window_size); 1204 successful_read = reader.ReadUInt32(&delta_window_size);
1205 DCHECK(successful_read); 1205 DCHECK(successful_read);
1206 DCHECK(reader.IsDoneReading()); 1206 DCHECK(reader.IsDoneReading());
1207 visitor_->OnWindowUpdate(stream_id, delta_window_size); 1207 visitor_->OnWindowUpdate(stream_id, delta_window_size);
1208 } 1208 }
1209 break; 1209 break;
1210 case RST_STREAM: { 1210 case RST_STREAM: {
1211 SpdyRstStreamControlFrame* rst_stream_frame = 1211 SpdyFrameReader reader(current_frame_buffer_.get(),
1212 reinterpret_cast<SpdyRstStreamControlFrame*>(&control_frame); 1212 current_frame_len_);
1213 visitor_->OnRstStream(rst_stream_frame->stream_id(), 1213 reader.Seek(GetControlFrameMinimumSize()); // Skip frame header.
1214 rst_stream_frame->status()); 1214 SpdyStreamId stream_id = kInvalidStream;
1215 bool successful_read = reader.ReadUInt32(&stream_id);
1216 DCHECK(successful_read);
1217 SpdyRstStreamStatus status = RST_STREAM_INVALID;
1218 uint32 status_raw = status;
1219 successful_read = reader.ReadUInt32(&status_raw);
1220 DCHECK(successful_read);
1221 if (status_raw > RST_STREAM_INVALID &&
1222 status_raw < RST_STREAM_NUM_STATUS_CODES) {
1223 status = static_cast<SpdyRstStreamStatus>(status_raw);
1224 } else {
1225 // TODO(hkhalil): Probably best to OnError here, depending on
1226 // our interpretation of the spec. Keeping with existing liberal
1227 // behavior for now.
1228 }
1229 DCHECK(reader.IsDoneReading());
1230 visitor_->OnRstStream(stream_id, status);
1215 } 1231 }
1216 break; 1232 break;
1217 case GOAWAY: { 1233 case GOAWAY: {
1218 SpdyFrameReader reader(current_frame_buffer_.get(), 1234 SpdyFrameReader reader(current_frame_buffer_.get(),
1219 current_frame_len_); 1235 current_frame_len_);
1220 reader.Seek(GetControlFrameMinimumSize()); // Skip frame header. 1236 reader.Seek(GetControlFrameMinimumSize()); // Skip frame header.
1221 SpdyStreamId last_accepted_stream_id = kInvalidStream; 1237 SpdyStreamId last_accepted_stream_id = kInvalidStream;
1222 bool successful_read = reader.ReadUInt31(&last_accepted_stream_id); 1238 bool successful_read = reader.ReadUInt31(&last_accepted_stream_id);
1223 DCHECK(successful_read); 1239 DCHECK(successful_read);
1224 SpdyGoAwayStatus status = GOAWAY_OK; 1240 SpdyGoAwayStatus status = GOAWAY_OK;
(...skipping 279 matching lines...) Expand 10 before | Expand all | Expand 10 after
1504 builder.WriteUInt32(syn_reply.stream_id()); 1520 builder.WriteUInt32(syn_reply.stream_id());
1505 if (protocol_version() < 3) { 1521 if (protocol_version() < 3) {
1506 builder.WriteUInt16(0); // Unused. 1522 builder.WriteUInt16(0); // Unused.
1507 } 1523 }
1508 DCHECK_EQ(GetSynReplyMinimumSize(), builder.length()); 1524 DCHECK_EQ(GetSynReplyMinimumSize(), builder.length());
1509 SerializeNameValueBlock(&builder, syn_reply); 1525 SerializeNameValueBlock(&builder, syn_reply);
1510 1526
1511 return builder.take(); 1527 return builder.take();
1512 } 1528 }
1513 1529
1514 SpdyRstStreamControlFrame* SpdyFramer::CreateRstStream( 1530 SpdyFrame* SpdyFramer::CreateRstStream(
1515 SpdyStreamId stream_id, 1531 SpdyStreamId stream_id,
1516 SpdyRstStreamStatus status) const { 1532 SpdyRstStreamStatus status) const {
1517 SpdyRstStreamIR rst_stream(stream_id, status); 1533 SpdyRstStreamIR rst_stream(stream_id, status);
1518 return reinterpret_cast<SpdyRstStreamControlFrame*>( 1534 return SerializeRstStream(rst_stream);
1519 SerializeRstStream(rst_stream));
1520 } 1535 }
1521 1536
1522 SpdySerializedFrame* SpdyFramer::SerializeRstStream( 1537 SpdySerializedFrame* SpdyFramer::SerializeRstStream(
1523 const SpdyRstStreamIR& rst_stream) const { 1538 const SpdyRstStreamIR& rst_stream) const {
1524 SpdyFrameBuilder builder(RST_STREAM, 1539 SpdyFrameBuilder builder(RST_STREAM,
1525 kNoFlags, 1540 kNoFlags,
1526 protocol_version(), 1541 protocol_version(),
1527 GetRstStreamSize()); 1542 GetRstStreamSize());
1528 builder.WriteUInt32(rst_stream.stream_id()); 1543 builder.WriteUInt32(rst_stream.stream_id());
1529 builder.WriteUInt32(rst_stream.status()); 1544 builder.WriteUInt32(rst_stream.status());
(...skipping 541 matching lines...) Expand 10 before | Expand all | Expand 10 after
2071 builder->WriteString(it->first); 2086 builder->WriteString(it->first);
2072 builder->WriteString(it->second); 2087 builder->WriteString(it->second);
2073 } else { 2088 } else {
2074 builder->WriteStringPiece32(it->first); 2089 builder->WriteStringPiece32(it->first);
2075 builder->WriteStringPiece32(it->second); 2090 builder->WriteStringPiece32(it->second);
2076 } 2091 }
2077 } 2092 }
2078 } 2093 }
2079 2094
2080 } // namespace net 2095 } // 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