private void PublishScadaData(Topic topic, SCADAMessage scadaMessage)
        {
            SCADAPublication scadaPublication = new SCADAPublication(topic, scadaMessage);

            using (PublisherProxy publisherProxy = proxyFactory.CreateProxy <PublisherProxy, IPublisher>(EndpointNames.PublisherEndpoint))
            {
                if (publisherProxy == null)
                {
                    string errMsg = "PublisherProxy is null.";
                    Logger.LogWarn(errMsg);
                    throw new NullReferenceException(errMsg);
                }

                publisherProxy.Publish(scadaPublication, "SCADA_PUBLISHER");
                Logger.LogInfo($"SCADA service published data from topic: {scadaPublication.Topic}");

                StringBuilder sb = new StringBuilder();
                sb.AppendLine("MeasurementCache content: ");

                foreach (long gid in MeasurementsCache.Keys)
                {
                    IModbusData data = MeasurementsCache[gid];

                    if (data is AnalogModbusData analogModbusData)
                    {
                        sb.AppendLine($"Analog data line: [gid] 0x{gid:X16}, [value] {analogModbusData.Value}, [alarm] {analogModbusData.Alarm}");
                    }
                    else if (data is DiscreteModbusData discreteModbusData)
                    {
                        sb.AppendLine($"Discrete data line: [gid] 0x{gid:X16}, [value] {discreteModbusData.Value}, [alarm] {discreteModbusData.Alarm}");
                    }
                    else
                    {
                        sb.AppendLine($"UNKNOWN data type: {data.GetType()}");
                    }
                }

                Logger.LogDebug(sb.ToString());
            }
        }
 public SCADAPublication(Topic topic, SCADAMessage message)
     : base(topic, message)
 {
 }