mirror of
https://github.com/tribufu/ServerManagers
synced 2026-05-06 15:17:34 +00:00
source code checkin
This commit is contained in:
parent
5f8fb2c825
commit
7e57b72e35
675 changed files with 168433 additions and 0 deletions
|
|
@ -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.");
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue