浏览代码

PRS 7.16b

Kenric Nugteren 2 年之前
父节点
当前提交
6154c32964
共有 1 个文件被更改,包括 22 次插入2 次删除
  1. 22 2
      inabox.client.rest/InABox.Client.Rest/RestClient.cs

+ 22 - 2
inabox.client.rest/InABox.Client.Rest/RestClient.cs

@@ -59,8 +59,28 @@ namespace InABox.Clients
         public RestClient(string server) : this(server, false)
         {
         }
-        
-        public static string Ping(string[] urls, out DatabaseInfo info)
+
+        public static string? Ping(string[] urls)
+        {
+            string? result = null;
+            List<Task<Tuple<string, bool>>> pings = urls.Select(x => Task.Run(
+                () => new Tuple<string, bool>(x, new RestClient<User>(x).Ping())
+            )).ToList();
+            while (pings.Count > 0)
+            {
+                var ping = Task.WhenAny(pings).Result;
+                if (ping.Status == TaskStatus.RanToCompletion && ping.Result.Item2)
+                {
+                    result = ping.Result.Item1;
+                    break;
+                }
+                else
+                    pings.Remove(ping);
+            }
+            return result;
+        }
+
+        public static string Info(string[] urls, out DatabaseInfo info)
         {
             var result = "";
             info = new DatabaseInfo();