source code checkin

This commit is contained in:
Brett Hewitson 2021-01-07 16:23:23 +10:00
parent 5f8fb2c825
commit 7e57b72e35
675 changed files with 168433 additions and 0 deletions

View file

@ -0,0 +1,49 @@
using ServerManagerTool.Common.Utils;
using System;
using System.Globalization;
using System.Numerics;
using System.Windows.Data;
namespace ServerManagerTool.Common.Converters
{
public class ProcessorAffinityConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if (!BigInteger.TryParse(value.ToString(), out BigInteger affinity))
return "Invalid";
if (!ProcessUtils.IsProcessorAffinityValid(affinity))
return "Invalid";
if (affinity == BigInteger.Zero)
return "All";
var result = string.Empty;
var delimiter = string.Empty;
var index = 0;
while (true)
{
var cpuValue = (BigInteger)Math.Pow(2, index);
if (cpuValue > affinity)
break;
if ((affinity & cpuValue) == cpuValue)
{
result = $"{result}{delimiter}{index}";
delimiter = ", ";
}
index++;
}
return result;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new InvalidOperationException("ProcessorAffinityConverter can only be used OneWay.");
}
}
}