xref: /aosp_15_r20/external/cronet/net/third_party/quiche/src/quiche/quic/moqt/tools/moqt_client.h (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
1 // Copyright 2023 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 #ifndef QUICHE_QUIC_MOQT_TOOLS_MOQT_CLIENT_H_
6 #define QUICHE_QUIC_MOQT_TOOLS_MOQT_CLIENT_H_
7 
8 #include <memory>
9 #include <string>
10 
11 #include "absl/status/status.h"
12 #include "quiche/quic/core/crypto/proof_verifier.h"
13 #include "quiche/quic/core/http/quic_spdy_client_session.h"
14 #include "quiche/quic/core/io/quic_event_loop.h"
15 #include "quiche/quic/moqt/moqt_session.h"
16 #include "quiche/quic/platform/api/quic_socket_address.h"
17 #include "quiche/quic/tools/quic_default_client.h"
18 #include "quiche/common/platform/api/quiche_export.h"
19 
20 namespace moqt {
21 
22 // A synchronous MoQT client based on QuicDefaultClient.
23 class QUICHE_EXPORT MoqtClient {
24  public:
25   MoqtClient(quic::QuicSocketAddress peer_address,
26              const quic::QuicServerId& server_id,
27              std::unique_ptr<quic::ProofVerifier> proof_verifier,
28              quic::QuicEventLoop* event_loop);
29 
30   // Establishes the connection to the specified endpoint. The errors are
31   // returned via the session termination callback.
32   void Connect(std::string path, MoqtSessionCallbacks callbacks);
33 
session()34   MoqtSession* session() { return session_; }
35 
36  private:
37   absl::Status ConnectInner(std::string path, MoqtSessionCallbacks& callbacks);
38 
39   quic::QuicDefaultClient spdy_client_;
40   MoqtSession* session_ = nullptr;
41 };
42 
43 }  // namespace moqt
44 
45 #endif  // QUICHE_QUIC_MOQT_TOOLS_MOQT_CLIENT_H_
46