• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 "quiche/quic/test_tools/quic_spdy_session_peer.h"
6 
7 #include "quiche/quic/core/http/quic_spdy_session.h"
8 #include "quiche/quic/core/qpack/qpack_receive_stream.h"
9 #include "quiche/quic/core/quic_utils.h"
10 #include "quiche/quic/platform/api/quic_flags.h"
11 #include "quiche/quic/test_tools/quic_session_peer.h"
12 #include "quiche/common/platform/api/quiche_logging.h"
13 
14 namespace quic {
15 namespace test {
16 
17 // static
GetHeadersStream(QuicSpdySession * session)18 QuicHeadersStream* QuicSpdySessionPeer::GetHeadersStream(
19     QuicSpdySession* session) {
20   QUICHE_DCHECK(!VersionUsesHttp3(session->transport_version()));
21   return session->headers_stream();
22 }
23 
SetHeadersStream(QuicSpdySession * session,QuicHeadersStream * headers_stream)24 void QuicSpdySessionPeer::SetHeadersStream(QuicSpdySession* session,
25                                            QuicHeadersStream* headers_stream) {
26   QUICHE_DCHECK(!VersionUsesHttp3(session->transport_version()));
27   for (auto& it : QuicSessionPeer::stream_map(session)) {
28     if (it.first ==
29         QuicUtils::GetHeadersStreamId(session->transport_version())) {
30       it.second.reset(headers_stream);
31       session->headers_stream_ = static_cast<QuicHeadersStream*>(it.second.get());
32       break;
33     }
34   }
35 }
36 
37 // static
GetSpdyFramer(QuicSpdySession * session)38 spdy::SpdyFramer* QuicSpdySessionPeer::GetSpdyFramer(QuicSpdySession* session) {
39   return &session->spdy_framer_;
40 }
41 
SetMaxInboundHeaderListSize(QuicSpdySession * session,size_t max_inbound_header_size)42 void QuicSpdySessionPeer::SetMaxInboundHeaderListSize(
43     QuicSpdySession* session, size_t max_inbound_header_size) {
44   session->set_max_inbound_header_list_size(max_inbound_header_size);
45 }
46 
47 // static
WriteHeadersOnHeadersStream(QuicSpdySession * session,QuicStreamId id,spdy::Http2HeaderBlock headers,bool fin,const spdy::SpdyStreamPrecedence & precedence,quiche::QuicheReferenceCountedPointer<QuicAckListenerInterface> ack_listener)48 size_t QuicSpdySessionPeer::WriteHeadersOnHeadersStream(
49     QuicSpdySession* session, QuicStreamId id, spdy::Http2HeaderBlock headers,
50     bool fin, const spdy::SpdyStreamPrecedence& precedence,
51     quiche::QuicheReferenceCountedPointer<QuicAckListenerInterface>
52         ack_listener) {
53   return session->WriteHeadersOnHeadersStream(
54       id, std::move(headers), fin, precedence, std::move(ack_listener));
55 }
56 
57 // static
GetNextOutgoingUnidirectionalStreamId(QuicSpdySession * session)58 QuicStreamId QuicSpdySessionPeer::GetNextOutgoingUnidirectionalStreamId(
59     QuicSpdySession* session) {
60   return session->GetNextOutgoingUnidirectionalStreamId();
61 }
62 
63 // static
GetReceiveControlStream(QuicSpdySession * session)64 QuicReceiveControlStream* QuicSpdySessionPeer::GetReceiveControlStream(
65     QuicSpdySession* session) {
66   return session->receive_control_stream_;
67 }
68 
69 // static
GetSendControlStream(QuicSpdySession * session)70 QuicSendControlStream* QuicSpdySessionPeer::GetSendControlStream(
71     QuicSpdySession* session) {
72   return session->send_control_stream_;
73 }
74 
75 // static
GetQpackDecoderSendStream(QuicSpdySession * session)76 QpackSendStream* QuicSpdySessionPeer::GetQpackDecoderSendStream(
77     QuicSpdySession* session) {
78   return session->qpack_decoder_send_stream_;
79 }
80 
81 // static
GetQpackEncoderSendStream(QuicSpdySession * session)82 QpackSendStream* QuicSpdySessionPeer::GetQpackEncoderSendStream(
83     QuicSpdySession* session) {
84   return session->qpack_encoder_send_stream_;
85 }
86 
87 // static
GetQpackDecoderReceiveStream(QuicSpdySession * session)88 QpackReceiveStream* QuicSpdySessionPeer::GetQpackDecoderReceiveStream(
89     QuicSpdySession* session) {
90   return session->qpack_decoder_receive_stream_;
91 }
92 
93 // static
GetQpackEncoderReceiveStream(QuicSpdySession * session)94 QpackReceiveStream* QuicSpdySessionPeer::GetQpackEncoderReceiveStream(
95     QuicSpdySession* session) {
96   return session->qpack_encoder_receive_stream_;
97 }
98 
99 // static
SetHttpDatagramSupport(QuicSpdySession * session,HttpDatagramSupport http_datagram_support)100 void QuicSpdySessionPeer::SetHttpDatagramSupport(
101     QuicSpdySession* session, HttpDatagramSupport http_datagram_support) {
102   session->http_datagram_support_ = http_datagram_support;
103 }
104 
105 // static
LocalHttpDatagramSupport(QuicSpdySession * session)106 HttpDatagramSupport QuicSpdySessionPeer::LocalHttpDatagramSupport(
107     QuicSpdySession* session) {
108   return session->LocalHttpDatagramSupport();
109 }
110 
111 // static
EnableWebTransport(QuicSpdySession * session)112 void QuicSpdySessionPeer::EnableWebTransport(QuicSpdySession* session) {
113   QUICHE_DCHECK(session->WillNegotiateWebTransport());
114   SetHttpDatagramSupport(session, HttpDatagramSupport::kDraft04);
115   session->peer_supports_webtransport_ = true;
116 }
117 
118 }  // namespace test
119 }  // namespace quic
120