| // Copyright 2019 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 "quic/masque/masque_encapsulated_client_session.h" |
| |
| namespace quic { |
| |
| MasqueEncapsulatedClientSession::MasqueEncapsulatedClientSession( |
| const QuicConfig& config, |
| const ParsedQuicVersionVector& supported_versions, |
| QuicConnection* connection, |
| const QuicServerId& server_id, |
| QuicCryptoClientConfig* crypto_config, |
| QuicClientPushPromiseIndex* push_promise_index, |
| MasqueClientSession* masque_client_session) |
| : QuicSpdyClientSession(config, |
| supported_versions, |
| connection, |
| server_id, |
| crypto_config, |
| push_promise_index), |
| masque_client_session_(masque_client_session) {} |
| |
| void MasqueEncapsulatedClientSession::ProcessPacket( |
| absl::string_view packet, |
| QuicSocketAddress server_address) { |
| QuicTime now = connection()->clock()->ApproximateNow(); |
| QuicReceivedPacket received_packet(packet.data(), packet.length(), now); |
| connection()->ProcessUdpPacket(connection()->self_address(), server_address, |
| received_packet); |
| } |
| |
| void MasqueEncapsulatedClientSession::CloseConnection( |
| QuicErrorCode error, |
| const std::string& details, |
| ConnectionCloseBehavior connection_close_behavior) { |
| connection()->CloseConnection(error, details, connection_close_behavior); |
| } |
| |
| void MasqueEncapsulatedClientSession::OnConnectionClosed( |
| const QuicConnectionCloseFrame& frame, |
| ConnectionCloseSource source) { |
| QuicSpdyClientSession::OnConnectionClosed(frame, source); |
| masque_client_session_->UnregisterConnectionId( |
| connection()->client_connection_id(), this); |
| } |
| |
| } // namespace quic |