public ProcessingManager(IFunctionExecutor functionExecutor) { this.functionExecutor = functionExecutor; applicationSequence = 0; transportSequence = 0; dom = new DomServiceProxy(ConfigurationManager.AppSettings["Dom"]); log = new LogServiceProxy(ConfigurationManager.AppSettings["Log"]); storage = new SF.Common.Proxies.ScadaStorageProxy(ConfigurationManager.AppSettings["Storage"]); }
public async Task <bool> Commit() { ServiceEventSource.Current.ServiceMessage(_context, "SCADA Transaction - Commit!"); ScadaStorageProxy proxy = new ScadaStorageProxy(ConfigurationReader.ReadValue(_context, "Settings", "Storage")); await proxy.SetModel(await proxy.GetTransactionModel()); var model = await proxy.GetModel(); ushort aiCount = (ushort)(model.Values.Where(x => !String.IsNullOrEmpty(x.Mrid) && x.RegisterType == SCADA.Common.DataModel.RegisterType.ANALOG_INPUT).Count()); ushort aoCount = (ushort)(model.Values.Where(x => !String.IsNullOrEmpty(x.Mrid) && x.RegisterType == SCADA.Common.DataModel.RegisterType.ANALOG_OUTPUT).Count()); ushort biCount = (ushort)(model.Values.Where(x => !String.IsNullOrEmpty(x.Mrid) && x.RegisterType == SCADA.Common.DataModel.RegisterType.BINARY_INPUT).Count()); ushort boCount = (ushort)(model.Values.Where(x => !String.IsNullOrEmpty(x.Mrid) && x.RegisterType == SCADA.Common.DataModel.RegisterType.BINARY_OUTPUT).Count()); try { SimulatorProxy sim = new SimulatorProxy(); sim.UpdateConfig(Tuple.Create <ushort, ushort, ushort, ushort>(biCount, boCount, aiCount, aoCount), result.MridIndexPairs); } catch { } DomServiceProxy dom = new DomServiceProxy(ConfigurationReader.ReadValue(_context, "Settings", "Dom")); await dom.Add((await proxy.GetModel()).Values.ToList().ToDbModel()); return(true); }
private void Update() { var domService = new DomServiceProxy(ConfigurationReader.ReadValue(Context, "Settings", "Dom")); var historyService = new HistoryServiceProxy(ConfigurationReader.ReadValue(Context, "Settings", "History")); var storageService = new ScadaStorageProxy(ConfigurationReader.ReadValue(Context, "Settings", "Storage")); var domData = domService.GetAll().GetAwaiter().GetResult(); DomUpdateEvent dom = new DomUpdateEvent() { DomData = domData.ToSwitchingEquipment() }; HistoryUpdateEvent history = new HistoryUpdateEvent() { History = historyService.GetAll().GetAwaiter().GetResult() }; HistoryGraphicalEvent graph = new HistoryGraphicalEvent() { Graph = historyService.GetGraph().GetAwaiter().GetResult() }; ScadaUpdateEvent ev = new ScadaUpdateEvent() { Points = new List <SCADA.Common.DataModel.ScadaPointDto>() }; var all = (storageService.GetModel().GetAwaiter().GetResult()).Values.ToList(); var analogs = all.Where(x => x.RegisterType == RegisterType.ANALOG_INPUT || x.RegisterType == RegisterType.ANALOG_OUTPUT).Cast <AnalogPoint>().ToList(); var binaries = all.Where(x => x.RegisterType == RegisterType.BINARY_INPUT || x.RegisterType == RegisterType.BINARY_OUTPUT).Cast <DiscretePoint>().ToList(); ev.Points.AddRange(Mapper.MapCollection <AnalogPoint, ScadaPointDto>(analogs)); ev.Points.AddRange(Mapper.MapCollection <DiscretePoint, ScadaPointDto>(binaries)); Subscription subs = new Subscription(); Publisher publisher = new Publisher(subs.Topic, subs.ConnectionString); if (ev.Points.Count > 0) { publisher.SendMessage(new PubSubMessage() { ContentType = ContentType.SCADA_UPDATE, Sender = Sender.SCADA, Content = JsonTool.Serialize <ScadaUpdateEvent>(ev) }).ConfigureAwait(false); } if (dom.DomData.Count > 0) { publisher.SendMessage(new PubSubMessage() { ContentType = ContentType.SCADA_DOM, Sender = Sender.SCADA, Content = JsonTool.Serialize <DomUpdateEvent>(dom) }).ConfigureAwait(false); } if (history.History.Count > 0) { publisher.SendMessage(new PubSubMessage() { ContentType = ContentType.SCADA_HISTORY, Sender = Sender.SCADA, Content = JsonTool.Serialize <HistoryUpdateEvent>(history) }).ConfigureAwait(false); } publisher.SendMessage(new PubSubMessage() { ContentType = ContentType.SCADA_HISTORY_GRAPH, Sender = Sender.SCADA, Content = JsonTool.Serialize <HistoryGraphicalEvent>(graph) }).ConfigureAwait(false); }