| OLD | NEW |
| 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/buffered_spdy_framer.h" | 5 #include "net/spdy/buffered_spdy_framer.h" |
| 6 | 6 |
| 7 #include "base/logging.h" | 7 #include "base/logging.h" |
| 8 | 8 |
| 9 namespace net { | 9 namespace net { |
| 10 | 10 |
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 55 } | 55 } |
| 56 | 56 |
| 57 void BufferedSpdyFramer::OnError(SpdyFramer* spdy_framer) { | 57 void BufferedSpdyFramer::OnError(SpdyFramer* spdy_framer) { |
| 58 DCHECK(spdy_framer); | 58 DCHECK(spdy_framer); |
| 59 visitor_->OnError(spdy_framer->error_code()); | 59 visitor_->OnError(spdy_framer->error_code()); |
| 60 } | 60 } |
| 61 | 61 |
| 62 void BufferedSpdyFramer::OnSynStream(SpdyStreamId stream_id, | 62 void BufferedSpdyFramer::OnSynStream(SpdyStreamId stream_id, |
| 63 SpdyStreamId associated_stream_id, | 63 SpdyStreamId associated_stream_id, |
| 64 SpdyPriority priority, | 64 SpdyPriority priority, |
| 65 uint8 credential_slot, | |
| 66 bool fin, | 65 bool fin, |
| 67 bool unidirectional) { | 66 bool unidirectional) { |
| 68 frames_received_++; | 67 frames_received_++; |
| 69 DCHECK(!control_frame_fields_.get()); | 68 DCHECK(!control_frame_fields_.get()); |
| 70 control_frame_fields_.reset(new ControlFrameFields()); | 69 control_frame_fields_.reset(new ControlFrameFields()); |
| 71 control_frame_fields_->type = SYN_STREAM; | 70 control_frame_fields_->type = SYN_STREAM; |
| 72 control_frame_fields_->stream_id = stream_id; | 71 control_frame_fields_->stream_id = stream_id; |
| 73 control_frame_fields_->associated_stream_id = associated_stream_id; | 72 control_frame_fields_->associated_stream_id = associated_stream_id; |
| 74 control_frame_fields_->priority = priority; | 73 control_frame_fields_->priority = priority; |
| 75 control_frame_fields_->credential_slot = credential_slot; | |
| 76 control_frame_fields_->fin = fin; | 74 control_frame_fields_->fin = fin; |
| 77 control_frame_fields_->unidirectional = unidirectional; | 75 control_frame_fields_->unidirectional = unidirectional; |
| 78 | 76 |
| 79 InitHeaderStreaming(stream_id); | 77 InitHeaderStreaming(stream_id); |
| 80 } | 78 } |
| 81 | 79 |
| 82 void BufferedSpdyFramer::OnHeaders(SpdyStreamId stream_id, | 80 void BufferedSpdyFramer::OnHeaders(SpdyStreamId stream_id, |
| 83 bool fin) { | 81 bool fin) { |
| 84 frames_received_++; | 82 frames_received_++; |
| 85 DCHECK(!control_frame_fields_.get()); | 83 DCHECK(!control_frame_fields_.get()); |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 121 visitor_->OnStreamError( | 119 visitor_->OnStreamError( |
| 122 stream_id, "Could not parse Spdy Control Frame Header."); | 120 stream_id, "Could not parse Spdy Control Frame Header."); |
| 123 return false; | 121 return false; |
| 124 } | 122 } |
| 125 DCHECK(control_frame_fields_.get()); | 123 DCHECK(control_frame_fields_.get()); |
| 126 switch (control_frame_fields_->type) { | 124 switch (control_frame_fields_->type) { |
| 127 case SYN_STREAM: | 125 case SYN_STREAM: |
| 128 visitor_->OnSynStream(control_frame_fields_->stream_id, | 126 visitor_->OnSynStream(control_frame_fields_->stream_id, |
| 129 control_frame_fields_->associated_stream_id, | 127 control_frame_fields_->associated_stream_id, |
| 130 control_frame_fields_->priority, | 128 control_frame_fields_->priority, |
| 131 control_frame_fields_->credential_slot, | |
| 132 control_frame_fields_->fin, | 129 control_frame_fields_->fin, |
| 133 control_frame_fields_->unidirectional, | 130 control_frame_fields_->unidirectional, |
| 134 headers); | 131 headers); |
| 135 break; | 132 break; |
| 136 case SYN_REPLY: | 133 case SYN_REPLY: |
| 137 visitor_->OnSynReply(control_frame_fields_->stream_id, | 134 visitor_->OnSynReply(control_frame_fields_->stream_id, |
| 138 control_frame_fields_->fin, | 135 control_frame_fields_->fin, |
| 139 headers); | 136 headers); |
| 140 break; | 137 break; |
| 141 case HEADERS: | 138 case HEADERS: |
| (...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 239 bool BufferedSpdyFramer::HasError() { | 236 bool BufferedSpdyFramer::HasError() { |
| 240 return spdy_framer_.HasError(); | 237 return spdy_framer_.HasError(); |
| 241 } | 238 } |
| 242 | 239 |
| 243 // TODO(jgraettinger): Eliminate uses of this method (prefer | 240 // TODO(jgraettinger): Eliminate uses of this method (prefer |
| 244 // SpdySynStreamIR). | 241 // SpdySynStreamIR). |
| 245 SpdyFrame* BufferedSpdyFramer::CreateSynStream( | 242 SpdyFrame* BufferedSpdyFramer::CreateSynStream( |
| 246 SpdyStreamId stream_id, | 243 SpdyStreamId stream_id, |
| 247 SpdyStreamId associated_stream_id, | 244 SpdyStreamId associated_stream_id, |
| 248 SpdyPriority priority, | 245 SpdyPriority priority, |
| 249 uint8 credential_slot, | |
| 250 SpdyControlFlags flags, | 246 SpdyControlFlags flags, |
| 251 const SpdyHeaderBlock* headers) { | 247 const SpdyHeaderBlock* headers) { |
| 252 SpdySynStreamIR syn_stream(stream_id); | 248 SpdySynStreamIR syn_stream(stream_id); |
| 253 syn_stream.set_associated_to_stream_id(associated_stream_id); | 249 syn_stream.set_associated_to_stream_id(associated_stream_id); |
| 254 syn_stream.set_priority(priority); | 250 syn_stream.set_priority(priority); |
| 255 syn_stream.set_slot(credential_slot); | |
| 256 syn_stream.set_fin((flags & CONTROL_FLAG_FIN) != 0); | 251 syn_stream.set_fin((flags & CONTROL_FLAG_FIN) != 0); |
| 257 syn_stream.set_unidirectional((flags & CONTROL_FLAG_UNIDIRECTIONAL) != 0); | 252 syn_stream.set_unidirectional((flags & CONTROL_FLAG_UNIDIRECTIONAL) != 0); |
| 258 // TODO(hkhalil): Avoid copy here. | 253 // TODO(hkhalil): Avoid copy here. |
| 259 syn_stream.set_name_value_block(*headers); | 254 syn_stream.set_name_value_block(*headers); |
| 260 return spdy_framer_.SerializeSynStream(syn_stream); | 255 return spdy_framer_.SerializeSynStream(syn_stream); |
| 261 } | 256 } |
| 262 | 257 |
| 263 // TODO(jgraettinger): Eliminate uses of this method (prefer | 258 // TODO(jgraettinger): Eliminate uses of this method (prefer |
| 264 // SpdySynReplyIR). | 259 // SpdySynReplyIR). |
| 265 SpdyFrame* BufferedSpdyFramer::CreateSynReply( | 260 SpdyFrame* BufferedSpdyFramer::CreateSynReply( |
| (...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 350 | 345 |
| 351 void BufferedSpdyFramer::InitHeaderStreaming(SpdyStreamId stream_id) { | 346 void BufferedSpdyFramer::InitHeaderStreaming(SpdyStreamId stream_id) { |
| 352 memset(header_buffer_, 0, kHeaderBufferSize); | 347 memset(header_buffer_, 0, kHeaderBufferSize); |
| 353 header_buffer_used_ = 0; | 348 header_buffer_used_ = 0; |
| 354 header_buffer_valid_ = true; | 349 header_buffer_valid_ = true; |
| 355 header_stream_id_ = stream_id; | 350 header_stream_id_ = stream_id; |
| 356 DCHECK_NE(header_stream_id_, SpdyFramer::kInvalidStream); | 351 DCHECK_NE(header_stream_id_, SpdyFramer::kInvalidStream); |
| 357 } | 352 } |
| 358 | 353 |
| 359 } // namespace net | 354 } // namespace net |
| OLD | NEW |