ntminer 5 ani în urmă
părinte
comite
00c9b169d9

+ 3 - 3
src/NTMinerDataSchemas/Core/MinerServer/ReportResponse.cs

@@ -4,11 +4,11 @@ using System.Collections.Generic;
 namespace NTMiner.Core.MinerServer {
     public class ReportResponse : ResponseBase {
         public ReportResponse() {
-            this.ServerState = ServerState.Empty;
+            this.ServerState = ServerStateResponse.Empty;
             this.NewServerMessages = new List<ServerMessageData>();
         }
 
-        public static ReportResponse Ok(ServerState serverState) {
+        public static ReportResponse Ok(ServerStateResponse serverState) {
             return new ReportResponse() {
                 StateCode = 200,
                 ReasonPhrase = "Ok",
@@ -17,7 +17,7 @@ namespace NTMiner.Core.MinerServer {
             };
         }
 
-        public ServerState ServerState { get; set; }
+        public ServerStateResponse ServerState { get; set; }
 
         // 基于请求携带的LocalServerMessageTimestamp,当新消息条数较少时直接在响应中携带给请求端
         public List<ServerMessageData> NewServerMessages { get; set; }

+ 1 - 1
src/NTMinerDataSchemas/NTMinerDataSchemas.csproj

@@ -154,7 +154,7 @@
     <Compile Include="Core\MinerServer\ServerMessageData.cs" />
     <Compile Include="Core\MinerServer\ServerMessagesRequest.cs" />
     <Compile Include="Core\MinerServer\ServerMessageType.cs" />
-    <Compile Include="ServerNode\ServerState.cs" />
+    <Compile Include="ServerNode\ServerStateResponse.cs" />
     <Compile Include="Core\Profile\GpuProfileExtension.cs" />
     <Compile Include="Core\IKernelOutputKeyword.cs" />
     <Compile Include="Core\ILocalMessage.cs" />

+ 6 - 6
src/NTMinerDataSchemas/ServerNode/ServerState.cs → src/NTMinerDataSchemas/ServerNode/ServerStateResponse.cs

@@ -4,8 +4,8 @@ namespace NTMiner.ServerNode {
     /// <summary>
     /// 这是返回给挖矿端的服务端状态模型
     /// </summary>
-    public class ServerState : IServerStateResponse {
-        public static readonly ServerState Empty = new ServerState {
+    public class ServerStateResponse : IServerStateResponse {
+        public static readonly ServerStateResponse Empty = new ServerStateResponse {
             JsonFileVersion = string.Empty,
             MinerClientVersion = string.Empty,
             Time = 0,
@@ -14,7 +14,7 @@ namespace NTMiner.ServerNode {
             WsStatus = WsStatus.Undefined
         };
 
-        public static ServerState FromLine(string line) {
+        public static ServerStateResponse FromLine(string line) {
             string jsonFileVersion = string.Empty;
             string minerClientVersion = string.Empty;
             long time = Timestamp.GetTimestamp();
@@ -43,7 +43,7 @@ namespace NTMiner.ServerNode {
                     Enum.TryParse(parts[5], out wsStatus);
                 }
             }
-            return new ServerState {
+            return new ServerStateResponse {
                 JsonFileVersion = jsonFileVersion,
                 MinerClientVersion = minerClientVersion,
                 Time = time,
@@ -53,7 +53,7 @@ namespace NTMiner.ServerNode {
             };
         }
 
-        public ServerState() { }
+        public ServerStateResponse() { }
 
         public string ToLine() {
             return $"{JsonFileVersion}|{MinerClientVersion}|{Time.ToString()}|{MessageTimestamp.ToString()}|{OutputKeywordTimestamp.ToString()}|{WsStatus.ToString()}";
@@ -80,7 +80,7 @@ namespace NTMiner.ServerNode {
         /// </summary>
         public long OutputKeywordTimestamp { get; set; }
         /// <summary>
-        /// <see cref="IServerStateResponse.WsStatus"/>
+        /// <see cref="ServerNode.WsStatus"/>
         /// </summary>
         public WsStatus WsStatus { get; set; }
     }

+ 1 - 1
src/NTMinerDataSchemas/ServerNode/WebApiServerState.cs

@@ -37,7 +37,7 @@
         /// </summary>
         public long OutputKeywordTimestamp { get; set; }
         /// <summary>
-        /// <see cref="IServerStateResponse.WsStatus"/>
+        /// <see cref="ServerNode.WsStatus"/>
         /// </summary>
         public WsStatus WsStatus { get; set; }
     }

+ 2 - 2
src/NTMinerRpcClient/Services/Official/AppSettingService.cs

@@ -18,12 +18,12 @@ namespace NTMiner.Services.Official {
         }
 
         #region GetJsonFileVersionAsync
-        public void GetJsonFileVersionAsync(string key, Action<ServerState> callback) {
+        public void GetJsonFileVersionAsync(string key, Action<ServerStateResponse> callback) {
             AppSettingRequest request = new AppSettingRequest {
                 Key = key
             };
             RpcRoot.PostAsync(RpcRoot.OfficialServerHost, RpcRoot.OfficialServerPort, _controllerName, nameof(IAppSettingController.GetJsonFileVersion), request, (string line, Exception e) => {
-                callback?.Invoke(ServerState.FromLine(line));
+                callback?.Invoke(ServerStateResponse.FromLine(line));
             }, timeountMilliseconds: 10 * 1000);
         }
         #endregion

+ 1 - 1
src/WebApiServer/Controllers/AppSettingController.cs

@@ -15,7 +15,7 @@ namespace NTMiner.Controllers {
 
         [HttpPost]
         public string GetJsonFileVersion([FromBody]AppSettingRequest request) {
-            ServerState serverState = WebApiRoot.GetServerState(request.Key);
+            ServerStateResponse serverState = WebApiRoot.ServerStateResponse(request.Key);
             return serverState.ToLine();
         }
 

+ 1 - 1
src/WebApiServer/Controllers/ReportController.cs

@@ -14,7 +14,7 @@ namespace NTMiner.Controllers {
                 WebApiRoot.ClientDataSet.ReportSpeed(speedData, MinerIp);
                 if (Version.TryParse(speedData.Version, out Version version)) {
                     string jsonVersionKey = HomePath.GetServerJsonVersion(version);
-                    var response = ReportResponse.Ok(WebApiRoot.GetServerState(jsonVersionKey));
+                    var response = ReportResponse.Ok(WebApiRoot.ServerStateResponse(jsonVersionKey));
                     if (speedData.LocalServerMessageTimestamp.AddSeconds(1) < WebApiRoot.ServerMessageTimestamp) {
                         var list = WebApiRoot.ServerMessageSet.GetServerMessages(speedData.LocalServerMessageTimestamp);
                         // 如果服务器新消息少于10条直接在上报算力时的响应消息中携带上,如果较多就算了推迟到用户切换到消息界面查看时再获取

+ 36 - 30
src/WebApiServer/WebApiRoot.cs

@@ -131,36 +131,6 @@ namespace NTMiner {
             }
         }
 
-        public static LiteDatabase CreateLocalDb() {
-            return new LiteDatabase($"filename={SpecialPath.LocalDbFileFullName}");
-        }
-
-        public static ServerState GetServerState(string jsonVersionKey) {
-            string jsonVersion = string.Empty;
-            string minerClientVersion = string.Empty;
-            try {
-                var fileData = NTMinerFileSet.LatestMinerClientFile;
-                minerClientVersion = fileData != null ? fileData.Version : string.Empty;
-                if (!VirtualRoot.LocalAppSettingSet.TryGetAppSetting(jsonVersionKey, out IAppSetting data) || data.Value == null) {
-                    jsonVersion = string.Empty;
-                }
-                else {
-                    jsonVersion = data.Value.ToString();
-                }
-            }
-            catch (Exception e) {
-                Logger.ErrorDebugLine(e);
-            }
-            return new ServerState {
-                JsonFileVersion = jsonVersion,
-                MinerClientVersion = minerClientVersion,
-                Time = Timestamp.GetTimestamp(),
-                MessageTimestamp = Timestamp.GetTimestamp(ServerMessageTimestamp),
-                OutputKeywordTimestamp = Timestamp.GetTimestamp(KernelOutputKeywordTimestamp),
-                WsStatus = WsServerNodeSet.WsStatus
-            };
-        }
-
         static WebApiRoot() {
         }
 
@@ -198,6 +168,42 @@ namespace NTMiner {
 
         public static DateTime KernelOutputKeywordTimestamp { get; private set; }
 
+        public static LiteDatabase CreateLocalDb() {
+            return new LiteDatabase($"filename={SpecialPath.LocalDbFileFullName}");
+        }
+
+        /// <summary>
+        /// 因为客户端具有不同的ClientVersion,考虑到兼容性问题将来可能不同版本的客户端需要获取不同版本的server.json,所以
+        /// 服务端用返回什么版本的server.json应由客户端自己决定,所以该方法有个jsonVersionKey入参,这个入参就是来自客户端。
+        /// </summary>
+        /// <param name="jsonVersionKey">server.json的版本</param>
+        /// <returns></returns>
+        public static ServerStateResponse ServerStateResponse(string jsonVersionKey) {
+            string jsonVersion = string.Empty;
+            string minerClientVersion = string.Empty;
+            try {
+                var fileData = NTMinerFileSet.LatestMinerClientFile;
+                minerClientVersion = fileData != null ? fileData.Version : string.Empty;
+                if (!VirtualRoot.LocalAppSettingSet.TryGetAppSetting(jsonVersionKey, out IAppSetting data) || data.Value == null) {
+                    jsonVersion = string.Empty;
+                }
+                else {
+                    jsonVersion = data.Value.ToString();
+                }
+            }
+            catch (Exception e) {
+                Logger.ErrorDebugLine(e);
+            }
+            return new ServerStateResponse {
+                JsonFileVersion = jsonVersion,
+                MinerClientVersion = minerClientVersion,
+                Time = Timestamp.GetTimestamp(),
+                MessageTimestamp = Timestamp.GetTimestamp(ServerMessageTimestamp),
+                OutputKeywordTimestamp = Timestamp.GetTimestamp(KernelOutputKeywordTimestamp),
+                WsStatus = WsServerNodeSet.WsStatus
+            };
+        }
+
         public static void UpdateServerMessageTimestamp() {
             var first = ServerMessageSet.AsEnumerable().OrderByDescending(a => a.Timestamp).FirstOrDefault();
             if (first == null) {