xref: /aosp_15_r20/external/cronet/net/third_party/quiche/src/quiche/quic/core/web_transport_interface.h (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
1 // Copyright (c) 2021 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 // This header contains interfaces that abstract away different backing
6 // protocols for WebTransport.
7 
8 #ifndef QUICHE_QUIC_CORE_WEB_TRANSPORT_INTERFACE_H_
9 #define QUICHE_QUIC_CORE_WEB_TRANSPORT_INTERFACE_H_
10 
11 #include "absl/strings/str_cat.h"
12 #include "quiche/quic/core/quic_types.h"
13 #include "quiche/web_transport/web_transport.h"
14 
15 namespace quic {
16 
17 using WebTransportSessionError = webtransport::SessionErrorCode;
18 using WebTransportStreamError = webtransport::StreamErrorCode;
19 
20 using WebTransportStreamVisitor = webtransport::StreamVisitor;
21 using WebTransportStream = webtransport::Stream;
22 using WebTransportVisitor = webtransport::SessionVisitor;
23 using WebTransportSession = webtransport::Session;
24 
MessageStatusToWebTransportStatus(MessageStatus status)25 inline webtransport::DatagramStatus MessageStatusToWebTransportStatus(
26     MessageStatus status) {
27   switch (status) {
28     case MESSAGE_STATUS_SUCCESS:
29       return webtransport::DatagramStatus(
30           webtransport::DatagramStatusCode::kSuccess, "");
31     case MESSAGE_STATUS_BLOCKED:
32       return webtransport::DatagramStatus(
33           webtransport::DatagramStatusCode::kBlocked,
34           "QUIC connection write-blocked");
35     case MESSAGE_STATUS_TOO_LARGE:
36       return webtransport::DatagramStatus(
37           webtransport::DatagramStatusCode::kTooBig,
38           "Datagram payload exceeded maximum allowed size");
39     case MESSAGE_STATUS_ENCRYPTION_NOT_ESTABLISHED:
40     case MESSAGE_STATUS_INTERNAL_ERROR:
41     case MESSAGE_STATUS_UNSUPPORTED:
42       return webtransport::DatagramStatus(
43           webtransport::DatagramStatusCode::kInternalError,
44           absl::StrCat("Internal error: ", MessageStatusToString(status)));
45     default:
46       return webtransport::DatagramStatus(
47           webtransport::DatagramStatusCode::kInternalError,
48           absl::StrCat("Unknown status: ", MessageStatusToString(status)));
49   }
50 }
51 
52 }  // namespace quic
53 
54 #endif  // QUICHE_QUIC_CORE_WEB_TRANSPORT_INTERFACE_H_
55