private static async Task <RedisStorage> PrepareRedisStorage() { var cludge = new Cludge(); await ProcessLine("params", cludge); Console.WriteLine("---------------------------------"); await ProcessLine("queues", cludge); Console.WriteLine("---------------------------------"); for (;;) { var line = Console.ReadLine()?.Trim(); if (string.IsNullOrEmpty(line)) { continue; } try { var b = await ProcessLine(line, cludge); if (b.HasValue) { return(b.Value ? cludge.RedisStorage : null); } } catch (Exception e) { Console.WriteLine($"Failed: {e.Message}"); } Console.WriteLine("---------------------------------"); } }
private static async Task <bool?> ProcessLine(string line, Cludge cludge) { var strings = line.Split(new[] { ' ', '\t', '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries); if (strings.Length == 2) { Params.SetValue(strings[0], strings[1]); Console.WriteLine("Success"); cludge.RedisStorage?.Dispose(); cludge.RedisStorage = null; return(null); } if (strings.Length == 1) { switch (strings[0].ToLower()) { case "params": Console.WriteLine(Params.AsString()); break; case "queues": cludge.RedisStorage = cludge.RedisStorage ?? new RedisStorage(Params.ConnectionString, Params.Database, Params.QueueSubstring); Console.WriteLine(string.Join(Environment.NewLine, (await cludge.RedisStorage.GetQueues()).OrderBy(x => (string)x))); break; case "go": return(true); case "no": case "break": case "exit": cludge.RedisStorage?.Dispose(); cludge.RedisStorage = null; return(false); default: Console.WriteLine($"Unknown command '{line}'"); break; } return(null); } Console.WriteLine($"Unknown command '{line}'"); return(null); }