/// <summary> /// Constructor. /// </summary> /// <param name="isAdminOverride"> /// Optionally overrides detection of elevated permissions enabled for the /// current process. This is used for testing. /// </param> /// <param name="socketPath"> /// Optionally overrides the default desktop service unix socket path. This /// is used for testing purposes. /// </param> public HyperVProxy(bool?isAdminOverride = null, string socketPath = null) { if (isAdminOverride.HasValue) { isAdmin = isAdminOverride.Value; } else { isAdmin = NeonHelper.HasElevatedPermissions; } if (isAdmin) { hypervClient = new HyperVClient(); } else { grpcChannel = NeonGrpcServices.CreateDesktopServiceChannel(socketPath); desktopService = grpcChannel.CreateGrpcService <IGrpcDesktopService>(); } }
/// <inheritdoc/> public void Dispose() { if (isDisposed) { return; } isDisposed = true; if (isAdmin) { hypervClient.Dispose(); hypervClient = null; } else { grpcChannel.Dispose(); grpcChannel = null; desktopService = null; } }