public MineContext( string minerName, ICoin mainCoin, IPool mainCoinPool, IKernel kernel, IKernelInput kernelInput, IKernelOutput kernelOutput, ICoinKernel coinKernel, string mainCoinWallet, string commandLine, Dictionary <string, string> parameters, Dictionary <Guid, string> fragments, Dictionary <Guid, string> fileWriters, int[] useDevices) { this.Fragments = fragments; this.FileWriters = fileWriters; this.Id = Guid.NewGuid(); this.MinerName = minerName; this.MainCoin = mainCoin; this.MainCoinPool = mainCoinPool; this.Kernel = kernel; this.CoinKernel = coinKernel; this.MainCoinWallet = mainCoinWallet; this.AutoRestartKernelCount = 0; this.KernelSelfRestartCount = 0; this.CommandLine = commandLine ?? string.Empty; this.MineStartedOn = DateTime.MinValue; this.Parameters = parameters; this.UseDevices = useDevices; this.KernelInput = kernelInput; this.KernelOutput = kernelOutput; this.NewLogFileName(); }
public bool TryGetKernelInput(Guid id, out IKernelInput kernelInput) { InitOnece(); var result = _dicById.TryGetValue(id, out KernelInputData data); kernelInput = data; return(result); }
public KernelInputViewModel(IKernelInput data) : this(data.GetId()) { _name = data.Name; _args = data.Args; _isSupportDualMine = data.IsSupportDualMine; _dualFullArgs = data.DualFullArgs; _dualCoinGroupId = data.DualCoinGroupId; _dualWeightMin = data.DualWeightMin; _dualWeightMax = data.DualWeightMax; _isAutoDualWeight = data.IsAutoDualWeight; _dualWeightArg = data.DualWeightArg; }
public MineContext( bool isRestart, string minerName, ICoin mainCoin, IPool mainCoinPool, IKernel kernel, IKernelInput kernelInput, IKernelOutput kernelOutput, ICoinKernel coinKernel, string mainCoinWallet, string commandLine, Dictionary <string, string> parameters, Dictionary <Guid, string> fragments, Dictionary <Guid, string> fileWriters, int[] useDevices) { this.Fragments = fragments; this.FileWriters = fileWriters; this.Id = Guid.NewGuid(); this.IsRestart = isRestart; this.MinerName = minerName; this.MainCoin = mainCoin; this.MainCoinPool = mainCoinPool; this.Kernel = kernel; this.CoinKernel = coinKernel; this.MainCoinWallet = mainCoinWallet; this.AutoRestartKernelCount = 0; this.KernelSelfRestartCount = 0; this.CommandLine = commandLine ?? string.Empty; this.CreatedOn = DateTime.Now; this.Parameters = parameters; this.UseDevices = useDevices; this.KernelInput = kernelInput; this.KernelOutput = kernelOutput; string logFileName; if (this.CommandLine.Contains(NTKeyword.LogFileParameterName)) { this.KernelProcessType = KernelProcessType.Logfile; logFileName = $"{this.Kernel.Code}_{DateTime.Now.ToString("yyyy-MM-dd_HH-mm-ss_fff")}.log"; } else { this.KernelProcessType = KernelProcessType.Pip; logFileName = $"{kernel.Code}_pip_{DateTime.Now.Ticks.ToString()}.log"; } this.LogFileFullName = Path.Combine(SpecialPath.LogsDirFullName, logFileName); }
private static string GetDevicesArgs(IKernelInput kernelInput) { INTMinerContext ntminerContext = NTMinerContext.Instance; var gpuSet = ntminerContext.GpuSet; string devicesArgs = string.Empty; if (!string.IsNullOrWhiteSpace(kernelInput.DevicesArg)) { int[] useDevices = gpuSet.GetUseDevices(); if ((useDevices.Length != 0 && useDevices.Length != gpuSet.Count) || kernelInput.IsDeviceAllNotEqualsNone) { string separator = kernelInput.DevicesSeparator; // 因为空格在界面上不易被人读取所以以关键字代替空格 if (kernelInput.DevicesSeparator == NTKeyword.SpaceKeyword) { separator = " "; } List <string> gpuIndexes = new List <string>(); foreach (var index in useDevices) { int i = index; if (kernelInput.DeviceBaseIndex != 0) { i = index + kernelInput.DeviceBaseIndex; } string nText = NTKeyword.GetIndexChar(i, separator); gpuIndexes.Add(nText); } switch (gpuSet.GpuType) { case GpuType.Empty: break; case GpuType.NVIDIA: devicesArgs = $"{kernelInput.DevicesArg} {string.Join(separator, gpuIndexes.Select(a => $"{kernelInput.NDevicePrefix}{a}{kernelInput.NDevicePostfix}"))}"; break; case GpuType.AMD: devicesArgs = $"{kernelInput.DevicesArg} {string.Join(separator, gpuIndexes.Select(a => $"{kernelInput.ADevicePrefix}{a}{kernelInput.ADevicePostfix}"))}"; break; default: break; } } } return(devicesArgs); }
public KernelInputViewModel(IKernelInput data) : this(data.GetId()) { _name = data.Name; _args = data.Args; _isSupportDualMine = data.IsSupportDualMine; _dualWeightMin = data.DualWeightMin; _dualWeightMax = data.DualWeightMax; _isAutoDualWeight = data.IsAutoDualWeight; _dualWeightArg = data.DualWeightArg; _deviceBaseIndex = data.DeviceBaseIndex; _isDeviceAllNotEqualsNone = data.IsDeviceAllNotEqualsNone; _devicesArg = data.DevicesArg; _devicesSeparator = data.DevicesSeparator; _nDevicePrefix = data.NDevicePrefix; _nDevicePostfix = data.NDevicePostfix; _aDevicePrefix = data.ADevicePrefix; _aDevicePostfix = data.ADevicePostfix; }
private string GetDevicesArgs(IKernelInput kernelInput) { string devicesArgs = string.Empty; if (!string.IsNullOrWhiteSpace(kernelInput.DevicesArg)) { List <int> useDevices = this.GpuSet.GetUseDevices(); if ((useDevices.Count != 0 && useDevices.Count != GpuSet.Count) || kernelInput.IsDeviceAllNotEqualsNone) { string separator = kernelInput.DevicesSeparator; // 因为空格在界面上不易被人读取所以以关键字代替空格 if (kernelInput.DevicesSeparator == Consts.SpaceKeyword) { separator = " "; } if (string.IsNullOrEmpty(separator)) { List <string> gpuIndexes = new List <string>(); foreach (var index in useDevices) { int i = index; if (kernelInput.DeviceBaseIndex != 0) { i = index + kernelInput.DeviceBaseIndex; } string nText = i.ToString(); if (i > 9) { nText = gpuIndexChars[i - 10]; } gpuIndexes.Add(nText); } switch (GpuSet.GpuType) { case GpuType.Empty: break; case GpuType.NVIDIA: devicesArgs = $"{kernelInput.DevicesArg} {string.Join(separator, gpuIndexes.Select(a => $"{kernelInput.NDevicePrefix}{a}{kernelInput.NDevicePostfix}"))}"; break; case GpuType.AMD: devicesArgs = $"{kernelInput.DevicesArg} {string.Join(separator, gpuIndexes.Select(a => $"{kernelInput.ADevicePrefix}{a}{kernelInput.ADevicePostfix}"))}"; break; default: break; } } else { switch (GpuSet.GpuType) { case GpuType.Empty: break; case GpuType.NVIDIA: devicesArgs = $"{kernelInput.DevicesArg} {string.Join(separator, useDevices.Select(a => $"{kernelInput.NDevicePrefix}{a}{kernelInput.NDevicePostfix}"))}"; break; case GpuType.AMD: devicesArgs = $"{kernelInput.DevicesArg} {string.Join(separator, useDevices.Select(a => $"{kernelInput.ADevicePrefix}{a}{kernelInput.ADevicePostfix}"))}"; break; default: break; } } } } return(devicesArgs); }