private static async Task ProcessSubResultAsync(IClusterClient client, IReducer proxy, string partialData) { var mapper = client.GetGrain <IMapper>(Guid.NewGuid()); AccelerationDataPerSec subResult = await mapper.MapAccelerationData(partialData); Console.WriteLine("\n\n{0}\n\n", subResult.ToString()); await proxy.ReduceAccelerationData(subResult); }
public void MergeAccelo(AccelerationDataPerSec items) { foreach (var item in items) { if (Contains(item.Key)) { var val = base[item.Key]; val.Count += item.Count; val.Average += item.Average; } else { base.Add(item); } } }
public Task <AccelerationDataPerSec> MapAccelerationData(string document) { string[] splittedData = document.Split(','); double x, y, z; x = double.Parse(splittedData[1]); y = double.Parse(splittedData[2]); z = double.Parse(splittedData[3]); //Calculate the Average for accelerometr X,Y,Z per one timestamp double average = Math.Sqrt(Math.Pow(x, 2) + Math.Pow(y, 2) + Math.Pow(z, 2)); List <AccelerationData> accelo = new List <AccelerationData> { new AccelerationData(splittedData[0], 1, average) }; logger.LogInformation(average.ToString()); var result = new AccelerationDataPerSec(accelo); return(Task.FromResult(result)); }