ntminer 5 gadi atpakaļ
vecāks
revīzija
106a5a4478

+ 10 - 0
src/AppModels/MinerStudio/Vms/MinerClientViewModel.cs

@@ -956,6 +956,16 @@ namespace NTMiner.MinerStudio.Vms {
             }
             }
         }
         }
 
 
+        public int DiskSpaceMb {
+            get { return _data.DiskSpaceMb; }
+            set {
+                if (_data.DiskSpaceMb != value) {
+                    _data.DiskSpaceMb = value;
+                    OnPropertyChanged(nameof(DiskSpaceMb));
+                }
+            }
+        }
+
         public string DualCoinPool {
         public string DualCoinPool {
             get => _data.DualCoinPool;
             get => _data.DualCoinPool;
             set {
             set {

+ 56 - 5
src/NTMinerDataSchemas/Core/MinerServer/ClientData.cs

@@ -4,7 +4,9 @@ using NTMiner.Core.Gpus;
 using NTMiner.Report;
 using NTMiner.Report;
 using System;
 using System;
 using System.Collections.Generic;
 using System.Collections.Generic;
+using System.Linq;
 using System.Reflection;
 using System.Reflection;
+using System.Runtime.CompilerServices;
 
 
 namespace NTMiner.Core.MinerServer {
 namespace NTMiner.Core.MinerServer {
     public class ClientData : SpeedDto, IClientData {
     public class ClientData : SpeedDto, IClientData {
@@ -34,6 +36,7 @@ namespace NTMiner.Core.MinerServer {
 
 
         public static ClientData Create(IMinerData data) {
         public static ClientData Create(IMinerData data) {
             return new ClientData() {
             return new ClientData() {
+                #region
                 Id = data.Id,
                 Id = data.Id,
                 MineContextId = Guid.Empty,
                 MineContextId = Guid.Empty,
                 ClientId = data.ClientId,
                 ClientId = data.ClientId,
@@ -128,11 +131,13 @@ namespace NTMiner.Core.MinerServer {
                 MainCoinPoolDelayNumber = 0,
                 MainCoinPoolDelayNumber = 0,
                 MainCoinRejectPercent = 0,
                 MainCoinRejectPercent = 0,
                 DualCoinRejectPercent = 0
                 DualCoinRejectPercent = 0
+                #endregion
             };
             };
         }
         }
 
 
         public static ClientData Clone(ClientData data) {
         public static ClientData Clone(ClientData data) {
             return new ClientData() {
             return new ClientData() {
+                #region
                 Id = data.Id,
                 Id = data.Id,
                 MineContextId = data.MineContextId,
                 MineContextId = data.MineContextId,
                 MinerName = data.MinerName,
                 MinerName = data.MinerName,
@@ -227,6 +232,7 @@ namespace NTMiner.Core.MinerServer {
                 MainCoinRejectPercent = data.MainCoinRejectPercent,
                 MainCoinRejectPercent = data.MainCoinRejectPercent,
                 MainCoinPoolDelayNumber = data.MainCoinPoolDelayNumber,
                 MainCoinPoolDelayNumber = data.MainCoinPoolDelayNumber,
                 DualCoinPoolDelayNumber = data.DualCoinPoolDelayNumber
                 DualCoinPoolDelayNumber = data.DualCoinPoolDelayNumber
+                #endregion
             };
             };
         }
         }
 
 
@@ -249,8 +255,9 @@ namespace NTMiner.Core.MinerServer {
             out int mainCoinPoolDelayNumber, 
             out int mainCoinPoolDelayNumber, 
             out int dualCoinPoolDelayNumber, 
             out int dualCoinPoolDelayNumber, 
             out double mainCoinRejectPercent, 
             out double mainCoinRejectPercent, 
-            out double dualCoinRejectPercent) {
-
+            out double dualCoinRejectPercent,
+            out int diskSpaceMb) {
+            #region
             mainCoinPoolDelayNumber = 0;
             mainCoinPoolDelayNumber = 0;
             dualCoinPoolDelayNumber = 0;
             dualCoinPoolDelayNumber = 0;
             mainCoinRejectPercent = 0.0;
             mainCoinRejectPercent = 0.0;
@@ -287,6 +294,28 @@ namespace NTMiner.Core.MinerServer {
             if (speedDto.DualCoinTotalShare != 0) {
             if (speedDto.DualCoinTotalShare != 0) {
                 dualCoinRejectPercent = (speedDto.DualCoinRejectShare * 100.0) / speedDto.DualCoinTotalShare;
                 dualCoinRejectPercent = (speedDto.DualCoinRejectShare * 100.0) / speedDto.DualCoinTotalShare;
             }
             }
+            diskSpaceMb = GetMinDiskSpaceMb(speedDto.DiskSpace);
+            #endregion
+        }
+
+        private static int GetMinDiskSpaceMb(string diskSpace) {
+            // C:\21.4 Gb;D:\9.2 Gb;E:\27.1 Gb
+            if (string.IsNullOrEmpty(diskSpace)) {
+                return 0;
+            }
+            string[] parts = diskSpace.Split(new char[] { '\\' }, StringSplitOptions.RemoveEmptyEntries);
+            List<int> list = new List<int>();
+            foreach (string part in parts) {
+                if (char.IsDigit(part[0])) {
+                    if (double.TryParse(part.Substring(0, part.IndexOf(' ')), out double value)) {
+                        list.Add((int)value * 1024);
+                    }
+                }
+            }
+            if (list.Count == 0) {
+                return 0;
+            }
+            return list.Min();
         }
         }
 
 
         public static ClientData Create(ISpeedDto speedDto, string minerIp) {
         public static ClientData Create(ISpeedDto speedDto, string minerIp) {
@@ -295,8 +324,10 @@ namespace NTMiner.Core.MinerServer {
                 out int mainCoinPoolDelayNumber, 
                 out int mainCoinPoolDelayNumber, 
                 out int dualCoinPoolDelayNumber, 
                 out int dualCoinPoolDelayNumber, 
                 out double mainCoinRejectPercent, 
                 out double mainCoinRejectPercent, 
-                out double dualCoinRejectPercent);
+                out double dualCoinRejectPercent,
+                out int diskSpaceMb);
             return new ClientData() {
             return new ClientData() {
+                #region
                 Id = ObjectId.NewObjectId().ToString(),
                 Id = ObjectId.NewObjectId().ToString(),
                 MineContextId = speedDto.MineContextId,
                 MineContextId = speedDto.MineContextId,
                 MinerName = speedDto.MinerName,
                 MinerName = speedDto.MinerName,
@@ -390,11 +421,14 @@ namespace NTMiner.Core.MinerServer {
                 DualCoinPoolDelayNumber = dualCoinPoolDelayNumber,
                 DualCoinPoolDelayNumber = dualCoinPoolDelayNumber,
                 MainCoinPoolDelayNumber = mainCoinPoolDelayNumber,
                 MainCoinPoolDelayNumber = mainCoinPoolDelayNumber,
                 MainCoinRejectPercent = mainCoinRejectPercent,
                 MainCoinRejectPercent = mainCoinRejectPercent,
-                DualCoinRejectPercent = dualCoinRejectPercent
+                DualCoinRejectPercent = dualCoinRejectPercent,
+                DiskSpaceMb = diskSpaceMb
+                #endregion
             };
             };
         }
         }
 
 
         public void Update(MinerSign minerSign, out bool isChanged) {
         public void Update(MinerSign minerSign, out bool isChanged) {
+            #region
             this.LoginName = minerSign.LoginName;
             this.LoginName = minerSign.LoginName;
             isChanged = false;
             isChanged = false;
             if (!isChanged) {
             if (!isChanged) {
@@ -413,10 +447,12 @@ namespace NTMiner.Core.MinerServer {
                 isChanged = this.AESPasswordOn != minerSign.AESPasswordOn;
                 isChanged = this.AESPasswordOn != minerSign.AESPasswordOn;
             }
             }
             this.AESPasswordOn = minerSign.AESPasswordOn;
             this.AESPasswordOn = minerSign.AESPasswordOn;
+            #endregion
         }
         }
 
 
         public SpeedData ToSpeedData() {
         public SpeedData ToSpeedData() {
             return new SpeedData {
             return new SpeedData {
+                #region
                 SpeedOn = this.MinerActiveOn,
                 SpeedOn = this.MinerActiveOn,
                 AutoRestartKernelTimes = this.AutoRestartKernelTimes,
                 AutoRestartKernelTimes = this.AutoRestartKernelTimes,
                 AutoStartDelaySeconds = this.AutoStartDelaySeconds,
                 AutoStartDelaySeconds = this.AutoStartDelaySeconds,
@@ -494,6 +530,7 @@ namespace NTMiner.Core.MinerServer {
                 PeriodicRestartKernelMinutes = this.PeriodicRestartKernelMinutes,
                 PeriodicRestartKernelMinutes = this.PeriodicRestartKernelMinutes,
                 TotalPhysicalMemoryMb = this.TotalPhysicalMemoryMb,
                 TotalPhysicalMemoryMb = this.TotalPhysicalMemoryMb,
                 Version = this.Version
                 Version = this.Version
+                #endregion
             };
             };
         }
         }
 
 
@@ -542,6 +579,7 @@ namespace NTMiner.Core.MinerServer {
         /// <param name="speedDto"></param>
         /// <param name="speedDto"></param>
         /// <param name="isMinerDataChanged"></param>
         /// <param name="isMinerDataChanged"></param>
         public void Update(ISpeedDto speedDto, out bool isMinerDataChanged) {
         public void Update(ISpeedDto speedDto, out bool isMinerDataChanged) {
+            #region
             isMinerDataChanged = false;
             isMinerDataChanged = false;
             if (speedDto == null) {
             if (speedDto == null) {
                 return;
                 return;
@@ -663,13 +701,17 @@ namespace NTMiner.Core.MinerServer {
                 out int mainCoinPoolDelayNumber, 
                 out int mainCoinPoolDelayNumber, 
                 out int dualCoinPoolDelayNumber, 
                 out int dualCoinPoolDelayNumber, 
                 out double mainCoinRejectPercent, 
                 out double mainCoinRejectPercent, 
-                out double dualCoinRejectPercent);
+                out double dualCoinRejectPercent,
+                out int diskSpaceMb);
             this.MainCoinPoolDelayNumber = mainCoinPoolDelayNumber;
             this.MainCoinPoolDelayNumber = mainCoinPoolDelayNumber;
             this.DualCoinPoolDelayNumber = dualCoinPoolDelayNumber;
             this.DualCoinPoolDelayNumber = dualCoinPoolDelayNumber;
             this.MainCoinRejectPercent = mainCoinRejectPercent;
             this.MainCoinRejectPercent = mainCoinRejectPercent;
             this.DualCoinRejectPercent = dualCoinRejectPercent;
             this.DualCoinRejectPercent = dualCoinRejectPercent;
+            this.DiskSpaceMb = diskSpaceMb;
+            #endregion
         }
         }
 
 
+        #region GetMainCoinShareDelta
         public int GetMainCoinShareDelta(bool isPull) {
         public int GetMainCoinShareDelta(bool isPull) {
             if (_preMainCoinShare == 0) {
             if (_preMainCoinShare == 0) {
                 return 0;
                 return 0;
@@ -692,7 +734,9 @@ namespace NTMiner.Core.MinerServer {
             }
             }
             return delta;
             return delta;
         }
         }
+        #endregion
 
 
+        #region GetDualCoinShareDelta
         public int GetDualCoinShareDelta(bool isPull) {
         public int GetDualCoinShareDelta(bool isPull) {
             if (_preDualCoinShare == 0) {
             if (_preDualCoinShare == 0) {
                 return 0;
                 return 0;
@@ -715,7 +759,9 @@ namespace NTMiner.Core.MinerServer {
             }
             }
             return delta;
             return delta;
         }
         }
+        #endregion
 
 
+        #region GetMainCoinRejectShareDelta
         public int GetMainCoinRejectShareDelta(bool isPull) {
         public int GetMainCoinRejectShareDelta(bool isPull) {
             if (_preMainCoinRejectShare == 0) {
             if (_preMainCoinRejectShare == 0) {
                 return 0;
                 return 0;
@@ -736,7 +782,9 @@ namespace NTMiner.Core.MinerServer {
             }
             }
             return delta;
             return delta;
         }
         }
+        #endregion
 
 
+        #region GetDualCoinRejectShareDelta
         public int GetDualCoinRejectShareDelta(bool isPull) {
         public int GetDualCoinRejectShareDelta(bool isPull) {
             if (_preDualCoinRejectShare == 0) {
             if (_preDualCoinRejectShare == 0) {
                 return 0;
                 return 0;
@@ -759,6 +807,7 @@ namespace NTMiner.Core.MinerServer {
             }
             }
             return delta;
             return delta;
         }
         }
+        #endregion
 
 
         public string Id { get; set; }
         public string Id { get; set; }
 
 
@@ -798,6 +847,7 @@ namespace NTMiner.Core.MinerServer {
 
 
         public string OuterUserId { get; set; }
         public string OuterUserId { get; set; }
 
 
+        // 不会传到客户端
         [JsonIgnore]
         [JsonIgnore]
         public string AESPassword { get; set; }
         public string AESPassword { get; set; }
 
 
@@ -808,5 +858,6 @@ namespace NTMiner.Core.MinerServer {
         public int DualCoinPoolDelayNumber { get; set; }
         public int DualCoinPoolDelayNumber { get; set; }
         public double MainCoinRejectPercent { get; set; }
         public double MainCoinRejectPercent { get; set; }
         public double DualCoinRejectPercent { get; set; }
         public double DualCoinRejectPercent { get; set; }
+        public int DiskSpaceMb { get; set; }
     }
     }
 }
 }

+ 1 - 0
src/NTMinerDataSchemas/Core/MinerServer/IClientData.cs

@@ -23,5 +23,6 @@ namespace NTMiner.Core.MinerServer {
         int DualCoinPoolDelayNumber { get; }
         int DualCoinPoolDelayNumber { get; }
         double MainCoinRejectPercent { get; }
         double MainCoinRejectPercent { get; }
         double DualCoinRejectPercent { get; }
         double DualCoinRejectPercent { get; }
+        int DiskSpaceMb { get; }
     }
     }
 }
 }