[NLP] Introduce nlp project (#366)
[platform/core/csapi/tizenfx.git] / src / Tizen.Applications.MessagePort / Tizen.Applications.Messages / MessagePortErrorFactory.cs
1 /*
2  * Copyright (c) 2016 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.Runtime.CompilerServices;
19 using Tizen.Internals.Errors;
20
21 namespace Tizen.Applications.Messages
22 {
23     internal enum MessagePortError
24     {
25         None = ErrorCode.None,
26         IOError = ErrorCode.IoError,
27         OutOfMemory = ErrorCode.OutOfMemory,
28         InvalidParameter = ErrorCode.InvalidParameter,
29         InvalidOperation = ErrorCode.InvalidOperation,
30         PortNotFound = -0x01130000 | 0x01,
31         CertificateNotMatch = -0x01130000 | 0x02,
32         MaxExceeded = -0x01130000 | 0x03,
33         ResourceUnavailable = -0x01130000 | 0x04
34     }
35
36     internal static class MessagePortErrorFactory
37     {
38         private const string LogTag = "Tizen.Applications.MessagePort";
39         internal static void ThrowException(int errorCode, string errorMessage = null, string paramName = null,
40             [CallerMemberName] string memberName = "", [CallerFilePath] string filePath = "", [CallerLineNumber] int lineNumber = 0)
41         {
42             MessagePortError err = (MessagePortError)errorCode;
43             if (String.IsNullOrEmpty(errorMessage))
44             {
45                 errorMessage = err.ToString();
46             }
47
48             Log.Error(LogTag, $"{memberName}({lineNumber.ToString()}) : {filePath}");
49             Log.Error(LogTag, "Error : " + errorMessage);
50
51             switch ((MessagePortError)errorCode)
52             {
53                 case MessagePortError.IOError:
54                 case MessagePortError.InvalidOperation:
55                 case MessagePortError.PortNotFound:
56                 case MessagePortError.ResourceUnavailable: throw new InvalidOperationException(errorMessage);
57                 case MessagePortError.InvalidParameter: throw new ArgumentException(errorMessage, paramName);
58                 case MessagePortError.CertificateNotMatch: throw new UnauthorizedAccessException(errorMessage);
59                 case MessagePortError.OutOfMemory: throw new OutOfMemoryException(errorMessage);
60                 case MessagePortError.MaxExceeded: throw new ArgumentOutOfRangeException(paramName, errorMessage);
61             }
62         }
63     }
64 }