onnxruntime/csharp/src/Microsoft.ML.OnnxRuntime/NativeApiStatus.cs

36 lines
1.2 KiB
C#
Raw Normal View History

2018-11-20 00:48:22 +00:00
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
using System;
using System.Runtime.InteropServices;
namespace Microsoft.ML.OnnxRuntime
{
class NativeApiStatus
{
private static string GetErrorMessage(IntPtr /*(ONNXStatus*)*/status)
{
IntPtr nativeString = NativeMethods.OrtGetErrorMessage(status);
2018-11-20 00:48:22 +00:00
string str = Marshal.PtrToStringAnsi(nativeString); //assumes charset = ANSI
return str;
}
/// <summary>
/// Checks the native Status if the errocode is OK/Success. Otherwise constructs an appropriate exception and throws.
/// Releases the native status object, as needed.
/// </summary>
/// <param name="nativeStatus"></param>
/// <throws></throws>
public static void VerifySuccess(IntPtr nativeStatus)
{
if (nativeStatus != IntPtr.Zero)
{
ErrorCode statusCode = NativeMethods.OrtGetErrorCode(nativeStatus);
2018-11-20 00:48:22 +00:00
string errorMessage = GetErrorMessage(nativeStatus);
NativeMethods.OrtReleaseStatus(nativeStatus);
2018-11-26 07:44:39 +00:00
throw new OnnxRuntimeException(statusCode, errorMessage);
2018-11-20 00:48:22 +00:00
}
}
}
}