| Index: net/quic/quic_spdy_session.cc
|
| diff --git a/net/quic/quic_spdy_session.cc b/net/quic/quic_spdy_session.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..0a8dda6929e139c0c6542f580b91c6d254095d39
|
| --- /dev/null
|
| +++ b/net/quic/quic_spdy_session.cc
|
| @@ -0,0 +1,80 @@
|
| +// Copyright (c) 2015 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +#include "net/quic/quic_spdy_session.h"
|
| +
|
| +#include "net/quic/quic_headers_stream.h"
|
| +
|
| +namespace net {
|
| +
|
| +QuicSpdySession::QuicSpdySession(QuicConnection* connection,
|
| + const QuicConfig& config)
|
| + : QuicSession(connection, config) {
|
| +}
|
| +
|
| +QuicSpdySession::~QuicSpdySession() {
|
| +}
|
| +
|
| +void QuicSpdySession::Initialize() {
|
| + QuicSession::Initialize();
|
| +
|
| + if (perspective() == Perspective::IS_SERVER) {
|
| + set_largest_peer_created_stream_id(kHeadersStreamId);
|
| + } else {
|
| + QuicStreamId headers_stream_id = GetNextStreamId();
|
| + DCHECK_EQ(headers_stream_id, kHeadersStreamId);
|
| + }
|
| +
|
| + headers_stream_.reset(new QuicHeadersStream(this));
|
| + DCHECK_EQ(kHeadersStreamId, headers_stream_->id());
|
| + static_streams()[kHeadersStreamId] = headers_stream_.get();
|
| +}
|
| +
|
| +void QuicSpdySession::OnStreamHeaders(QuicStreamId stream_id,
|
| + StringPiece headers_data) {
|
| + QuicDataStream* stream = GetSpdyDataStream(stream_id);
|
| + if (!stream) {
|
| + // It's quite possible to receive headers after a stream has been reset.
|
| + return;
|
| + }
|
| + stream->OnStreamHeaders(headers_data);
|
| +}
|
| +
|
| +void QuicSpdySession::OnStreamHeadersPriority(QuicStreamId stream_id,
|
| + QuicPriority priority) {
|
| + QuicDataStream* stream = GetSpdyDataStream(stream_id);
|
| + if (!stream) {
|
| + // It's quite possible to receive headers after a stream has been reset.
|
| + return;
|
| + }
|
| + stream->OnStreamHeadersPriority(priority);
|
| +}
|
| +
|
| +void QuicSpdySession::OnStreamHeadersComplete(QuicStreamId stream_id,
|
| + bool fin,
|
| + size_t frame_len) {
|
| + QuicDataStream* stream = GetSpdyDataStream(stream_id);
|
| + if (!stream) {
|
| + // It's quite possible to receive headers after a stream has been reset.
|
| + return;
|
| + }
|
| + stream->OnStreamHeadersComplete(fin, frame_len);
|
| +}
|
| +
|
| +size_t QuicSpdySession::WriteHeaders(
|
| + QuicStreamId id,
|
| + const SpdyHeaderBlock& headers,
|
| + bool fin,
|
| + QuicPriority priority,
|
| + QuicAckNotifier::DelegateInterface* ack_notifier_delegate) {
|
| + return headers_stream_->WriteHeaders(id, headers, fin, priority,
|
| + ack_notifier_delegate);
|
| +}
|
| +
|
| +QuicDataStream* QuicSpdySession::GetSpdyDataStream(
|
| + const QuicStreamId stream_id) {
|
| + return static_cast<QuicDataStream*>(GetDynamicStream(stream_id));
|
| +}
|
| +
|
| +} // namespace net
|
|
|