[Network.Stc] Fix exception handling (#1098)
authorLokesh kasana <47134215+lkasana@users.noreply.github.com>
Tue, 22 Oct 2019 05:56:56 +0000 (11:26 +0530)
committersemun-lee <35090067+semun-lee@users.noreply.github.com>
Tue, 22 Oct 2019 05:56:56 +0000 (14:56 +0900)
Signed-off-by: Lokesh <l.kasana@samsung.com>
src/Tizen.Network.Stc/Tizen.Network.Stc/StcError.cs
src/Tizen.Network.Stc/Tizen.Network.Stc/StcManager.cs
src/Tizen.Network.Stc/Tizen.Network.Stc/StcManagerImpl.cs

index cd38dd4..ddf87ca 100755 (executable)
@@ -20,35 +20,35 @@ namespace Tizen.Network.Stc
 {
     internal static class StcErrorFactory
     {
-        internal static void ThrowStcException(int exception)
+        internal static Exception GetStcException(int exception)
         {
             StcError _error = (StcError)exception;
             switch (_error)
             {
-            case StcError.NotPermitted:
-                throw new InvalidOperationException("Operation not permitted");
-            case StcError.OutOfMemory:
-                throw new InvalidOperationException("Out of memory");
-            case StcError.PermissionDenied:
-                throw new UnauthorizedAccessException("Permission denied (http://tizen.org/privilege/network.get)");
-            case StcError.ResourceBusy:
-                throw new InvalidOperationException("Resource is busy");
-            case StcError.InvalidOperation:
-                throw new InvalidOperationException("Invalid operation"); 
-            case StcError.InvalidParameter:
-                throw new InvalidOperationException("Invalid parameter");
-            case StcError.NotSupported:
-                throw new NotSupportedException("Unsupported STC feature http://tizen.org/feature/network.traffic_control");
-            case StcError.OperationFailed:
-                throw new InvalidOperationException("Operation failed");
-            case StcError.NotInitialized:
-                throw new InvalidOperationException("Not initialized");
-            case StcError.AlreadyInitialized:
-                throw new InvalidOperationException("Already initialized");
-            case StcError.InProgress:
-                throw new InvalidOperationException("In progress");
-            default:
-                throw new InvalidOperationException("Unexpected value error = " + exception);
+                case StcError.NotPermitted:
+                    return new InvalidOperationException("Operation not permitted");
+                case StcError.OutOfMemory:
+                    return new InvalidOperationException("Out of memory");
+                case StcError.PermissionDenied:
+                    return new UnauthorizedAccessException("Permission denied (http://tizen.org/privilege/network.get)");
+                case StcError.ResourceBusy:
+                    return new InvalidOperationException("Resource is busy");
+                case StcError.InvalidOperation:
+                    return new InvalidOperationException("Invalid operation");
+                case StcError.InvalidParameter:
+                    return new ArgumentException("Invalid parameter");
+                case StcError.NotSupported:
+                    return new NotSupportedException("Unsupported STC feature http://tizen.org/feature/network.traffic_control");
+                case StcError.OperationFailed:
+                    return new InvalidOperationException("Operation failed");
+                case StcError.NotInitialized:
+                    return new InvalidOperationException("Not initialized");
+                case StcError.AlreadyInitialized:
+                    return new InvalidOperationException("Already initialized");
+                case StcError.InProgress:
+                    return new InvalidOperationException("In progress");
+                default:
+                    return new InvalidOperationException("Unexpected value error = " + exception);
             }
         }
     }
index d2ce05f..11627f5 100755 (executable)
@@ -50,7 +50,12 @@ namespace Tizen.Network.Stc
         /// <returns>True if the handle is released successfully, otherwise false.</returns>
         protected override bool ReleaseHandle()
         {
-            Interop.Stc.Deinitialize(this.handle);
+            int ret = Interop.Stc.Deinitialize(this.handle);
+            if (ret != (int)StcError.None)
+            {
+                Log.Error(Globals.LogTag, "Failed to deinitialize Stc, Error - " + (StcError)ret);
+                return false;
+            }
             this.SetHandle(IntPtr.Zero);
             return true;
         }
@@ -68,9 +73,9 @@ namespace Tizen.Network.Stc
         /// <returns>The instance of the SafeStcHandle.</returns>
         /// <feature>http://tizen.org/feature/network.traffic_control</feature>
         /// <privilege>http://tizen.org/privilege/network.get</privilege>
+        /// <exception cref="InvalidOperationException">Thrown when the method failed due to an invalid operation.</exception>
         /// <exception cref="NotSupportedException">Thrown when the Stc is not supported.</exception>
         /// <exception cref="UnauthorizedAccessException">Thrown when the permission is denied.</exception>
-        /// <exception cref="InvalidOperationException">Thrown when the method failed due to an invalid operation.</exception>
         [EditorBrowsable(EditorBrowsableState.Never)]
         internal static SafeStcHandle GetStcHandle()
         {
@@ -85,10 +90,10 @@ namespace Tizen.Network.Stc
         /// <returns>A list of the NetworkStatistics objects.</returns>
         /// <feature>http://tizen.org/feature/network.traffic_control</feature>
         /// <privilege>http://tizen.org/privilege/network.get</privilege>
-        /// <exception cref="NotSupportedException">Thrown when the Stc is not supported.</exception>
-        /// <exception cref="UnauthorizedAccessException">Thrown when the permission is denied.</exception>
         /// <exception cref="InvalidOperationException">Thrown when the method failed due to an invalid operation.</exception>
         /// <exception cref="ArgumentException">Thrown when the method is provided with invalid argument.</exception>
+        /// <exception cref="NotSupportedException">Thrown when the Stc is not supported.</exception>
+        /// <exception cref="UnauthorizedAccessException">Thrown when the permission is denied.</exception>
         public static Task<IEnumerable<NetworkStatistics>> GetStatisticsAsync(StatisticsFilter filter)
         {
             return StcManagerImpl.Instance.GetStatisticsAsync(filter);
index 85b3268..d3b9fb6 100755 (executable)
@@ -89,7 +89,7 @@ namespace Tizen.Network.Stc
             if (ret != (int)StcError.None)
             {
                 Log.Error(Globals.LogTag, "Failed to initialize Stc, Error - " + (StcError)ret);
-                StcErrorFactory.ThrowStcException(ret);
+                throw StcErrorFactory.GetStcException(ret);
             }
             return handle;
         }
@@ -107,7 +107,7 @@ namespace Tizen.Network.Stc
                     if (result != (int)StcError.None)
                     {
                         Log.Error(Globals.LogTag, "GetAllStats failed, Error - " + (StcError)result);
-                        task.SetException(new InvalidOperationException("Error occurs during GetAllStats(), " + (StcError)result));
+                        task.SetException(StcErrorFactory.GetStcException(result));
                     }
 
                     List<NetworkStatistics> statsList = new List<NetworkStatistics>();
@@ -117,7 +117,7 @@ namespace Tizen.Network.Stc
                         if (resultTemp != (int)StcError.None)
                         {
                             Log.Error(Globals.LogTag, "ForeachAllStats failed, Error - " + (StcError)resultTemp);
-                            task.SetException(new InvalidOperationException("Error occurs during ForeachAllStats(), " + (StcError)resultTemp));
+                            task.SetException(StcErrorFactory.GetStcException(resultTemp));
                         }
 
                         Interop.Stc.SafeStatsHandle cloned;
@@ -125,7 +125,7 @@ namespace Tizen.Network.Stc
                         if (retValue != (int)StcError.None)
                         {
                             Log.Error(Globals.LogTag, "StatsClone() failed , Error - " + (StcError)retValue);
-                            task.SetException(new InvalidOperationException("Error occurs during StatsClone(), " + (StcError)retValue));
+                            task.SetException(StcErrorFactory.GetStcException(retValue));
                         }
 
                         statsList.Add(new NetworkStatistics(cloned));
@@ -136,7 +136,7 @@ namespace Tizen.Network.Stc
                     if(retTemp != (int)StcError.None)
                     {
                         Log.Error(Globals.LogTag, "foreachAllStatus() failed , Error - " + (StcError)retTemp);
-                        task.SetException(new InvalidOperationException("Error occurs during foreachAllStatus(), " + (StcError)retTemp));
+                        task.SetException(StcErrorFactory.GetStcException(retTemp));
                     }
                     else
                     {
@@ -156,7 +156,7 @@ namespace Tizen.Network.Stc
                 if (ret != (int)StcError.None)
                 {
                     Log.Error(Globals.LogTag, "GetAllStatus() failed , Error - " + (StcError)ret);
-                    StcErrorFactory.ThrowStcException(ret);
+                    throw StcErrorFactory.GetStcException(ret);
                 }
             }
             return task.Task;