Beispiel #1
0
        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("---------------------------------");
            }
        }
Beispiel #2
0
        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);
        }