OLD | NEW |
(Empty) | |
| 1 // Copyright (c) 2015 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. |
| 4 |
| 5 #include "net/quic/quic_spdy_session.h" |
| 6 |
| 7 #include "net/quic/quic_headers_stream.h" |
| 8 |
| 9 namespace net { |
| 10 |
| 11 QuicSpdySession::QuicSpdySession(QuicConnection* connection, |
| 12 const QuicConfig& config) |
| 13 : QuicSession(connection, config) { |
| 14 } |
| 15 |
| 16 QuicSpdySession::~QuicSpdySession() { |
| 17 } |
| 18 |
| 19 void QuicSpdySession::Initialize() { |
| 20 QuicSession::Initialize(); |
| 21 |
| 22 if (perspective() == Perspective::IS_SERVER) { |
| 23 set_largest_peer_created_stream_id(kHeadersStreamId); |
| 24 } else { |
| 25 QuicStreamId headers_stream_id = GetNextStreamId(); |
| 26 DCHECK_EQ(headers_stream_id, kHeadersStreamId); |
| 27 } |
| 28 |
| 29 headers_stream_.reset(new QuicHeadersStream(this)); |
| 30 DCHECK_EQ(kHeadersStreamId, headers_stream_->id()); |
| 31 static_streams()[kHeadersStreamId] = headers_stream_.get(); |
| 32 } |
| 33 |
| 34 void QuicSpdySession::OnStreamHeaders(QuicStreamId stream_id, |
| 35 StringPiece headers_data) { |
| 36 QuicDataStream* stream = GetSpdyDataStream(stream_id); |
| 37 if (!stream) { |
| 38 // It's quite possible to receive headers after a stream has been reset. |
| 39 return; |
| 40 } |
| 41 stream->OnStreamHeaders(headers_data); |
| 42 } |
| 43 |
| 44 void QuicSpdySession::OnStreamHeadersPriority(QuicStreamId stream_id, |
| 45 QuicPriority priority) { |
| 46 QuicDataStream* stream = GetSpdyDataStream(stream_id); |
| 47 if (!stream) { |
| 48 // It's quite possible to receive headers after a stream has been reset. |
| 49 return; |
| 50 } |
| 51 stream->OnStreamHeadersPriority(priority); |
| 52 } |
| 53 |
| 54 void QuicSpdySession::OnStreamHeadersComplete(QuicStreamId stream_id, |
| 55 bool fin, |
| 56 size_t frame_len) { |
| 57 QuicDataStream* stream = GetSpdyDataStream(stream_id); |
| 58 if (!stream) { |
| 59 // It's quite possible to receive headers after a stream has been reset. |
| 60 return; |
| 61 } |
| 62 stream->OnStreamHeadersComplete(fin, frame_len); |
| 63 } |
| 64 |
| 65 size_t QuicSpdySession::WriteHeaders( |
| 66 QuicStreamId id, |
| 67 const SpdyHeaderBlock& headers, |
| 68 bool fin, |
| 69 QuicPriority priority, |
| 70 QuicAckNotifier::DelegateInterface* ack_notifier_delegate) { |
| 71 return headers_stream_->WriteHeaders(id, headers, fin, priority, |
| 72 ack_notifier_delegate); |
| 73 } |
| 74 |
| 75 QuicDataStream* QuicSpdySession::GetSpdyDataStream( |
| 76 const QuicStreamId stream_id) { |
| 77 return static_cast<QuicDataStream*>(GetDynamicStream(stream_id)); |
| 78 } |
| 79 |
| 80 } // namespace net |
OLD | NEW |