QUICHE team | a6ef0a6 | 2019-03-07 20:34:33 -0500 | [diff] [blame] | 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 | |
QUICHE team | 5be974e | 2020-12-29 18:35:24 -0500 | [diff] [blame] | 5 | #include "quic/test_tools/quic_spdy_session_peer.h" |
QUICHE team | a6ef0a6 | 2019-03-07 20:34:33 -0500 | [diff] [blame] | 6 | |
QUICHE team | 5be974e | 2020-12-29 18:35:24 -0500 | [diff] [blame] | 7 | #include "quic/core/http/quic_spdy_session.h" |
| 8 | #include "quic/core/qpack/qpack_receive_stream.h" |
| 9 | #include "quic/core/quic_utils.h" |
vasilvv | 2a2cecc | 2021-03-12 15:38:24 -0800 | [diff] [blame] | 10 | #include "quic/platform/api/quic_flags.h" |
QUICHE team | 5be974e | 2020-12-29 18:35:24 -0500 | [diff] [blame] | 11 | #include "quic/test_tools/quic_session_peer.h" |
vasilvv | 2a2cecc | 2021-03-12 15:38:24 -0800 | [diff] [blame] | 12 | #include "common/platform/api/quiche_logging.h" |
QUICHE team | a6ef0a6 | 2019-03-07 20:34:33 -0500 | [diff] [blame] | 13 | |
| 14 | namespace quic { |
| 15 | namespace test { |
| 16 | |
| 17 | // static |
| 18 | QuicHeadersStream* QuicSpdySessionPeer::GetHeadersStream( |
| 19 | QuicSpdySession* session) { |
vasilvv | f803516 | 2021-02-01 14:49:14 -0800 | [diff] [blame] | 20 | QUICHE_DCHECK(!VersionUsesHttp3(session->transport_version())); |
renjietang | fbeb5bf | 2019-04-19 15:06:20 -0700 | [diff] [blame] | 21 | return session->headers_stream(); |
QUICHE team | a6ef0a6 | 2019-03-07 20:34:33 -0500 | [diff] [blame] | 22 | } |
| 23 | |
renjietang | 9818f8c | 2019-07-16 11:12:27 -0700 | [diff] [blame] | 24 | void QuicSpdySessionPeer::SetHeadersStream(QuicSpdySession* session, |
| 25 | QuicHeadersStream* headers_stream) { |
vasilvv | f803516 | 2021-02-01 14:49:14 -0800 | [diff] [blame] | 26 | QUICHE_DCHECK(!VersionUsesHttp3(session->transport_version())); |
renjietang | a5f7938 | 2020-11-24 13:59:00 -0800 | [diff] [blame] | 27 | for (auto& it : QuicSessionPeer::stream_map(session)) { |
renjietang | d1d0085 | 2019-09-06 10:43:12 -0700 | [diff] [blame] | 28 | if (it.first == |
| 29 | QuicUtils::GetHeadersStreamId(session->transport_version())) { |
renjietang | fbeb5bf | 2019-04-19 15:06:20 -0700 | [diff] [blame] | 30 | it.second.reset(headers_stream); |
renjietang | 9818f8c | 2019-07-16 11:12:27 -0700 | [diff] [blame] | 31 | session->headers_stream_ = static_cast<QuicHeadersStream*>(it.second.get()); |
renjietang | fbeb5bf | 2019-04-19 15:06:20 -0700 | [diff] [blame] | 32 | break; |
| 33 | } |
| 34 | } |
| 35 | } |
| 36 | |
QUICHE team | a6ef0a6 | 2019-03-07 20:34:33 -0500 | [diff] [blame] | 37 | // static |
bnc | 92fa63a | 2020-02-04 05:13:43 -0800 | [diff] [blame] | 38 | spdy::SpdyFramer* QuicSpdySessionPeer::GetSpdyFramer(QuicSpdySession* session) { |
| 39 | return &session->spdy_framer_; |
QUICHE team | a6ef0a6 | 2019-03-07 20:34:33 -0500 | [diff] [blame] | 40 | } |
| 41 | |
bnc | 30d610c | 2019-07-08 18:39:59 -0700 | [diff] [blame] | 42 | void QuicSpdySessionPeer::SetMaxInboundHeaderListSize( |
QUICHE team | a6ef0a6 | 2019-03-07 20:34:33 -0500 | [diff] [blame] | 43 | QuicSpdySession* session, |
bnc | 30d610c | 2019-07-08 18:39:59 -0700 | [diff] [blame] | 44 | size_t max_inbound_header_size) { |
| 45 | session->set_max_inbound_header_list_size(max_inbound_header_size); |
QUICHE team | a6ef0a6 | 2019-03-07 20:34:33 -0500 | [diff] [blame] | 46 | } |
| 47 | |
| 48 | // static |
| 49 | size_t QuicSpdySessionPeer::WriteHeadersOnHeadersStream( |
| 50 | QuicSpdySession* session, |
| 51 | QuicStreamId id, |
| 52 | spdy::SpdyHeaderBlock headers, |
| 53 | bool fin, |
fayang | 476683a | 2019-07-25 12:42:16 -0700 | [diff] [blame] | 54 | const spdy::SpdyStreamPrecedence& precedence, |
QUICHE team | a6ef0a6 | 2019-03-07 20:34:33 -0500 | [diff] [blame] | 55 | QuicReferenceCountedPointer<QuicAckListenerInterface> ack_listener) { |
| 56 | return session->WriteHeadersOnHeadersStream( |
fayang | 476683a | 2019-07-25 12:42:16 -0700 | [diff] [blame] | 57 | id, std::move(headers), fin, precedence, std::move(ack_listener)); |
QUICHE team | a6ef0a6 | 2019-03-07 20:34:33 -0500 | [diff] [blame] | 58 | } |
| 59 | |
renjietang | fee2cc3 | 2019-04-05 11:32:07 -0700 | [diff] [blame] | 60 | // static |
| 61 | QuicStreamId QuicSpdySessionPeer::GetNextOutgoingUnidirectionalStreamId( |
| 62 | QuicSpdySession* session) { |
| 63 | return session->GetNextOutgoingUnidirectionalStreamId(); |
| 64 | } |
| 65 | |
renjietang | 3a1bb80 | 2019-06-11 10:42:41 -0700 | [diff] [blame] | 66 | // static |
| 67 | QuicReceiveControlStream* QuicSpdySessionPeer::GetReceiveControlStream( |
| 68 | QuicSpdySession* session) { |
| 69 | return session->receive_control_stream_; |
| 70 | } |
| 71 | |
renjietang | 7498c8c | 2019-07-02 19:28:42 -0700 | [diff] [blame] | 72 | // static |
| 73 | QuicSendControlStream* QuicSpdySessionPeer::GetSendControlStream( |
| 74 | QuicSpdySession* session) { |
| 75 | return session->send_control_stream_; |
| 76 | } |
| 77 | |
renjietang | 87cd7de | 2019-08-16 08:35:10 -0700 | [diff] [blame] | 78 | // static |
| 79 | QpackSendStream* QuicSpdySessionPeer::GetQpackDecoderSendStream( |
| 80 | QuicSpdySession* session) { |
| 81 | return session->qpack_decoder_send_stream_; |
| 82 | } |
| 83 | |
| 84 | // static |
| 85 | QpackSendStream* QuicSpdySessionPeer::GetQpackEncoderSendStream( |
| 86 | QuicSpdySession* session) { |
| 87 | return session->qpack_encoder_send_stream_; |
| 88 | } |
| 89 | |
| 90 | // static |
| 91 | QpackReceiveStream* QuicSpdySessionPeer::GetQpackDecoderReceiveStream( |
| 92 | QuicSpdySession* session) { |
| 93 | return session->qpack_decoder_receive_stream_; |
| 94 | } |
| 95 | |
| 96 | // static |
| 97 | QpackReceiveStream* QuicSpdySessionPeer::GetQpackEncoderReceiveStream( |
| 98 | QuicSpdySession* session) { |
| 99 | return session->qpack_encoder_receive_stream_; |
| 100 | } |
| 101 | |
dschinazi | 9ff30da | 2021-02-26 18:17:39 -0800 | [diff] [blame] | 102 | // static |
| 103 | void QuicSpdySessionPeer::SetH3DatagramSupported(QuicSpdySession* session, |
| 104 | bool h3_datagram_supported) { |
| 105 | session->h3_datagram_supported_ = h3_datagram_supported; |
| 106 | } |
| 107 | |
vasilvv | 2a2cecc | 2021-03-12 15:38:24 -0800 | [diff] [blame] | 108 | // static |
| 109 | void 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 team | a6ef0a6 | 2019-03-07 20:34:33 -0500 | [diff] [blame] | 116 | } // namespace test |
| 117 | } // namespace quic |