public CoinKernelViewModel(ICoinKernel data) : this(data.GetId()) { _coinId = data.CoinId; _kernelId = data.KernelId; _sortNumber = data.SortNumber; _dualCoinGroupId = data.DualCoinGroupId; _args = data.Args; _notice = data.Notice; _supportedGpu = data.SupportedGpu; _isSupportPool1 = data.IsSupportPool1; // 复制,视为值对象,防止直接修改引用 _environmentVariables.AddRange(data.EnvironmentVariables.Select(a => new EnvironmentVariable(a))); // 复制,视为值对象,防止直接修改引用 _inputSegments.AddRange(data.InputSegments.Select(a => new InputSegment(a))); _inputSegmentVms.AddRange(_inputSegments.Select(a => new InputSegmentViewModel(a))); _fileWriterIds = data.FileWriterIds; _fragmentWriterIds = data.FragmentWriterIds; foreach (var writerId in _fileWriterIds) { if (AppContext.Instance.FileWriterVms.TryGetFileWriterVm(writerId, out FileWriterViewModel writerVm)) { _fileWriterVms.Add(writerVm); } } foreach (var writerId in _fragmentWriterIds) { if (AppContext.Instance.FragmentWriterVms.TryGetFragmentWriterVm(writerId, out FragmentWriterViewModel writerVm)) { _fragmentWriterVms.Add(writerVm); } } }
private static void BuildFragments(IServerContext serverContext, ICoinKernel coinKernel, Dictionary <string, string> parameters, out Dictionary <Guid, string> fileWriters, out Dictionary <Guid, string> fragments) { fileWriters = new Dictionary <Guid, string>(); fragments = new Dictionary <Guid, string>(); try { if (coinKernel.FragmentWriterIds != null && coinKernel.FragmentWriterIds.Count != 0) { foreach (var writerId in coinKernel.FragmentWriterIds) { if (serverContext.FragmentWriterSet.TryGetFragmentWriter(writerId, out IFragmentWriter writer)) { BuildFragment(parameters, fileWriters, fragments, writer); } } } if (coinKernel.FileWriterIds != null && coinKernel.FileWriterIds.Count != 0) { foreach (var writerId in coinKernel.FileWriterIds) { if (serverContext.FileWriterSet.TryGetFileWriter(writerId, out IFileWriter writer)) { BuildFragment(parameters, fileWriters, fragments, writer); } } } } catch (Exception e) { Logger.ErrorDebugLine(e); } }
public MineContext( string minerName, ICoin mainCoin, IPool mainCoinPool, IKernel kernel, ICoinKernel coinKernel, string mainCoinWallet, string commandLine, Dictionary <string, string> parameters, Dictionary <Guid, string> fragments, Dictionary <Guid, string> fileWriters) { 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; this.CreatedOn = DateTime.Now; this.PipeFileName = $"{kernel.Code}_pip_{DateTime.Now.Ticks.ToString()}.log"; this.Parameters = parameters; }
public static CoinProfile Create(INTMinerRoot root, MineWorkData mineWorkData, Guid coinId) { if (root.CoinSet.TryGetCoin(coinId, out ICoin coin)) { var data = GetCoinProfileData(mineWorkData, coin.GetId()); if (data == null) { Guid poolId = Guid.Empty; IPool pool = root.PoolSet.OrderBy(a => a.SortNumber).FirstOrDefault(a => a.CoinId == coinId); if (pool != null) { poolId = pool.GetId(); } string wallet = coin.TestWallet; Guid coinKernelId = Guid.Empty; ICoinKernel coinKernel = root.CoinKernelSet.OrderBy(a => a.SortNumber).FirstOrDefault(a => a.CoinId == coinId); if (coinKernel != null) { coinKernelId = coinKernel.GetId(); } data = CoinProfileData.CreateDefaultData(coinId, poolId, wallet, coinKernelId); } CoinProfile coinProfile = new CoinProfile(mineWorkData, data); return(coinProfile); } else { return(Empty); } }
public CoinKernelViewModel(ICoinKernel data) : this(data.GetId()) { _coinId = data.CoinId; _kernelId = data.KernelId; _dualCoinGroupId = data.DualCoinGroupId; _args = data.Args; _dualFullArgs = data.DualFullArgs; _notice = data.Notice; _supportedGpu = data.SupportedGpu; _isSupportPool1 = data.IsSupportPool1; // 复制,视为值对象,防止直接修改引用 _environmentVariables.AddRange(data.EnvironmentVariables.Select(a => new EnvironmentVariable(a))); // 复制,视为值对象,防止直接修改引用 _inputSegments.AddRange(data.InputSegments.Select(a => new InputSegment(a))); _inputSegmentVms.AddRange(_inputSegments.Select(a => new InputSegmentViewModel(a))); _gpuInputSegmentVms.AddRange(_inputSegmentVms.Where(a => a.TargetGpu.IsSupportedGpu(NTMinerRoot.Instance.GpuSet.GpuType))); _fileWriterIds = data.FileWriterIds; _fragmentWriterIds = data.FragmentWriterIds; _isHot = data.IsHot; _isRecommend = data.IsRecommend; foreach (var writerId in _fileWriterIds) { if (AppContext.Instance.FileWriterVms.TryGetFileWriterVm(writerId, out FileWriterViewModel writerVm)) { _fileWriterVms.Add(writerVm); } } foreach (var writerId in _fragmentWriterIds) { if (AppContext.Instance.FragmentWriterVms.TryGetFragmentWriterVm(writerId, out FragmentWriterViewModel writerVm)) { _fragmentWriterVms.Add(writerVm); } } }
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 TryGetCoinKernel(Guid kernelId, out ICoinKernel kernel) { InitOnece(); var r = _dicById.TryGetValue(kernelId, out CoinKernelData k); kernel = k; return(r); }
private CoinKernelProfile(INTMinerRoot root, ICoinKernel coinKernel) { _root = root; _data = GetCoinKernelProfileData(coinKernel.GetId()); if (_data == null) { throw new ValidationException("未获取到CoinKernelProfileData数据,请重试"); } }
public CoinKernelViewModel(ICoinKernel data) : this(data.GetId()) { _coinId = data.CoinId; _kernelId = data.KernelId; _sortNumber = data.SortNumber; _dualCoinGroupId = data.DualCoinGroupId; _args = data.Args; _description = data.Description; _supportedGpu = data.SupportedGpu; }
public CoinKernelViewModel(ICoinKernel data) : this(data.GetId()) { _coinId = data.CoinId; _kernelId = data.KernelId; _sortNumber = data.SortNumber; _dualCoinGroupId = data.DualCoinGroupId; _args = data.Args; _description = data.Description; _supportedGpu = data.SupportedGpu; // 复制,视为值对象,防止直接修改引用 _environmentVariables.AddRange(data.EnvironmentVariables.Select(a => new EnvironmentVariable { Key = a.Key, Value = a.Value })); }
public CoinKernelViewModel(ICoinKernel data) : this(data.GetId()) { _coinId = data.CoinId; _kernelId = data.KernelId; _sortNumber = data.SortNumber; _dualCoinGroupId = data.DualCoinGroupId; _args = data.Args; _notice = data.Notice; _supportedGpu = data.SupportedGpu; // 复制,视为值对象,防止直接修改引用 _environmentVariables.AddRange(data.EnvironmentVariables.Select(a => new EnvironmentVariable(a))); // 复制,视为值对象,防止直接修改引用 _inputSegments.AddRange(data.InputSegments.Select(a => new InputSegment(a))); _inputSegmentVms.AddRange(_inputSegments.Select(a => new InputSegmentViewModel(a))); }
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); }
public static bool GetIsSupportDualMine(this ICoinKernel coinKernel) { if (!NTMinerRoot.Instance.KernelSet.TryGetKernel(coinKernel.KernelId, out IKernel kernel)) { return(false); } if (!NTMinerRoot.Instance.KernelInputSet.TryGetKernelInput(kernel.KernelInputId, out IKernelInput kernelInput)) { return(false); } if (!kernelInput.IsSupportDualMine) { return(false); } return(coinKernel.DualCoinGroupId != Guid.Empty && NTMinerRoot.Instance.GroupSet.TryGetGroup(coinKernel.DualCoinGroupId, out IGroup _)); }
public MineContext( string minerName, ICoin mainCoin, IPool mainCoinPool, IKernel kernel, ICoinKernel coinKernel, string mainCoinWallet) { this.Id = Guid.NewGuid(); this.MinerName = minerName; this.MainCoin = mainCoin; this.MainCoinPool = mainCoinPool; this.Kernel = kernel; this.CoinKernel = coinKernel; this.MainCoinWallet = mainCoinWallet; this.ProcessDisappearedCound = 0; this.CreatedOn = DateTime.Now; this.PipeFileName = "pip_" + DateTime.Now.Ticks.ToString() + ".log"; }
public MineContext( string minerName, ICoin mainCoin, IPool mainCoinPool, IKernel kernel, ICoinKernel coinKernel, string mainCoinWallet, string commandLine) { 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.CommandLine = commandLine; this.CreatedOn = DateTime.Now; this.PipeFileName = "pip_" + DateTime.Now.Ticks.ToString() + ".log"; }
public void BuildFragments(ICoinKernel coinKernel, Dictionary <string, string> parameters, out Dictionary <Guid, string> fileWriters, out Dictionary <Guid, string> fragments) { fileWriters = new Dictionary <Guid, string>(); fragments = new Dictionary <Guid, string>(); try { foreach (var writerId in coinKernel.FragmentWriterIds) { if (FragmentWriterSet.TryGetFragmentWriter(writerId, out IFragmentWriter writer)) { BuildFragment(parameters, fileWriters, fragments, writer); } } foreach (var writerId in coinKernel.FileWriterIds) { if (FileWriterSet.TryGetFileWriter(writerId, out IFileWriter writer)) { BuildFragment(parameters, fileWriters, fragments, writer); } } } catch (Exception e) { Logger.ErrorDebugLine(e); } }