2 * Copyright (c) 2021 Samsung Electronics Co., Ltd All Rights Reserved
4 * Licensed under the Apache License, Version 2.0 (the License);
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an AS IS BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
19 using Tizen.Internals.Errors;
21 namespace Tizen.Multimedia.Remoting
23 internal enum WebRTCErrorCode
25 None = ErrorCode.None,
26 FeatureNotSupported = ErrorCode.NotSupported,
27 PermissionDenied = ErrorCode.PermissionDenied,
28 InvalidArgument = ErrorCode.InvalidParameter,
29 InvalidOperation = ErrorCode.InvalidOperation,
30 TizenWebRTCError = -0x030B0000,
31 InvalidState = TizenWebRTCError | 0x01,
32 ConnectionFailed = TizenWebRTCError | 0x02,
33 StreamFailed = TizenWebRTCError | 0x03,
34 ResourceFailed = TizenWebRTCError | 0x04,
35 ResourceConflict = TizenWebRTCError | 0x05
38 internal static class WebRTCErrorCodeExtensions
40 internal static void ThrowIfFailed(this WebRTCErrorCode errorCode, string message)
42 if (errorCode == WebRTCErrorCode.None)
45 string errMessage = (message ?? "Operation failed") + " : " + errorCode.ToString() + ".";
49 case WebRTCErrorCode.FeatureNotSupported:
50 throw new NotSupportedException(errMessage);
51 case WebRTCErrorCode.InvalidState:
52 case WebRTCErrorCode.ConnectionFailed:
53 case WebRTCErrorCode.StreamFailed:
54 case WebRTCErrorCode.ResourceFailed:
55 case WebRTCErrorCode.ResourceConflict:
56 case WebRTCErrorCode.InvalidOperation:
57 throw new InvalidOperationException(errMessage);
58 case WebRTCErrorCode.InvalidArgument:
59 throw new ArgumentException(errMessage);
60 case WebRTCErrorCode.PermissionDenied:
61 throw new UnauthorizedAccessException(errMessage);