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

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

Issue 12256004: Remove SpdySynReplyControlFrame and SpdyGoAwayControlFrame. (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_frame_reader.h ('k') | net/spdy/spdy_framer.h » ('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 #include <limits> 5 #include <limits>
6 6
7 #include "base/sys_byteorder.h" 7 #include "base/sys_byteorder.h"
8 #include "net/spdy/spdy_frame_reader.h" 8 #include "net/spdy/spdy_frame_reader.h"
9 #include "net/spdy/spdy_protocol.h"
9 10
10 namespace net { 11 namespace net {
11 12
12 SpdyFrameReader::SpdyFrameReader(const char* data, const size_t len) 13 SpdyFrameReader::SpdyFrameReader(const char* data, const size_t len)
13 : data_(data), 14 : data_(data),
14 len_(len), 15 len_(len),
15 ofs_(0) { 16 ofs_(0) {
16 } 17 }
17 18
19 bool SpdyFrameReader::ReadUInt8(uint8* result) {
20 // Make sure that we have the whole uint8.
21 if (!CanRead(1)) {
22 OnFailure();
23 return false;
24 }
25
26 // Read into result.
27 *result = *reinterpret_cast<const uint8*>(data_ + ofs_);
28
29 // Iterate.
30 ofs_ += 1;
31
32 return true;
33 }
34
18 bool SpdyFrameReader::ReadUInt16(uint16* result) { 35 bool SpdyFrameReader::ReadUInt16(uint16* result) {
19 // Make sure that we have the whole uint16. 36 // Make sure that we have the whole uint16.
20 if (!CanRead(2)) { 37 if (!CanRead(2)) {
21 OnFailure(); 38 OnFailure();
22 return false; 39 return false;
23 } 40 }
24 41
25 // Read into result. 42 // Read into result.
26 *result = ntohs(*(reinterpret_cast<const uint16*>(data_ + ofs_))); 43 *result = ntohs(*(reinterpret_cast<const uint16*>(data_ + ofs_)));
27 44
(...skipping 12 matching lines...) Expand all
40 57
41 // Read into result. 58 // Read into result.
42 *result = ntohl(*(reinterpret_cast<const uint32*>(data_ + ofs_))); 59 *result = ntohl(*(reinterpret_cast<const uint32*>(data_ + ofs_)));
43 60
44 // Iterate. 61 // Iterate.
45 ofs_ += 4; 62 ofs_ += 4;
46 63
47 return true; 64 return true;
48 } 65 }
49 66
67 bool SpdyFrameReader::ReadUInt31(uint32* result) {
68 bool success = ReadUInt32(result);
69
70 // Zero out highest-order bit.
71 if (success) {
72 *result &= kStreamIdMask;
73 }
74
75 return success;
76 }
77
50 bool SpdyFrameReader::ReadStringPiece16(base::StringPiece* result) { 78 bool SpdyFrameReader::ReadStringPiece16(base::StringPiece* result) {
51 // Read resultant length. 79 // Read resultant length.
52 uint16 result_len; 80 uint16 result_len;
53 if (!ReadUInt16(&result_len)) { 81 if (!ReadUInt16(&result_len)) {
54 // OnFailure() already called. 82 // OnFailure() already called.
55 return false; 83 return false;
56 } 84 }
57 85
58 // Make sure that we have the whole string. 86 // Make sure that we have the whole string.
59 if (!CanRead(result_len)) { 87 if (!CanRead(result_len)) {
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
102 130
103 // Read into result. 131 // Read into result.
104 memcpy(result, data_ + ofs_, size); 132 memcpy(result, data_ + ofs_, size);
105 133
106 // Iterate. 134 // Iterate.
107 ofs_ += size; 135 ofs_ += size;
108 136
109 return true; 137 return true;
110 } 138 }
111 139
140 bool SpdyFrameReader::Seek(size_t size) {
141 if (!CanRead(size)) {
142 OnFailure();
143 return false;
144 }
145
146 // Iterate.
147 ofs_ += size;
148
149 return true;
150 }
151
112 bool SpdyFrameReader::IsDoneReading() const { 152 bool SpdyFrameReader::IsDoneReading() const {
113 return len_ == ofs_; 153 return len_ == ofs_;
114 } 154 }
115 155
116 bool SpdyFrameReader::CanRead(size_t bytes) const { 156 bool SpdyFrameReader::CanRead(size_t bytes) const {
117 return bytes <= (len_ - ofs_); 157 return bytes <= (len_ - ofs_);
118 } 158 }
119 159
120 void SpdyFrameReader::OnFailure() { 160 void SpdyFrameReader::OnFailure() {
121 // Set our iterator to the end of the buffer so that further reads fail 161 // Set our iterator to the end of the buffer so that further reads fail
122 // immediately. 162 // immediately.
123 ofs_ = len_; 163 ofs_ = len_;
124 } 164 }
125 165
126 } // namespace net 166 } // namespace net
OLDNEW
« no previous file with comments | « net/spdy/spdy_frame_reader.h ('k') | net/spdy/spdy_framer.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698