// ReSharper disable MemberCanBePrivate.Global
// ReSharper disable UnusedAutoPropertyAccessor.Global
using System;
using System.Runtime.InteropServices;
using CUE.NET.Native;
namespace CUE.NET.Wrapper
{
///
/// Managed wrapper for CorsairProtocolDetails.
///
public class CorsairProtocolDetails
{
#region Properties & Fields
///
/// String containing version of SDK(like “1.0.0.1”).
/// Always contains valid value even if there was no CUE found.
///
public string SdkVersion { get; }
///
/// String containing version of CUE(like “1.0.0.1”) or NULL if CUE was not found.
///
public string ServerVersion { get; }
///
/// Integer that specifies version of protocol that is implemented by current SDK.
/// Numbering starts from 1.
/// Always contains valid value even if there was no CUE found.
///
public int SdkProtocolVersion { get; }
///
/// Integer that specifies version of protocol that is implemented by CUE.
/// Numbering starts from 1.
/// If CUE was not found then this value will be 0.
///
public int ServerProtocolVersion { get; }
///
/// Boolean that specifies if there were breaking changes between version of protocol implemented by server and client.
///
public byte BreakingChanges { get; }
#endregion
#region Constructors
///
/// Internal constructor of managed CorsairProtocolDetails.
///
/// The native CorsairProtocolDetails-struct
internal CorsairProtocolDetails(_CorsairProtocolDetails nativeDetails)
{
this.SdkVersion = nativeDetails.sdkVersion == IntPtr.Zero ? null : Marshal.PtrToStringAuto(nativeDetails.sdkVersion);
this.ServerVersion = nativeDetails.serverVersion == IntPtr.Zero ? null : Marshal.PtrToStringAuto(nativeDetails.serverVersion);
this.SdkProtocolVersion = nativeDetails.sdkProtocolVersion;
this.ServerProtocolVersion = nativeDetails.serverProtocolVersion;
this.BreakingChanges = nativeDetails.breakingChanges;
}
#endregion
}
}