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

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

Issue 2544813002: Remove enum SpdyMajorVersion. (Closed)
Patch Set: Merge comment changes from 140661724. Created 4 years 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
« no previous file with comments | « net/spdy/spdy_protocol.h ('k') | net/spdy/spdy_session.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 #include "net/spdy/spdy_protocol.h" 5 #include "net/spdy/spdy_protocol.h"
6 6
7 #include "base/memory/ptr_util.h" 7 #include "base/memory/ptr_util.h"
8 #include "net/spdy/spdy_bug_tracker.h" 8 #include "net/spdy/spdy_bug_tracker.h"
9 9
10 namespace net { 10 namespace net {
(...skipping 27 matching lines...) Expand all
38 const float kSteps = 255.9f / 7.f; 38 const float kSteps = 255.9f / 7.f;
39 return static_cast<int>(kSteps * (7.f - priority)) + 1; 39 return static_cast<int>(kSteps * (7.f - priority)) + 1;
40 } 40 }
41 41
42 SpdyPriority Http2WeightToSpdy3Priority(int weight) { 42 SpdyPriority Http2WeightToSpdy3Priority(int weight) {
43 weight = ClampHttp2Weight(weight); 43 weight = ClampHttp2Weight(weight);
44 const float kSteps = 255.9f / 7.f; 44 const float kSteps = 255.9f / 7.f;
45 return static_cast<SpdyPriority>(7.f - (weight - 1) / kSteps); 45 return static_cast<SpdyPriority>(7.f - (weight - 1) / kSteps);
46 } 46 }
47 47
48 bool SpdyConstants::IsValidFrameType(SpdyMajorVersion version, 48 bool SpdyConstants::IsValidFrameType(int frame_type_field) {
49 int frame_type_field) {
50 // Check for recognized extensions. 49 // Check for recognized extensions.
51 if (frame_type_field == SerializeFrameType(version, ALTSVC) || 50 if (frame_type_field == SerializeFrameType(ALTSVC) ||
52 frame_type_field == SerializeFrameType(version, BLOCKED)) { 51 frame_type_field == SerializeFrameType(BLOCKED)) {
53 return true; 52 return true;
54 } 53 }
55 54
56 // DATA is the first valid frame. 55 // DATA is the first valid frame.
57 if (frame_type_field < SerializeFrameType(version, DATA)) { 56 if (frame_type_field < SerializeFrameType(DATA)) {
58 return false; 57 return false;
59 } 58 }
60 59
61 // CONTINUATION is the last valid frame. 60 // CONTINUATION is the last valid frame.
62 if (frame_type_field > SerializeFrameType(version, CONTINUATION)) { 61 if (frame_type_field > SerializeFrameType(CONTINUATION)) {
63 return false; 62 return false;
64 } 63 }
65 64
66 return true; 65 return true;
67 } 66 }
68 67
69 SpdyFrameType SpdyConstants::ParseFrameType(SpdyMajorVersion /*version*/, 68 SpdyFrameType SpdyConstants::ParseFrameType(int frame_type_field) {
70 int frame_type_field) {
71 switch (frame_type_field) { 69 switch (frame_type_field) {
72 case 0: 70 case 0:
73 return DATA; 71 return DATA;
74 case 1: 72 case 1:
75 return HEADERS; 73 return HEADERS;
76 case 2: 74 case 2:
77 return PRIORITY; 75 return PRIORITY;
78 case 3: 76 case 3:
79 return RST_STREAM; 77 return RST_STREAM;
80 case 4: 78 case 4:
(...skipping 10 matching lines...) Expand all
91 return CONTINUATION; 89 return CONTINUATION;
92 case 10: 90 case 10:
93 return ALTSVC; 91 return ALTSVC;
94 case 11: 92 case 11:
95 return BLOCKED; 93 return BLOCKED;
96 } 94 }
97 SPDY_BUG << "Unhandled frame type " << frame_type_field; 95 SPDY_BUG << "Unhandled frame type " << frame_type_field;
98 return DATA; 96 return DATA;
99 } 97 }
100 98
101 int SpdyConstants::SerializeFrameType(SpdyMajorVersion /*version*/, 99 int SpdyConstants::SerializeFrameType(SpdyFrameType frame_type) {
102 SpdyFrameType frame_type) {
103 switch (frame_type) { 100 switch (frame_type) {
104 case DATA: 101 case DATA:
105 return 0; 102 return kDataFrameType;
106 case HEADERS: 103 case HEADERS:
107 return 1; 104 return 1;
108 case PRIORITY: 105 case PRIORITY:
109 return 2; 106 return 2;
110 case RST_STREAM: 107 case RST_STREAM:
111 return 3; 108 return 3;
112 case SETTINGS: 109 case SETTINGS:
113 return 4; 110 return 4;
114 case PUSH_PROMISE: 111 case PUSH_PROMISE:
115 return 5; 112 return 5;
116 case PING: 113 case PING:
117 return 6; 114 return 6;
118 case GOAWAY: 115 case GOAWAY:
119 return 7; 116 return 7;
120 case WINDOW_UPDATE: 117 case WINDOW_UPDATE:
121 return 8; 118 return 8;
122 case CONTINUATION: 119 case CONTINUATION:
123 return 9; 120 return 9;
124 // ALTSVC and BLOCKED are extensions. 121 // ALTSVC and BLOCKED are extensions.
125 case ALTSVC: 122 case ALTSVC:
126 return 10; 123 return 10;
127 case BLOCKED: 124 case BLOCKED:
128 return 11; 125 return 11;
129 default: 126 default:
130 SPDY_BUG << "Serializing unhandled frame type " << frame_type; 127 SPDY_BUG << "Serializing unhandled frame type " << frame_type;
131 return -1; 128 return -1;
132 } 129 }
133 } 130 }
134 131
135 int SpdyConstants::DataFrameType(SpdyMajorVersion version) {
136 return SerializeFrameType(version, DATA);
137 }
138
139 bool SpdyConstants::IsValidHTTP2FrameStreamId( 132 bool SpdyConstants::IsValidHTTP2FrameStreamId(
140 SpdyStreamId current_frame_stream_id, 133 SpdyStreamId current_frame_stream_id,
141 SpdyFrameType frame_type_field) { 134 SpdyFrameType frame_type_field) {
142 if (current_frame_stream_id == 0) { 135 if (current_frame_stream_id == 0) {
143 switch (frame_type_field) { 136 switch (frame_type_field) {
144 case DATA: 137 case DATA:
145 case HEADERS: 138 case HEADERS:
146 case PRIORITY: 139 case PRIORITY:
147 case RST_STREAM: 140 case RST_STREAM:
148 case CONTINUATION: 141 case CONTINUATION:
149 case PUSH_PROMISE: 142 case PUSH_PROMISE:
150 // These frame types must specify a stream 143 // These frame types must specify a stream
151 return false; 144 return false;
152 default: 145 default:
153 return true; 146 return true;
154 } 147 }
155 } else { 148 } else {
156 switch (frame_type_field) { 149 switch (frame_type_field) {
157 case GOAWAY: 150 case GOAWAY:
158 case SETTINGS: 151 case SETTINGS:
159 case PING: 152 case PING:
160 // These frame types must not specify a stream 153 // These frame types must not specify a stream
161 return false; 154 return false;
162 default: 155 default:
163 return true; 156 return true;
164 } 157 }
165 } 158 }
166 } 159 }
167 160
168 bool SpdyConstants::IsValidSettingId(SpdyMajorVersion version, 161 bool SpdyConstants::IsValidSettingId(int setting_id_field) {
169 int setting_id_field) {
170 // HEADER_TABLE_SIZE is the first valid setting id. 162 // HEADER_TABLE_SIZE is the first valid setting id.
171 if (setting_id_field < 163 if (setting_id_field < SerializeSettingId(SETTINGS_HEADER_TABLE_SIZE)) {
172 SerializeSettingId(version, SETTINGS_HEADER_TABLE_SIZE)) {
173 return false; 164 return false;
174 } 165 }
175 166
176 // MAX_HEADER_LIST_SIZE is the last valid setting id. 167 // MAX_HEADER_LIST_SIZE is the last valid setting id.
177 if (setting_id_field > 168 if (setting_id_field > SerializeSettingId(SETTINGS_MAX_HEADER_LIST_SIZE)) {
178 SerializeSettingId(version, SETTINGS_MAX_HEADER_LIST_SIZE)) {
179 return false; 169 return false;
180 } 170 }
181 171
182 return true; 172 return true;
183 } 173 }
184 174
185 SpdySettingsIds SpdyConstants::ParseSettingId(SpdyMajorVersion /*version*/, 175 SpdySettingsIds SpdyConstants::ParseSettingId(int setting_id_field) {
186 int setting_id_field) {
187 switch (setting_id_field) { 176 switch (setting_id_field) {
188 case 1: 177 case 1:
189 return SETTINGS_HEADER_TABLE_SIZE; 178 return SETTINGS_HEADER_TABLE_SIZE;
190 case 2: 179 case 2:
191 return SETTINGS_ENABLE_PUSH; 180 return SETTINGS_ENABLE_PUSH;
192 case 3: 181 case 3:
193 return SETTINGS_MAX_CONCURRENT_STREAMS; 182 return SETTINGS_MAX_CONCURRENT_STREAMS;
194 case 4: 183 case 4:
195 return SETTINGS_INITIAL_WINDOW_SIZE; 184 return SETTINGS_INITIAL_WINDOW_SIZE;
196 case 5: 185 case 5:
197 return SETTINGS_MAX_FRAME_SIZE; 186 return SETTINGS_MAX_FRAME_SIZE;
198 case 6: 187 case 6:
199 return SETTINGS_MAX_HEADER_LIST_SIZE; 188 return SETTINGS_MAX_HEADER_LIST_SIZE;
200 } 189 }
201 SPDY_BUG << "Unhandled setting ID " << setting_id_field; 190 SPDY_BUG << "Unhandled setting ID " << setting_id_field;
202 return SETTINGS_UPLOAD_BANDWIDTH; 191 return SETTINGS_UPLOAD_BANDWIDTH;
203 } 192 }
204 193
205 int SpdyConstants::SerializeSettingId(SpdyMajorVersion /*version*/, 194 int SpdyConstants::SerializeSettingId(SpdySettingsIds id) {
206 SpdySettingsIds id) {
207 switch (id) { 195 switch (id) {
208 case SETTINGS_HEADER_TABLE_SIZE: 196 case SETTINGS_HEADER_TABLE_SIZE:
209 return 1; 197 return 1;
210 case SETTINGS_ENABLE_PUSH: 198 case SETTINGS_ENABLE_PUSH:
211 return 2; 199 return 2;
212 case SETTINGS_MAX_CONCURRENT_STREAMS: 200 case SETTINGS_MAX_CONCURRENT_STREAMS:
213 return 3; 201 return 3;
214 case SETTINGS_INITIAL_WINDOW_SIZE: 202 case SETTINGS_INITIAL_WINDOW_SIZE:
215 return 4; 203 return 4;
216 case SETTINGS_MAX_FRAME_SIZE: 204 case SETTINGS_MAX_FRAME_SIZE:
217 return 5; 205 return 5;
218 case SETTINGS_MAX_HEADER_LIST_SIZE: 206 case SETTINGS_MAX_HEADER_LIST_SIZE:
219 return 6; 207 return 6;
220 default: 208 default:
221 SPDY_BUG << "Serializing unhandled setting id " << id; 209 SPDY_BUG << "Serializing unhandled setting id " << id;
222 return -1; 210 return -1;
223 } 211 }
224 } 212 }
225 213
226 bool SpdyConstants::IsValidRstStreamStatus(SpdyMajorVersion version, 214 bool SpdyConstants::IsValidRstStreamStatus(int rst_stream_status_field) {
227 int rst_stream_status_field) {
228 // NO_ERROR is the first valid status code. 215 // NO_ERROR is the first valid status code.
229 if (rst_stream_status_field < 216 if (rst_stream_status_field < SerializeRstStreamStatus(RST_STREAM_NO_ERROR)) {
230 SerializeRstStreamStatus(version, RST_STREAM_NO_ERROR)) {
231 return false; 217 return false;
232 } 218 }
233 219
234 // TODO(hkhalil): Omit COMPRESSION_ERROR and SETTINGS_TIMEOUT 220 // TODO(hkhalil): Omit COMPRESSION_ERROR and SETTINGS_TIMEOUT
235 /* 221 /*
236 // This works because GOAWAY and RST_STREAM share a namespace. 222 // This works because GOAWAY and RST_STREAM share a namespace.
237 if (rst_stream_status_field == 223 if (rst_stream_status_field ==
238 SerializeGoAwayStatus(version, GOAWAY_COMPRESSION_ERROR) || 224 SerializeGoAwayStatus(version, GOAWAY_COMPRESSION_ERROR) ||
239 rst_stream_status_field == 225 rst_stream_status_field ==
240 SerializeGoAwayStatus(version, GOAWAY_SETTINGS_TIMEOUT)) { 226 SerializeGoAwayStatus(version, GOAWAY_SETTINGS_TIMEOUT)) {
241 return false; 227 return false;
242 } 228 }
243 */ 229 */
244 230
245 // HTTP_1_1_REQUIRED is the last valid status code. 231 // HTTP_1_1_REQUIRED is the last valid status code.
246 if (rst_stream_status_field > 232 if (rst_stream_status_field >
247 SerializeRstStreamStatus(version, RST_STREAM_HTTP_1_1_REQUIRED)) { 233 SerializeRstStreamStatus(RST_STREAM_HTTP_1_1_REQUIRED)) {
248 return false; 234 return false;
249 } 235 }
250 236
251 return true; 237 return true;
252 } 238 }
253 239
254 SpdyRstStreamStatus SpdyConstants::ParseRstStreamStatus( 240 SpdyRstStreamStatus SpdyConstants::ParseRstStreamStatus(
255 SpdyMajorVersion /*version*/,
256 int rst_stream_status_field) { 241 int rst_stream_status_field) {
257 switch (rst_stream_status_field) { 242 switch (rst_stream_status_field) {
258 case 0: 243 case 0:
259 return RST_STREAM_NO_ERROR; 244 return RST_STREAM_NO_ERROR;
260 case 1: 245 case 1:
261 return RST_STREAM_PROTOCOL_ERROR; 246 return RST_STREAM_PROTOCOL_ERROR;
262 case 2: 247 case 2:
263 return RST_STREAM_INTERNAL_ERROR; 248 return RST_STREAM_INTERNAL_ERROR;
264 case 3: 249 case 3:
265 return RST_STREAM_FLOW_CONTROL_ERROR; 250 return RST_STREAM_FLOW_CONTROL_ERROR;
(...skipping 13 matching lines...) Expand all
279 return RST_STREAM_INADEQUATE_SECURITY; 264 return RST_STREAM_INADEQUATE_SECURITY;
280 case 13: 265 case 13:
281 return RST_STREAM_HTTP_1_1_REQUIRED; 266 return RST_STREAM_HTTP_1_1_REQUIRED;
282 } 267 }
283 268
284 SPDY_BUG << "Invalid RST_STREAM status " << rst_stream_status_field; 269 SPDY_BUG << "Invalid RST_STREAM status " << rst_stream_status_field;
285 return RST_STREAM_PROTOCOL_ERROR; 270 return RST_STREAM_PROTOCOL_ERROR;
286 } 271 }
287 272
288 int SpdyConstants::SerializeRstStreamStatus( 273 int SpdyConstants::SerializeRstStreamStatus(
289 SpdyMajorVersion /*version*/,
290 SpdyRstStreamStatus rst_stream_status) { 274 SpdyRstStreamStatus rst_stream_status) {
291 switch (rst_stream_status) { 275 switch (rst_stream_status) {
292 case RST_STREAM_NO_ERROR: 276 case RST_STREAM_NO_ERROR:
293 return 0; 277 return 0;
294 case RST_STREAM_PROTOCOL_ERROR: 278 case RST_STREAM_PROTOCOL_ERROR:
295 return 1; 279 return 1;
296 case RST_STREAM_INTERNAL_ERROR: 280 case RST_STREAM_INTERNAL_ERROR:
297 return 2; 281 return 2;
298 case RST_STREAM_FLOW_CONTROL_ERROR: 282 case RST_STREAM_FLOW_CONTROL_ERROR:
299 return 3; 283 return 3;
(...skipping 12 matching lines...) Expand all
312 case RST_STREAM_INADEQUATE_SECURITY: 296 case RST_STREAM_INADEQUATE_SECURITY:
313 return 12; 297 return 12;
314 case RST_STREAM_HTTP_1_1_REQUIRED: 298 case RST_STREAM_HTTP_1_1_REQUIRED:
315 return 13; 299 return 13;
316 default: 300 default:
317 SPDY_BUG << "Unhandled RST_STREAM status " << rst_stream_status; 301 SPDY_BUG << "Unhandled RST_STREAM status " << rst_stream_status;
318 return -1; 302 return -1;
319 } 303 }
320 } 304 }
321 305
322 bool SpdyConstants::IsValidGoAwayStatus(SpdyMajorVersion version, 306 bool SpdyConstants::IsValidGoAwayStatus(int goaway_status_field) {
323 int goaway_status_field) {
324 // GOAWAY_NO_ERROR is the first valid status. 307 // GOAWAY_NO_ERROR is the first valid status.
325 if (goaway_status_field < SerializeGoAwayStatus(version, GOAWAY_NO_ERROR)) { 308 if (goaway_status_field < SerializeGoAwayStatus(GOAWAY_NO_ERROR)) {
326 return false; 309 return false;
327 } 310 }
328 311
329 // GOAWAY_HTTP_1_1_REQUIRED is the last valid status. 312 // GOAWAY_HTTP_1_1_REQUIRED is the last valid status.
330 if (goaway_status_field > 313 if (goaway_status_field > SerializeGoAwayStatus(GOAWAY_HTTP_1_1_REQUIRED)) {
331 SerializeGoAwayStatus(version, GOAWAY_HTTP_1_1_REQUIRED)) {
332 return false; 314 return false;
333 } 315 }
334 316
335 return true; 317 return true;
336 } 318 }
337 319
338 SpdyGoAwayStatus SpdyConstants::ParseGoAwayStatus(SpdyMajorVersion /*version*/, 320 SpdyGoAwayStatus SpdyConstants::ParseGoAwayStatus(int goaway_status_field) {
339 int goaway_status_field) {
340 switch (goaway_status_field) { 321 switch (goaway_status_field) {
341 case 0: 322 case 0:
342 return GOAWAY_NO_ERROR; 323 return GOAWAY_NO_ERROR;
343 case 1: 324 case 1:
344 return GOAWAY_PROTOCOL_ERROR; 325 return GOAWAY_PROTOCOL_ERROR;
345 case 2: 326 case 2:
346 return GOAWAY_INTERNAL_ERROR; 327 return GOAWAY_INTERNAL_ERROR;
347 case 3: 328 case 3:
348 return GOAWAY_FLOW_CONTROL_ERROR; 329 return GOAWAY_FLOW_CONTROL_ERROR;
349 case 4: 330 case 4:
(...skipping 15 matching lines...) Expand all
365 case 12: 346 case 12:
366 return GOAWAY_INADEQUATE_SECURITY; 347 return GOAWAY_INADEQUATE_SECURITY;
367 case 13: 348 case 13:
368 return GOAWAY_HTTP_1_1_REQUIRED; 349 return GOAWAY_HTTP_1_1_REQUIRED;
369 } 350 }
370 351
371 SPDY_BUG << "Unhandled GOAWAY status " << goaway_status_field; 352 SPDY_BUG << "Unhandled GOAWAY status " << goaway_status_field;
372 return GOAWAY_PROTOCOL_ERROR; 353 return GOAWAY_PROTOCOL_ERROR;
373 } 354 }
374 355
375 int SpdyConstants::SerializeGoAwayStatus(SpdyMajorVersion /*version*/, 356 int SpdyConstants::SerializeGoAwayStatus(SpdyGoAwayStatus status) {
376 SpdyGoAwayStatus status) {
377 switch (status) { 357 switch (status) {
378 case GOAWAY_NO_ERROR: 358 case GOAWAY_NO_ERROR:
379 return 0; 359 return 0;
380 case GOAWAY_PROTOCOL_ERROR: 360 case GOAWAY_PROTOCOL_ERROR:
381 return 1; 361 return 1;
382 case GOAWAY_INTERNAL_ERROR: 362 case GOAWAY_INTERNAL_ERROR:
383 return 2; 363 return 2;
384 case GOAWAY_FLOW_CONTROL_ERROR: 364 case GOAWAY_FLOW_CONTROL_ERROR:
385 return 3; 365 return 3;
386 case GOAWAY_SETTINGS_TIMEOUT: 366 case GOAWAY_SETTINGS_TIMEOUT:
(...skipping 15 matching lines...) Expand all
402 case GOAWAY_INADEQUATE_SECURITY: 382 case GOAWAY_INADEQUATE_SECURITY:
403 return 12; 383 return 12;
404 case GOAWAY_HTTP_1_1_REQUIRED: 384 case GOAWAY_HTTP_1_1_REQUIRED:
405 return 13; 385 return 13;
406 default: 386 default:
407 SPDY_BUG << "Serializing unhandled GOAWAY status " << status; 387 SPDY_BUG << "Serializing unhandled GOAWAY status " << status;
408 return -1; 388 return -1;
409 } 389 }
410 } 390 }
411 391
412 size_t SpdyConstants::GetFrameHeaderSize(SpdyMajorVersion /*version*/) { 392 const int SpdyConstants::kDataFrameType = 0;
413 return 9;
414 }
415 393
416 size_t SpdyConstants::GetDataFrameMinimumSize(SpdyMajorVersion version) { 394 const size_t SpdyConstants::kFrameHeaderSize = 9;
417 return GetFrameHeaderSize(version);
418 }
419 395
420 size_t SpdyConstants::GetMaxFrameSizeLimit(SpdyMajorVersion version) { 396 const size_t SpdyConstants::kDataFrameMinimumSize = kFrameHeaderSize;
421 return kSpdyMaxFrameSizeLimit + GetFrameHeaderSize(version);
422 }
423 397
424 size_t SpdyConstants::GetSizeOfSizeField() { 398 const size_t SpdyConstants::kMaxFrameSizeLimit =
425 return sizeof(uint32_t); 399 kSpdyMaxFrameSizeLimit + kFrameHeaderSize;
426 }
427 400
428 size_t SpdyConstants::GetPerHeaderOverhead(SpdyMajorVersion version) { 401 const size_t SpdyConstants::kSizeOfSizeField = sizeof(uint32_t);
429 return (version == net::HTTP2) ? 32 : 0;
430 }
431 402
432 size_t SpdyConstants::GetSettingSize(SpdyMajorVersion version) { 403 const size_t SpdyConstants::kPerHeaderOverhead = 32;
433 return 6;
434 }
435 404
436 int32_t SpdyConstants::GetInitialStreamWindowSize(SpdyMajorVersion version) { 405 const int32_t SpdyConstants::kInitialStreamWindowSize = 64 * 1024 - 1;
437 return 64 * 1024 - 1;
438 }
439 406
440 int32_t SpdyConstants::GetInitialSessionWindowSize(SpdyMajorVersion version) { 407 const int32_t SpdyConstants::kInitialSessionWindowSize = 64 * 1024 - 1;
441 return 64 * 1024 - 1;
442 }
443 408
444 std::string SpdyConstants::GetVersionString(SpdyMajorVersion version) { 409 const char SpdyConstants::kHttp2Npn[] = "h2";
445 switch (version) {
446 case HTTP2:
447 return "h2";
448 default:
449 SPDY_BUG << "Unsupported SPDY major version: " << version;
450 return "h2";
451 }
452 }
453 410
454 SpdyFrameWithHeaderBlockIR::SpdyFrameWithHeaderBlockIR( 411 SpdyFrameWithHeaderBlockIR::SpdyFrameWithHeaderBlockIR(
455 SpdyStreamId stream_id, 412 SpdyStreamId stream_id,
456 SpdyHeaderBlock header_block) 413 SpdyHeaderBlock header_block)
457 : SpdyFrameWithFinIR(stream_id), header_block_(std::move(header_block)) {} 414 : SpdyFrameWithFinIR(stream_id), header_block_(std::move(header_block)) {}
458 415
459 SpdyFrameWithHeaderBlockIR::~SpdyFrameWithHeaderBlockIR() {} 416 SpdyFrameWithHeaderBlockIR::~SpdyFrameWithHeaderBlockIR() {}
460 417
461 SpdyDataIR::SpdyDataIR(SpdyStreamId stream_id, base::StringPiece data) 418 SpdyDataIR::SpdyDataIR(SpdyStreamId stream_id, base::StringPiece data)
462 : SpdyFrameWithFinIR(stream_id), 419 : SpdyFrameWithFinIR(stream_id),
(...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after
583 540
584 void SpdyAltSvcIR::Visit(SpdyFrameVisitor* visitor) const { 541 void SpdyAltSvcIR::Visit(SpdyFrameVisitor* visitor) const {
585 return visitor->VisitAltSvc(*this); 542 return visitor->VisitAltSvc(*this);
586 } 543 }
587 544
588 void SpdyPriorityIR::Visit(SpdyFrameVisitor* visitor) const { 545 void SpdyPriorityIR::Visit(SpdyFrameVisitor* visitor) const {
589 return visitor->VisitPriority(*this); 546 return visitor->VisitPriority(*this);
590 } 547 }
591 548
592 } // namespace net 549 } // namespace net
OLDNEW
« no previous file with comments | « net/spdy/spdy_protocol.h ('k') | net/spdy/spdy_session.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698