a0c4c5dd82db0bf96eaf6bd7d2e81675b987bd22
[platform/core/csapi/tizenfx.git] / src / Tizen.Multimedia.Remoting / WebRTC / WebRTCError.cs
1 /*
2  * Copyright (c) 2021 Samsung Electronics Co., Ltd All Rights Reserved
3  *
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
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
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.
15  */
16
17 using System;
18 using System.IO;
19 using Tizen.Internals.Errors;
20
21 namespace Tizen.Multimedia.Remoting
22 {
23     internal enum WebRTCErrorCode
24     {
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
36     }
37
38     internal static class WebRTCErrorCodeExtensions
39     {
40         internal static void ThrowIfFailed(this WebRTCErrorCode errorCode, string message)
41         {
42             if (errorCode == WebRTCErrorCode.None)
43                 return;
44
45             string errMessage = (message ?? "Operation failed") + " : " + errorCode.ToString() + ".";
46
47             switch (errorCode)
48             {
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);
62             }
63         }
64     }
65 }