static void Main(string[] args) { if (args.Length > 0 && args[0] == "worker") { var dotq = new DotqApi(); var worker = dotq.CreateWorker(); worker.StartConsumerLoop(new TimeSpan(0, 0, 50)); } if (args.Length > 0 && args[0] == "client-1") { var dotq = new DotqApi(); var task = new AddTask((5, 5)); var handle = dotq.Delay(task); handle.Wait(); var result = handle.GetResult(); Console.WriteLine($"Result :{result}"); } if (args.Length > 0 && args[0] == "client-2") { var dotq = new DotqApi(); var task = new ListSum(new List <int> { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }); var handle = dotq.Build(task, firstTaskResult => { Console.WriteLine($"first is executed {firstTaskResult}"); var handle2 = dotq.Build(new AddTask((firstTaskResult, 5)), o1 => { Console.WriteLine($"Chain result is {o1}"); });
public void Test_TaskEnqueueAndExecuting() { ConnectionMultiplexer redis = ConnectionMultiplexer.Connect("localhost"); var m = new RedisTaskQueue(redis); m.Clear(); var mult = new MultiplyTask(new Inp { x = 4, y = 5 }); var add = new AddTask(new (5, 6)); var concat = new ConcatTask(new Inp2 { x = new List <string>() { "Hello", " ", "World", "!" } }); var listSum = new ListSum(new List <int> { 1, 2, 3, 4, 5 }); m.Enqueue(mult); m.Enqueue(add); m.Enqueue(concat); m.Enqueue(listSum); var registry = (ITaskRegistry)TaskRegistry.Instance; registry.Clear(); registry.DiscoverTasks(); for (long i = 0; i < m.Length(); i++) { var task = m.Dequeue(); task.Execute(); if (i == 0) { var res = (int)task.GetObjectResult(); Assert.Equal(20, res); } if (i == 1) { var res = (int)task.GetObjectResult(); Assert.Equal(11, res); } if (i == 2) { var res = (string)task.GetObjectResult(); Assert.Equal("Hello World!", res); } if (i == 3) { var res = (int)task.GetObjectResult(); Assert.Equal(5 * 6 / 2, res); } } }
static int SumList2(ListSum <int> x) { int total = 0; for (int i = 0; i < x.Count; i++) { total += x[i]; } return(total); }
static int MaxOfList(ListSum <int> x) { int maxima = x[0]; for (int i = 1; i < x.Count; i++) { if (x[i] > maxima) { maxima = x[i]; } } return(maxima); }