| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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/quic/quic_headers_stream.h" | 5 #include "net/quic/quic_headers_stream.h" |
| 6 | 6 |
| 7 #include "base/macros.h" | 7 #include "base/macros.h" |
| 8 #include "base/metrics/histogram_macros.h" | 8 #include "base/metrics/histogram_macros.h" |
| 9 #include "base/strings/stringprintf.h" | 9 #include "base/strings/stringprintf.h" |
| 10 #include "net/quic/quic_bug_tracker.h" | 10 #include "net/quic/quic_bug_tracker.h" |
| (...skipping 205 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 216 bool fin, | 216 bool fin, |
| 217 SpdyPriority priority, | 217 SpdyPriority priority, |
| 218 QuicAckListenerInterface* ack_listener) { | 218 QuicAckListenerInterface* ack_listener) { |
| 219 SpdyHeadersIR headers_frame(stream_id); | 219 SpdyHeadersIR headers_frame(stream_id); |
| 220 headers_frame.set_header_block(headers); | 220 headers_frame.set_header_block(headers); |
| 221 headers_frame.set_fin(fin); | 221 headers_frame.set_fin(fin); |
| 222 if (session()->perspective() == Perspective::IS_CLIENT) { | 222 if (session()->perspective() == Perspective::IS_CLIENT) { |
| 223 headers_frame.set_has_priority(true); | 223 headers_frame.set_has_priority(true); |
| 224 headers_frame.set_priority(priority); | 224 headers_frame.set_priority(priority); |
| 225 } | 225 } |
| 226 scoped_ptr<SpdySerializedFrame> frame( | 226 SpdySerializedFrame frame(spdy_framer_.SerializeFrame(headers_frame)); |
| 227 spdy_framer_.SerializeFrame(headers_frame)); | 227 WriteOrBufferData(StringPiece(frame.data(), frame.size()), false, |
| 228 WriteOrBufferData(StringPiece(frame->data(), frame->size()), false, | |
| 229 ack_listener); | 228 ack_listener); |
| 230 return frame->size(); | 229 return frame.size(); |
| 231 } | 230 } |
| 232 | 231 |
| 233 size_t QuicHeadersStream::WritePushPromise( | 232 size_t QuicHeadersStream::WritePushPromise( |
| 234 QuicStreamId original_stream_id, | 233 QuicStreamId original_stream_id, |
| 235 QuicStreamId promised_stream_id, | 234 QuicStreamId promised_stream_id, |
| 236 const SpdyHeaderBlock& headers, | 235 const SpdyHeaderBlock& headers, |
| 237 QuicAckListenerInterface* ack_listener) { | 236 QuicAckListenerInterface* ack_listener) { |
| 238 if (session()->perspective() == Perspective::IS_CLIENT) { | 237 if (session()->perspective() == Perspective::IS_CLIENT) { |
| 239 QUIC_BUG << "Client shouldn't send PUSH_PROMISE"; | 238 QUIC_BUG << "Client shouldn't send PUSH_PROMISE"; |
| 240 return 0; | 239 return 0; |
| 241 } | 240 } |
| 242 | 241 |
| 243 SpdyPushPromiseIR push_promise(original_stream_id, promised_stream_id); | 242 SpdyPushPromiseIR push_promise(original_stream_id, promised_stream_id); |
| 244 push_promise.set_header_block(headers); | 243 push_promise.set_header_block(headers); |
| 245 // PUSH_PROMISE must not be the last frame sent out, at least followed by | 244 // PUSH_PROMISE must not be the last frame sent out, at least followed by |
| 246 // response headers. | 245 // response headers. |
| 247 push_promise.set_fin(false); | 246 push_promise.set_fin(false); |
| 248 | 247 |
| 249 scoped_ptr<SpdySerializedFrame> frame( | 248 SpdySerializedFrame frame(spdy_framer_.SerializeFrame(push_promise)); |
| 250 spdy_framer_.SerializeFrame(push_promise)); | 249 WriteOrBufferData(StringPiece(frame.data(), frame.size()), false, |
| 251 WriteOrBufferData(StringPiece(frame->data(), frame->size()), false, | |
| 252 ack_listener); | 250 ack_listener); |
| 253 return frame->size(); | 251 return frame.size(); |
| 254 } | 252 } |
| 255 | 253 |
| 256 void QuicHeadersStream::OnDataAvailable() { | 254 void QuicHeadersStream::OnDataAvailable() { |
| 257 char buffer[1024]; | 255 char buffer[1024]; |
| 258 struct iovec iov; | 256 struct iovec iov; |
| 259 QuicTime timestamp(QuicTime::Zero()); | 257 QuicTime timestamp(QuicTime::Zero()); |
| 260 while (true) { | 258 while (true) { |
| 261 iov.iov_base = buffer; | 259 iov.iov_base = buffer; |
| 262 iov.iov_len = arraysize(buffer); | 260 iov.iov_len = arraysize(buffer); |
| 263 if (measure_headers_hol_blocking_time_) { | 261 if (measure_headers_hol_blocking_time_) { |
| (...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 360 | 358 |
| 361 void QuicHeadersStream::OnCompressedFrameSize(size_t frame_len) { | 359 void QuicHeadersStream::OnCompressedFrameSize(size_t frame_len) { |
| 362 frame_len_ += frame_len; | 360 frame_len_ += frame_len; |
| 363 } | 361 } |
| 364 | 362 |
| 365 bool QuicHeadersStream::IsConnected() { | 363 bool QuicHeadersStream::IsConnected() { |
| 366 return session()->connection()->connected(); | 364 return session()->connection()->connected(); |
| 367 } | 365 } |
| 368 | 366 |
| 369 } // namespace net | 367 } // namespace net |
| OLD | NEW |