public TopologyNotification(string subscriberName, IGraphMapper mapper)
        {
            _subscriberName = subscriberName;
            _mapper         = mapper;

            _dispatcher = new GraphHubDispatcher();
        }
        public async Task UpdateGraph(List <NodeViewModel> nodes, List <RelationViewModel> relations)
        {
            var graphDispatcher = new GraphHubDispatcher();

            graphDispatcher.Connect();

            try
            {
                await graphDispatcher.NotifyGraphUpdate(nodes, relations);
            }
            catch (Exception e)
            {
                string errorMessage = $"{baseLogString} UpdateGraph => exception {e.Message}";
                Logger.LogError(errorMessage, e);
            }
        }
Exemplo n.º 3
0
 public WebService()
 {
     _graphDispatcher = new GraphHubDispatcher();
     _scadaDipatcher  = new ScadaHubDipatcher();
 }
Exemplo n.º 4
0
        static void Main(string[] args)
        {
            GraphHubDispatcher dispatcher = new GraphHubDispatcher();

            List <NodeViewModel> nodes = new List <NodeViewModel>
            {
                new NodeViewModel {
                    Id = "1", DMSType = "ENERGYSOURCE"
                },
                new NodeViewModel {
                    Id = "2", DMSType = "LOADBREAKSWITCH"
                },
                new NodeViewModel {
                    Id = "3", DMSType = "TRANSFORMERWINDING"
                },
                new NodeViewModel {
                    Id = "4", DMSType = "POWERTRANSFORMER"
                },
                new NodeViewModel {
                    Id = "5", DMSType = "TRANSFORMERWINDING"
                },
                new NodeViewModel {
                    Id = "6", DMSType = "LOADBREAKSWITCH"
                },
                new NodeViewModel {
                    Id = "7", DMSType = "LOADBREAKSWITCH"
                },
                new NodeViewModel {
                    Id = "8", DMSType = "TRANSFORMERWINDING"
                },
                new NodeViewModel {
                    Id = "9", DMSType = "POWERTRANSFORMER"
                },
                new NodeViewModel {
                    Id = "10", DMSType = "TRANSFORMERWINDING"
                },
                new NodeViewModel {
                    Id = "11", DMSType = "LOADBREAKSWITCH"
                }
            };

            List <RelationViewModel> relations = new List <RelationViewModel>
            {
                new RelationViewModel {
                    SourceNodeId = "1", TargetNodeId = "2"
                },
                new RelationViewModel {
                    SourceNodeId = "2", TargetNodeId = "3"
                },
                new RelationViewModel {
                    SourceNodeId = "3", TargetNodeId = "4"
                },
                new RelationViewModel {
                    SourceNodeId = "4", TargetNodeId = "5"
                },
                new RelationViewModel {
                    SourceNodeId = "5", TargetNodeId = "6"
                },
                new RelationViewModel {
                    SourceNodeId = "1", TargetNodeId = "7"
                },
                new RelationViewModel {
                    SourceNodeId = "7", TargetNodeId = "8"
                },
                new RelationViewModel {
                    SourceNodeId = "8", TargetNodeId = "9"
                },
                new RelationViewModel {
                    SourceNodeId = "9", TargetNodeId = "10"
                },
                new RelationViewModel {
                    SourceNodeId = "10", TargetNodeId = "11"
                }
            };

            dispatcher.Connect();

            while (true)
            {
                string key = Console.ReadLine();
                if (key.ToUpper() == "S")
                {
                    dispatcher.NotifyGraphUpdate(nodes, relations);
                }

                if (key.ToUpper() == "Q")
                {
                    break;
                }
            }
        }
Exemplo n.º 5
0
        public async Task Notify(IPublishableMessage message, string publisherName)
        {
            if (message is ActiveOutageMessage activeOutage)
            {
                Logger.LogInformation($"{baseLogString} Notify => ActiveOutageMessageReceived. OutageId: 0x{activeOutage.OutageId:x16} ElementId: 0x{activeOutage.OutageElementGid}");
                var outageDispatcher = new OutageHubDispatcher(_outageMapper);
                outageDispatcher.Connect();

                try
                {
                    await outageDispatcher.NotifyActiveOutageUpdate(activeOutage);
                }
                catch (Exception e)
                {
                    string errorMessage = $"{baseLogString} Notify => exception {e.Message}";
                    Logger.LogError(errorMessage, e);
                }
            }
            else if (message is ArchivedOutageMessage archivedOutage)
            {
                var outageDispatcher = new OutageHubDispatcher(_outageMapper);
                outageDispatcher.Connect();

                try
                {
                    await outageDispatcher.NotifyArchiveOutageUpdate(archivedOutage);
                }
                catch (Exception e)
                {
                    string errorMessage = $"{baseLogString} Notify => exception {e.Message}";
                    Logger.LogError(errorMessage, e);
                }
            }
            else if (message is TopologyForUIMessage topologyMessage)
            {
                OmsGraphViewModel graph = _graphMapper.Map(topologyMessage.UIModel);

                var graphDispatcher = new GraphHubDispatcher();
                graphDispatcher.Connect();

                try
                {
                    await graphDispatcher.NotifyGraphUpdate(graph.Nodes, graph.Relations);
                }
                catch (Exception e)
                {
                    string errorMessage = $"{baseLogString} Notify => exception {e.Message}";
                    Logger.LogError(errorMessage, e);
                }
            }
            else if (message is MultipleAnalogValueSCADAMessage analogValuesMessage)
            {
                Dictionary <long, AnalogModbusData> analogModbusData = new Dictionary <long, AnalogModbusData>(analogValuesMessage.Data);

                var scadaDispatcher = new ScadaHubDispatcher();
                scadaDispatcher.Connect();

                try
                {
                    await scadaDispatcher.NotifyScadaDataUpdate(analogModbusData);
                }
                catch (Exception e)
                {
                    string errorMessage = $"{baseLogString} Notify => exception {e.Message}";
                    Logger.LogError(errorMessage, e);
                }
            }
        }