public static bool Parse(string[] arguments, CommandParameters parameters) { if (arguments == null || arguments.Length < 1) { DisplayUsage(); return(false); } if (parameters == null) { throw new ArgumentException("parameters argument is null"); } parameters.NumberSimulations = 2; parameters.NumberParallelLoops = 10; parameters.WaitTimeBetweenSimulations = 10000; parameters.ObjectLifetime = 100; parameters.ObjectPoolSize = 5; parameters.ObjectUsageLimit = 50; for (var index = 0; index < arguments.Length; index++) { if (arguments[index][0] != '-') { Console.WriteLine($"error-> option or option value is missing (argument index {index}): {arguments[index]}"); return(false); } if (arguments[index].Length <= 1) { continue; } var option = arguments[index][1]; index++; bool invalidValue; switch (option) { case numberSimulationFlag: invalidValue = ParseNumberSimulations(arguments, index, parameters); break; case numberParallelLoopsFlag: invalidValue = ParseNumberParallelLoops(arguments, index, parameters); break; case waitTimeBetweenSimulationsFlag: invalidValue = ParsenWaitTimeBetweenSimulations(arguments, index, parameters); break; case objectLifetimeFlag: invalidValue = ParseObjectLifetime(arguments, index, parameters); break; case objectPoolSizeFlag: invalidValue = ParseObjectPoolSize(arguments, index, parameters); break; case objectUsageLimitFlag: invalidValue = ParseObjectUsageLimit(arguments, index, parameters); break; default: Console.WriteLine($"error-> unknown option: {option}"); return(false); } if (!invalidValue) { return(false); } } return(true); }
private static bool ParseNumberSimulations(IReadOnlyList <string> arguments, int i, CommandParameters parameters) { if (arguments.Count <= i || string.IsNullOrEmpty(arguments[i])) { Console.WriteLine("error-> number of simulations value is missing"); return(false); } parameters.NumberSimulations = Assistant.GetIntegerValue(arguments[i]); return(true); }
private static bool ParseObjectUsageLimit(IReadOnlyList <string> arguments, int i, CommandParameters parameters) { if (arguments.Count <= i || string.IsNullOrEmpty(arguments[i])) { Console.WriteLine("error-> object usage limit value is missing"); return(false); } parameters.ObjectUsageLimit = Assistant.GetIntegerValue(arguments[i]); return(true); }