public static bool Wait <T1>(T1 task, CancellationTokenSource cancel = null) where T1 : Task { var wm = @"|/-\"; var i = 0; Console.CursorVisible = false; while (!task.IsCompleted) { Thread.Sleep(400); if (Console.KeyAvailable) { Console.ReadKey(true); Console.CursorVisible = true; if (Prompt.GetYesNo("\rCancel Request?", false)) { cancel.Cancel(); BaseCmd.Error("Request Cancelled!"); break; } Console.CursorVisible = false; } Console.Write('\r' + wm[i].ToString()); i = (i + 1) % 4; } Console.CursorVisible = true; return(task.IsCompleted); }
public static void Load(string fname) { try { using (StreamReader sr = File.OpenText(fname)) { var list = JsonSerializer.Deserialize <List <T> >(sr.ReadToEnd(), new JsonSerializerOptions { Converters = { new ServerJsonConverter(), new AIS.ActionJsonConverter(), new AIS.GridActionJsonConverter() } }); if (list != null && list.Count > 0) { List = list; Current = List.First(); } else { BaseCmd.Warning("No data to load!"); } } } catch (Exception e) { BaseCmd.Error(e.Message); } }
public void Submit() { if (ServerCtx.Current is null) { BaseCmd.Error("No Server Context!"); } else if (ServerCtx.Current.Server.AuthResponse is null) { BaseCmd.Error("{0} not connected!", ServerCtx.Current.Id); } else { var cancel = new CancellationTokenSource(); try { var t = ServerCtx.Current.Server.RequestAsync <JsonElement>(Request, cancel); if (Wait(t, cancel)) { Responses.Add(new Response <T1>() { Request = Request, Result = t.Result }); BaseCmd.Success("Responses {0}.", Responses.Count); } } catch (Exception ex) { BaseCmd.Error("Request failed!\n{0}", ex.Message); } } }
public static void Save(string fname) { if (!File.Exists(fname) || Prompt.GetYesNo("Do you want to overwrite existing file?", false)) { try { using (StreamWriter sw = File.CreateText(fname)) { sw.Write(JsonSerializer.Serialize(List)); } } catch (Exception e) { BaseCmd.Error(e.Message); } } }