Return an error when datachannel closes due to network error
This is the start of generating compliant errors, including diagnostics,
when datachannels close because of errors.
Bug: chromium:1030631
Change-Id: I39aa41728efb25bca6193a782db4cbdaad8e0dc1
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/161304
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Reviewed-by: Henrik Boström <hbos@webrtc.org>
Commit-Queue: Harald Alvestrand <hta@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#30034}
diff --git a/api/rtc_error.cc b/api/rtc_error.cc
index c9ad7cb..4d3033b 100644
--- a/api/rtc_error.cc
+++ b/api/rtc_error.cc
@@ -26,19 +26,34 @@
"NETWORK_ERROR",
"RESOURCE_EXHAUSTED",
"INTERNAL_ERROR",
+ "OPERATION_ERROR_WITH_DATA",
};
-static_assert(static_cast<int>(webrtc::RTCErrorType::INTERNAL_ERROR) ==
- (arraysize(kRTCErrorTypeNames) - 1),
- "kRTCErrorTypeNames must have as many strings as RTCErrorType "
- "has values.");
+static_assert(
+ static_cast<int>(webrtc::RTCErrorType::OPERATION_ERROR_WITH_DATA) ==
+ (arraysize(kRTCErrorTypeNames) - 1),
+ "kRTCErrorTypeNames must have as many strings as RTCErrorType "
+ "has values.");
+
+const char* kRTCErrorDetailTypeNames[] = {
+ "NONE",
+ "DATA_CHANNEL_FAILURE",
+ "DTLS_FAILURE",
+ "FINGERPRINT_FAILURE",
+ "SCTP_FAILURE",
+ "SDP_SYNTAX_ERROR",
+ "HARDWARE_ENCODER_NOT_AVAILABLE",
+ "HARDWARE_ENCODER_ERROR",
+};
+static_assert(
+ static_cast<int>(webrtc::RTCErrorDetailType::HARDWARE_ENCODER_ERROR) ==
+ (arraysize(kRTCErrorDetailTypeNames) - 1),
+ "kRTCErrorDetailTypeNames must have as many strings as "
+ "RTCErrorDetailType has values.");
} // namespace
namespace webrtc {
-RTCError::RTCError(RTCError&& other) = default;
-RTCError& RTCError::operator=(RTCError&& other) = default;
-
// static
RTCError RTCError::OK() {
return RTCError();
@@ -57,4 +72,9 @@
return kRTCErrorTypeNames[index];
}
+const char* ToString(RTCErrorDetailType error) {
+ int index = static_cast<int>(error);
+ return kRTCErrorDetailTypeNames[index];
+}
+
} // namespace webrtc