コード例 #1
0
ファイル: MineContext.cs プロジェクト: nextbtc/NtMiner
        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();
        }
コード例 #2
0
        public bool TryGetKernelInput(Guid id, out IKernelInput kernelInput)
        {
            InitOnece();
            var result = _dicById.TryGetValue(id, out KernelInputData data);

            kernelInput = data;
            return(result);
        }
コード例 #3
0
 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;
 }
コード例 #4
0
            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);
            }
コード例 #5
0
        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);
        }
コード例 #6
0
 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;
 }
コード例 #7
0
        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);
        }