private void SendSCADACommand(long currentBreakerId, DiscreteCommandingType discreteCommandingType) { long measrement = -1; using (MeasurementMapProxy measurementMapProxy = proxyFactory.CreateProxy <MeasurementMapProxy, IMeasurementMapContract>(EndpointNames.MeasurementMapEndpoint)) { List <long> measuremnts = new List <long>(); try { measuremnts = measurementMapProxy.GetMeasurementsOfElement(currentBreakerId); } catch (Exception e) { //Logger.LogError("Error on GetMeasurementsForElement() method", e); throw e; } if (measuremnts.Count > 0) { measrement = measuremnts[0]; } } if (measrement != -1) { if (discreteCommandingType == DiscreteCommandingType.OPEN && !outageModel.commandedElements.Contains(currentBreakerId)) { //TODO: add at list outageModel.commandedElements.Add(currentBreakerId); } using (SwitchStatusCommandingProxy scadaCommandProxy = proxyFactory.CreateProxy <SwitchStatusCommandingProxy, ISwitchStatusCommandingContract>(EndpointNames.SwitchStatusCommandingEndpoint)) { try { scadaCommandProxy.SendOpenCommand(measrement); } catch (Exception e) { if (discreteCommandingType == DiscreteCommandingType.OPEN && outageModel.commandedElements.Contains(currentBreakerId)) { outageModel.commandedElements.Remove(currentBreakerId); } throw e; } } } }
public Task <Unit> Handle(OpenSwitchCommand request, CancellationToken cancellationToken) { _logger.LogInfo($"[SwitchCommandHandler::TurnOffSwitchCommand] Sending {request.Command.ToString()} command to {request.Gid}"); using (SwitchStatusCommandingProxy commandingProxy = _proxyFactory.CreateProxy <SwitchStatusCommandingProxy, ISwitchStatusCommandingContract>(EndpointNames.SwitchStatusCommandingEndpoint)) { try { commandingProxy.SendOpenCommand(request.Gid); } catch (Exception ex) { _logger.LogError("[SwitchCommandHandler::TurnOffSwitchCommand] SwitchCommandHandler failed on TurnOffSwitch handler.", ex); throw; } } return(null); }