using Microsoft.Win32.SafeHandles;

// Standard SafeHandle pattern for vc_client* — guarantees vc_client_destroy runs even on an
// unhandled exception or a finalizer pass, which a bare `nint` field would not.
namespace VoiceCat.Interop;

internal sealed class VoiceCatClientHandle : SafeHandleZeroOrMinusOneIsInvalid
{
    public VoiceCatClientHandle() : base(ownsHandle: true) { }

    public new void SetHandle(nint handle) => base.SetHandle(handle);

    protected override bool ReleaseHandle()
    {
        NativeMethods.vc_client_destroy(handle);
        return true;
    }
}
