12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- // Copyright 2020 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.
- #ifndef NET_QUIC_WEB_TRANSPORT_ERROR_H_
- #define NET_QUIC_WEB_TRANSPORT_ERROR_H_
- #include <ostream>
- #include <string>
- #include "base/strings/string_piece.h"
- #include "net/base/net_errors.h"
- #include "net/base/net_export.h"
- #include "net/third_party/quiche/src/quiche/quic/core/quic_error_codes.h"
- namespace net {
- struct NET_EXPORT WebTransportError {
- WebTransportError() = default;
- explicit WebTransportError(int net_error) : net_error(net_error) {
- DCHECK_LT(net_error, 0);
- }
- WebTransportError(int net_error,
- quic::QuicErrorCode quic_error,
- base::StringPiece details,
- bool safe_to_report_details)
- : net_error(net_error),
- quic_error(quic_error),
- details(details),
- safe_to_report_details(safe_to_report_details) {
- DCHECK_LT(net_error, 0);
- }
- // |net_error| is always set to a meaningful value.
- int net_error = ERR_FAILED;
- // |quic_error| is set to a QUIC error, or to quic::QUIC_NO_ERROR if the error
- // originates non-QUIC parts of the stack.
- quic::QuicErrorCode quic_error = quic::QUIC_NO_ERROR;
- // Human-readable error summary.
- std::string details;
- // WebTransport requires that the connection errors have to be
- // undistinguishable until the peer is confirmed to be a WebTransport
- // endpoint. See https://w3c.github.io/webtransport/#protocol-security
- bool safe_to_report_details = false;
- };
- NET_EXPORT
- std::string WebTransportErrorToString(const WebTransportError& error);
- NET_EXPORT
- std::ostream& operator<<(std::ostream& os, const WebTransportError& error);
- } // namespace net
- #endif // NET_QUIC_WEB_TRANSPORT_ERROR_H_
|