blob: c547ac226104b566a974f33c06f0b6d3f9203f91 [file] [log] [blame]
QUICHE teama6ef0a62019-03-07 20:34:33 -05001// 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
QUICHE team5be974e2020-12-29 18:35:24 -05005#include "quic/test_tools/quic_spdy_session_peer.h"
QUICHE teama6ef0a62019-03-07 20:34:33 -05006
QUICHE team5be974e2020-12-29 18:35:24 -05007#include "quic/core/http/quic_spdy_session.h"
8#include "quic/core/qpack/qpack_receive_stream.h"
9#include "quic/core/quic_utils.h"
vasilvv2a2cecc2021-03-12 15:38:24 -080010#include "quic/platform/api/quic_flags.h"
QUICHE team5be974e2020-12-29 18:35:24 -050011#include "quic/test_tools/quic_session_peer.h"
vasilvv2a2cecc2021-03-12 15:38:24 -080012#include "common/platform/api/quiche_logging.h"
QUICHE teama6ef0a62019-03-07 20:34:33 -050013
14namespace quic {
15namespace test {
16
17// static
18QuicHeadersStream* QuicSpdySessionPeer::GetHeadersStream(
19 QuicSpdySession* session) {
vasilvvf8035162021-02-01 14:49:14 -080020 QUICHE_DCHECK(!VersionUsesHttp3(session->transport_version()));
renjietangfbeb5bf2019-04-19 15:06:20 -070021 return session->headers_stream();
QUICHE teama6ef0a62019-03-07 20:34:33 -050022}
23
renjietang9818f8c2019-07-16 11:12:27 -070024void QuicSpdySessionPeer::SetHeadersStream(QuicSpdySession* session,
25 QuicHeadersStream* headers_stream) {
vasilvvf8035162021-02-01 14:49:14 -080026 QUICHE_DCHECK(!VersionUsesHttp3(session->transport_version()));
renjietanga5f79382020-11-24 13:59:00 -080027 for (auto& it : QuicSessionPeer::stream_map(session)) {
renjietangd1d00852019-09-06 10:43:12 -070028 if (it.first ==
29 QuicUtils::GetHeadersStreamId(session->transport_version())) {
renjietangfbeb5bf2019-04-19 15:06:20 -070030 it.second.reset(headers_stream);
renjietang9818f8c2019-07-16 11:12:27 -070031 session->headers_stream_ = static_cast<QuicHeadersStream*>(it.second.get());
renjietangfbeb5bf2019-04-19 15:06:20 -070032 break;
33 }
34 }
35}
36
QUICHE teama6ef0a62019-03-07 20:34:33 -050037// static
bnc92fa63a2020-02-04 05:13:43 -080038spdy::SpdyFramer* QuicSpdySessionPeer::GetSpdyFramer(QuicSpdySession* session) {
39 return &session->spdy_framer_;
QUICHE teama6ef0a62019-03-07 20:34:33 -050040}
41
bnc30d610c2019-07-08 18:39:59 -070042void QuicSpdySessionPeer::SetMaxInboundHeaderListSize(
QUICHE teama6ef0a62019-03-07 20:34:33 -050043 QuicSpdySession* session,
bnc30d610c2019-07-08 18:39:59 -070044 size_t max_inbound_header_size) {
45 session->set_max_inbound_header_list_size(max_inbound_header_size);
QUICHE teama6ef0a62019-03-07 20:34:33 -050046}
47
48// static
49size_t QuicSpdySessionPeer::WriteHeadersOnHeadersStream(
50 QuicSpdySession* session,
51 QuicStreamId id,
52 spdy::SpdyHeaderBlock headers,
53 bool fin,
fayang476683a2019-07-25 12:42:16 -070054 const spdy::SpdyStreamPrecedence& precedence,
QUICHE teama6ef0a62019-03-07 20:34:33 -050055 QuicReferenceCountedPointer<QuicAckListenerInterface> ack_listener) {
56 return session->WriteHeadersOnHeadersStream(
fayang476683a2019-07-25 12:42:16 -070057 id, std::move(headers), fin, precedence, std::move(ack_listener));
QUICHE teama6ef0a62019-03-07 20:34:33 -050058}
59
renjietangfee2cc32019-04-05 11:32:07 -070060// static
61QuicStreamId QuicSpdySessionPeer::GetNextOutgoingUnidirectionalStreamId(
62 QuicSpdySession* session) {
63 return session->GetNextOutgoingUnidirectionalStreamId();
64}
65
renjietang3a1bb802019-06-11 10:42:41 -070066// static
67QuicReceiveControlStream* QuicSpdySessionPeer::GetReceiveControlStream(
68 QuicSpdySession* session) {
69 return session->receive_control_stream_;
70}
71
renjietang7498c8c2019-07-02 19:28:42 -070072// static
73QuicSendControlStream* QuicSpdySessionPeer::GetSendControlStream(
74 QuicSpdySession* session) {
75 return session->send_control_stream_;
76}
77
renjietang87cd7de2019-08-16 08:35:10 -070078// static
79QpackSendStream* QuicSpdySessionPeer::GetQpackDecoderSendStream(
80 QuicSpdySession* session) {
81 return session->qpack_decoder_send_stream_;
82}
83
84// static
85QpackSendStream* QuicSpdySessionPeer::GetQpackEncoderSendStream(
86 QuicSpdySession* session) {
87 return session->qpack_encoder_send_stream_;
88}
89
90// static
91QpackReceiveStream* QuicSpdySessionPeer::GetQpackDecoderReceiveStream(
92 QuicSpdySession* session) {
93 return session->qpack_decoder_receive_stream_;
94}
95
96// static
97QpackReceiveStream* QuicSpdySessionPeer::GetQpackEncoderReceiveStream(
98 QuicSpdySession* session) {
99 return session->qpack_encoder_receive_stream_;
100}
101
dschinazi9ff30da2021-02-26 18:17:39 -0800102// static
103void QuicSpdySessionPeer::SetH3DatagramSupported(QuicSpdySession* session,
104 bool h3_datagram_supported) {
105 session->h3_datagram_supported_ = h3_datagram_supported;
106}
107
vasilvv2a2cecc2021-03-12 15:38:24 -0800108// static
109void QuicSpdySessionPeer::EnableWebTransport(QuicSpdySession& session) {
110 SetQuicReloadableFlag(quic_h3_datagram, true);
111 QUICHE_DCHECK(session.WillNegotiateWebTransport());
112 session.h3_datagram_supported_ = true;
113 session.peer_supports_webtransport_ = true;
114}
115
QUICHE teama6ef0a62019-03-07 20:34:33 -0500116} // namespace test
117} // namespace quic