/// <summary> /// 从给定的speedData中提取出主币矿池延时,辅币矿池延时,主币拒绝率,辅币拒绝率。 /// </summary> private static void Extract( ISpeedDto speedDto, out int mainCoinPoolDelayNumber, out int dualCoinPoolDelayNumber, out double mainCoinRejectPercent, out double dualCoinRejectPercent, out int diskSpaceMb) { #region mainCoinPoolDelayNumber = 0; dualCoinPoolDelayNumber = 0; mainCoinRejectPercent = 0.0; dualCoinRejectPercent = 0.0; if (!string.IsNullOrEmpty(speedDto.MainCoinPoolDelay)) { string text = speedDto.MainCoinPoolDelay.Trim(); int count = 0; for (int i = 0; i < text.Length; i++) { if (!char.IsNumber(text[i])) { count = i; break; } } if (count != 0) { mainCoinPoolDelayNumber = int.Parse(text.Substring(0, count)); } } if (!string.IsNullOrEmpty(speedDto.DualCoinPoolDelay)) { string text = speedDto.DualCoinPoolDelay.Trim(); int count = 0; for (int i = 0; i < text.Length; i++) { if (!char.IsNumber(text[i])) { count = i; break; } } if (count != 0) { dualCoinPoolDelayNumber = int.Parse(text.Substring(0, count)); } } if (speedDto.MainCoinTotalShare != 0) { mainCoinRejectPercent = (speedDto.MainCoinRejectShare * 100.0) / speedDto.MainCoinTotalShare; } if (speedDto.DualCoinTotalShare != 0) { dualCoinRejectPercent = (speedDto.DualCoinRejectShare * 100.0) / speedDto.DualCoinTotalShare; } diskSpaceMb = GetMinDiskSpaceMb(speedDto.DiskSpace); #endregion }
/// <summary> /// 上报算力时。 /// 因为只有MinerData具有的成员发生了变化时才需要持久化所以该非法输出isMinerDataChanged参数以表示MinerData的成员是否发生了变化。 /// </summary> /// <param name="speedDto"></param> /// <param name="minerIp"></param> /// <param name="isMinerDataChanged"></param> public void Update(ISpeedDto speedDto, string minerIp, out bool isMinerDataChanged) { Update(speedDto, out isMinerDataChanged); if (!isMinerDataChanged && minerIp != this.MinerIp) { isMinerDataChanged = true; } this.MinerIp = minerIp; }
/// <summary> /// 上报算力时和拉取算力时。 /// 因为只有MinerData具有的成员发生了变化时才需要持久化所以该非法输出isMinerDataChanged参数以表示MinerData的成员是否发生了变化。 /// </summary> /// <param name="speedDto"></param> /// <param name="isMinerDataChanged"></param> public void Update(ISpeedDto speedDto, out bool isMinerDataChanged) { #region isMinerDataChanged = false; if (speedDto == null) { return; } _preUpdateOn = DateTime.Now; if (_preMainCoin != this.MainCoinCode) { _preMainCoinShare = 0; _preMainCoinRejectShare = 0; } else { _preMainCoinShare = this.MainCoinTotalShare; _preMainCoinRejectShare = this.MainCoinRejectShare; } _preMainCoin = this.MainCoinCode; if (_preDualCoin != this.DualCoinCode) { _preDualCoinShare = 0; _preDualCoinRejectShare = 0; } else { _preDualCoinShare = this.DualCoinTotalShare; _preDualCoinRejectShare = this.DualCoinRejectShare; } _preDualCoin = this.DualCoinCode; #region MinerData if (!isMinerDataChanged) { isMinerDataChanged = this.ClientId != speedDto.ClientId; } this.ClientId = speedDto.ClientId; if (!isMinerDataChanged) { isMinerDataChanged = this.MACAddress != speedDto.MACAddress; } this.MACAddress = speedDto.MACAddress; if (!isMinerDataChanged) { isMinerDataChanged = this.LocalIp != speedDto.LocalIp; } this.LocalIp = speedDto.LocalIp; if (!isMinerDataChanged) { isMinerDataChanged = this.MinerName != speedDto.MinerName; } this.MinerName = speedDto.MinerName; if (!isMinerDataChanged) { isMinerDataChanged = this.IsOuterUserEnabled != speedDto.IsOuterUserEnabled; } this.IsOuterUserEnabled = speedDto.IsOuterUserEnabled; this.ReportOuterUserId = speedDto.ReportOuterUserId; #endregion this.MineContextId = speedDto.MineContextId; this.IsAutoBoot = speedDto.IsAutoBoot; this.IsAutoStart = speedDto.IsAutoStart; this.AutoStartDelaySeconds = speedDto.AutoStartDelaySeconds; this.IsAutoRestartKernel = speedDto.IsAutoRestartKernel; this.AutoRestartKernelTimes = speedDto.AutoRestartKernelTimes; this.IsNoShareRestartKernel = speedDto.IsNoShareRestartKernel; this.NoShareRestartKernelMinutes = speedDto.NoShareRestartKernelMinutes; this.IsNoShareRestartComputer = speedDto.IsNoShareRestartComputer; this.NoShareRestartComputerMinutes = speedDto.NoShareRestartComputerMinutes; this.IsPeriodicRestartKernel = speedDto.IsPeriodicRestartKernel; this.PeriodicRestartKernelHours = speedDto.PeriodicRestartKernelHours; this.IsPeriodicRestartComputer = speedDto.IsPeriodicRestartComputer; this.PeriodicRestartComputerHours = speedDto.PeriodicRestartComputerHours; this.PeriodicRestartComputerMinutes = speedDto.PeriodicRestartComputerMinutes; this.PeriodicRestartKernelMinutes = speedDto.PeriodicRestartKernelMinutes; this.IsAutoStopByCpu = speedDto.IsAutoStopByCpu; this.IsAutoStartByCpu = speedDto.IsAutoStartByCpu; this.CpuStopTemperature = speedDto.CpuStopTemperature; this.CpuStartTemperature = speedDto.CpuStartTemperature; this.CpuLETemperatureSeconds = speedDto.CpuLETemperatureSeconds; this.CpuGETemperatureSeconds = speedDto.CpuGETemperatureSeconds; this.CpuPerformance = speedDto.CpuPerformance; this.CpuTemperature = speedDto.CpuTemperature; this.IsRaiseHighCpuEvent = speedDto.IsRaiseHighCpuEvent; this.HighCpuPercent = speedDto.HighCpuPercent; this.HighCpuSeconds = speedDto.HighCpuSeconds; this.GpuDriver = speedDto.GpuDriver; this.GpuType = speedDto.GpuType; this.OSName = speedDto.OSName; this.OSVirtualMemoryMb = speedDto.OSVirtualMemoryMb; this.GpuInfo = speedDto.GpuInfo; this.CpuId = speedDto.CpuId; this.Version = speedDto.Version; this.IsMining = speedDto.IsMining; this.BootOn = speedDto.BootOn; this.MineStartedOn = speedDto.MineStartedOn; this.DiskSpace = speedDto.DiskSpace; this.MainCoinCode = speedDto.MainCoinCode; this.MainCoinTotalShare = speedDto.MainCoinTotalShare; this.MainCoinRejectShare = speedDto.MainCoinRejectShare; this.MainCoinSpeed = speedDto.MainCoinSpeed; this.MainCoinPool = speedDto.MainCoinPool; this.MainCoinWallet = speedDto.MainCoinWallet; this.Kernel = speedDto.Kernel; this.IsDualCoinEnabled = speedDto.IsDualCoinEnabled; this.DualCoinPool = speedDto.DualCoinPool; this.DualCoinWallet = speedDto.DualCoinWallet; this.DualCoinCode = speedDto.DualCoinCode; this.DualCoinTotalShare = speedDto.DualCoinTotalShare; this.DualCoinRejectShare = speedDto.DualCoinRejectShare; this.DualCoinSpeed = speedDto.DualCoinSpeed; this.KernelCommandLine = speedDto.KernelCommandLine; this.MainCoinSpeedOn = speedDto.MainCoinSpeedOn; this.DualCoinSpeedOn = speedDto.DualCoinSpeedOn; this.GpuTable = speedDto.GpuTable; this.MainCoinPoolDelay = speedDto.MainCoinPoolDelay; this.DualCoinPoolDelay = speedDto.DualCoinPoolDelay; this.IsFoundOneGpuShare = speedDto.IsFoundOneGpuShare; this.IsRejectOneGpuShare = speedDto.IsRejectOneGpuShare; this.IsGotOneIncorrectGpuShare = speedDto.IsGotOneIncorrectGpuShare; this.MineWorkId = speedDto.MineWorkId; this.MineWorkName = speedDto.MineWorkName; this.KernelSelfRestartCount = speedDto.KernelSelfRestartCount - 1;// 需要减1 this.LocalServerMessageTimestamp = speedDto.LocalServerMessageTimestamp; this.TotalPhysicalMemoryMb = speedDto.TotalPhysicalMemoryMb; this.MinerActiveOn = DateTime.Now;// 现在时间 this.IsAutoDisableWindowsFirewall = speedDto.IsAutoDisableWindowsFirewall; this.IsDisableAntiSpyware = speedDto.IsDisableAntiSpyware; this.IsDisableUAC = speedDto.IsDisableUAC; this.IsDisableWAU = speedDto.IsDisableWAU; Extract( speedDto, out int mainCoinPoolDelayNumber, out int dualCoinPoolDelayNumber, out double mainCoinRejectPercent, out double dualCoinRejectPercent, out int diskSpaceMb); this.MainCoinPoolDelayNumber = mainCoinPoolDelayNumber; this.DualCoinPoolDelayNumber = dualCoinPoolDelayNumber; this.MainCoinRejectPercent = mainCoinRejectPercent; this.DualCoinRejectPercent = dualCoinRejectPercent; this.DiskSpaceMb = diskSpaceMb; #endregion }
public static ClientData Create(ISpeedDto speedDto, string minerIp) { Extract( speedDto, out int mainCoinPoolDelayNumber, out int dualCoinPoolDelayNumber, out double mainCoinRejectPercent, out double dualCoinRejectPercent, out int diskSpaceMb); return(new ClientData() { #region Id = ObjectId.NewObjectId().ToString(), MineContextId = speedDto.MineContextId, MinerName = speedDto.MinerName, CpuId = speedDto.CpuId, MinerIp = minerIp, CreatedOn = DateTime.Now, MinerActiveOn = DateTime.Now, GroupId = Guid.Empty, WorkId = Guid.Empty,// 这是服务端指定的作业,不受客户端的影响 WindowsLoginName = string.Empty, WindowsPassword = string.Empty, MACAddress = speedDto.MACAddress, LocalIp = speedDto.LocalIp, ClientId = speedDto.ClientId, IsAutoBoot = speedDto.IsAutoBoot, IsAutoStart = speedDto.IsAutoStart, AutoStartDelaySeconds = speedDto.AutoStartDelaySeconds, IsAutoRestartKernel = speedDto.IsAutoRestartKernel, AutoRestartKernelTimes = speedDto.AutoRestartKernelTimes, IsNoShareRestartKernel = speedDto.IsNoShareRestartKernel, NoShareRestartKernelMinutes = speedDto.NoShareRestartKernelMinutes, IsNoShareRestartComputer = speedDto.IsNoShareRestartComputer, NoShareRestartComputerMinutes = speedDto.NoShareRestartComputerMinutes, IsPeriodicRestartKernel = speedDto.IsPeriodicRestartKernel, PeriodicRestartKernelHours = speedDto.PeriodicRestartKernelHours, IsPeriodicRestartComputer = speedDto.IsPeriodicRestartComputer, PeriodicRestartComputerHours = speedDto.PeriodicRestartComputerHours, PeriodicRestartComputerMinutes = speedDto.PeriodicRestartComputerMinutes, PeriodicRestartKernelMinutes = speedDto.PeriodicRestartKernelMinutes, IsAutoStopByCpu = speedDto.IsAutoStopByCpu, IsAutoStartByCpu = speedDto.IsAutoStartByCpu, CpuStopTemperature = speedDto.CpuStopTemperature, CpuStartTemperature = speedDto.CpuStartTemperature, CpuLETemperatureSeconds = speedDto.CpuLETemperatureSeconds, CpuGETemperatureSeconds = speedDto.CpuGETemperatureSeconds, CpuTemperature = speedDto.CpuTemperature, CpuPerformance = speedDto.CpuPerformance, IsRaiseHighCpuEvent = speedDto.IsRaiseHighCpuEvent, HighCpuPercent = speedDto.HighCpuPercent, HighCpuSeconds = speedDto.HighCpuSeconds, GpuDriver = speedDto.GpuDriver, GpuType = speedDto.GpuType, OSName = speedDto.OSName, OSVirtualMemoryMb = speedDto.OSVirtualMemoryMb, TotalPhysicalMemoryMb = speedDto.TotalPhysicalMemoryMb, GpuInfo = speedDto.GpuInfo, Version = speedDto.Version, IsMining = speedDto.IsMining, BootOn = speedDto.BootOn, MineStartedOn = speedDto.MineStartedOn, MainCoinCode = speedDto.MainCoinCode, MainCoinTotalShare = speedDto.MainCoinTotalShare, MainCoinRejectShare = speedDto.MainCoinRejectShare, MainCoinSpeed = speedDto.MainCoinSpeed, MainCoinPool = speedDto.MainCoinPool, MainCoinWallet = speedDto.MainCoinWallet, Kernel = speedDto.Kernel, IsDualCoinEnabled = speedDto.IsDualCoinEnabled, DualCoinPool = speedDto.DualCoinPool, DualCoinWallet = speedDto.DualCoinWallet, DualCoinCode = speedDto.DualCoinCode, DualCoinTotalShare = speedDto.DualCoinTotalShare, DualCoinRejectShare = speedDto.DualCoinRejectShare, DualCoinSpeed = speedDto.DualCoinSpeed, KernelCommandLine = speedDto.KernelCommandLine, MainCoinSpeedOn = speedDto.MainCoinSpeedOn, DualCoinSpeedOn = speedDto.DualCoinSpeedOn, GpuTable = speedDto.GpuTable, MineWorkId = speedDto.MineWorkId, MineWorkName = speedDto.MineWorkName, DiskSpace = speedDto.DiskSpace, MainCoinPoolDelay = speedDto.MainCoinPoolDelay, DualCoinPoolDelay = speedDto.DualCoinPoolDelay, IsFoundOneGpuShare = speedDto.IsFoundOneGpuShare, IsRejectOneGpuShare = speedDto.IsRejectOneGpuShare, IsGotOneIncorrectGpuShare = speedDto.IsGotOneIncorrectGpuShare, KernelSelfRestartCount = speedDto.KernelSelfRestartCount - 1,// 需要减1 LocalServerMessageTimestamp = speedDto.LocalServerMessageTimestamp, AESPassword = string.Empty, AESPasswordOn = DateTime.MinValue, IsAutoDisableWindowsFirewall = speedDto.IsAutoDisableWindowsFirewall, IsDisableAntiSpyware = speedDto.IsDisableAntiSpyware, IsDisableUAC = speedDto.IsDisableUAC, IsDisableWAU = speedDto.IsDisableWAU, IsOnline = false, NetActiveOn = DateTime.MinValue, LoginName = string.Empty, IsOuterUserEnabled = speedDto.IsOuterUserEnabled, OuterUserId = string.Empty, ReportOuterUserId = speedDto.ReportOuterUserId, WorkerName = string.Empty, DualCoinPoolDelayNumber = dualCoinPoolDelayNumber, MainCoinPoolDelayNumber = mainCoinPoolDelayNumber, MainCoinRejectPercent = mainCoinRejectPercent, DualCoinRejectPercent = dualCoinRejectPercent, DiskSpaceMb = diskSpaceMb #endregion }); }