コード例 #1
0
        private async Task BroadcastAggregate(Reference <DataAggregate> aggregate, OrchestratorTwin twin)
        {
            List <Task> messages = new List <Task>();

            foreach (Routing item in Enum.GetValues(typeof(Routing)))
            {
                if (twin.RoutingMode.HasFlag(item))
                {
                    switch (item)
                    {
                    case Routing.VisualizeFeature:
                        messages.Add(Visualization.PublishAsync(new GraphData()
                        {
                            CorrelationID = "Feature",
                            Values        = aggregate.Message.Values
                        }
                                                                ));
                        break;

                    case Routing.FeatureExtraction:
                        messages.Add(FeatureExtraction.PublishAsync(new DataAggregate()
                        {
                            CorrelationID = "Feature",
                            Values        = aggregate.Message.Values
                        }));
                        break;

                    default:
                        continue;
                    }
                }
            }

            if (messages.Count > 0)
            {
                await Task.WhenAll(messages);
            }
        }