public static string GetUniqueDataSetWriterId()

in src/Azure.IIoT.OpcUa/src/Publisher/Extensions/PublishedNodesEntryModelEx.cs [290:440]


        public static string GetUniqueDataSetWriterId(this PublishedNodesEntryModel model,
            TimeSpan? publishingInterval = null)
        {
            var id = new StringBuilder();
            if (!string.IsNullOrEmpty(model.DataSetWriterId))
            {
                id.Append(model.DataSetWriterId);
            }
            if (!string.IsNullOrEmpty(model.EndpointUrl))
            {
                id.Append(model.EndpointUrl);
            }
            if (model.UseReverseConnect == true)
            {
                id.AppendLine();
            }
            if (model.DisableSubscriptionTransfer == true)
            {
                id.AppendLine();
            }
            var securityMode = model.EndpointSecurityMode ??
                ((model.UseSecurity ?? false) ? SecurityMode.NotNone : SecurityMode.None);
            if (securityMode != SecurityMode.None)
            {
                id.Append(securityMode);
            }
            if (!string.IsNullOrEmpty(model.EndpointSecurityPolicy))
            {
                id.Append(model.EndpointSecurityPolicy);
            }
            if (model.OpcAuthenticationMode != OpcAuthenticationMode.Anonymous)
            {
                id.Append(model.OpcAuthenticationMode);
            }
            if (!string.IsNullOrEmpty(model.OpcAuthenticationUsername))
            {
                id.Append(model.OpcAuthenticationUsername);
            }
            if (!string.IsNullOrEmpty(model.OpcAuthenticationPassword))
            {
                id.Append(model.OpcAuthenticationPassword.ToSha1Hash());
            }
            if (!string.IsNullOrEmpty(model.EncryptedAuthUsername))
            {
                id.Append(model.EncryptedAuthUsername);
            }
            if (!string.IsNullOrEmpty(model.EncryptedAuthPassword))
            {
                id.Append(model.EncryptedAuthPassword.ToSha1Hash());
            }
            if (!string.IsNullOrEmpty(model.DataSetName))
            {
                id.Append(model.DataSetName);
            }
            var publishingIntervalResolved = publishingInterval ??
                model.GetNormalizedDataSetPublishingInterval();
            if (publishingIntervalResolved != null)
            {
                id.Append(publishingIntervalResolved.Value.TotalMilliseconds);
            }
            if (model.DataSetClassId != Guid.Empty)
            {
                id.Append(model.DataSetClassId);
            }
            if (model.DataSetKeyFrameCount != null)
            {
                id.Append(model.DataSetKeyFrameCount.Value);
            }
            if (model.DisableSubscriptionTransfer != null)
            {
                id.Append(model.DisableSubscriptionTransfer.Value);
            }
            if (model.SendKeepAliveDataSetMessages)
            {
                id.AppendLine();
            }
            if (model.Priority != null)
            {
                id.Append(model.Priority.Value);
            }
            if (model.MaxKeepAliveCount != null)
            {
                id.Append(model.MaxKeepAliveCount.Value);
            }
            var metadataUpdateTime = model.GetNormalizedMetaDataUpdateTime();
            if (metadataUpdateTime != null)
            {
                id.Append(metadataUpdateTime.Value.TotalMilliseconds);
            }
            var samplingInterval = model.GetNormalizedDataSetSamplingInterval();
            if (samplingInterval != null)
            {
                id.Append(samplingInterval.Value.TotalMilliseconds);
            }
            var heartbeatInterval = model.GetNormalizedDefaultHeartbeatInterval();
            if (heartbeatInterval != null)
            {
                id.Append(heartbeatInterval.Value.TotalMilliseconds);
            }
            if (model.DefaultHeartbeatBehavior != null)
            {
                id.Append(model.DefaultHeartbeatBehavior.Value);
            }
            if (model.QualityOfService != null)
            {
                id.Append(model.QualityOfService.Value);
            }
            if (!string.IsNullOrEmpty(model.QueueName))
            {
                id.Append(model.QueueName);
            }
            if (!string.IsNullOrEmpty(model.MetaDataQueueName))
            {
                id.Append(model.MetaDataQueueName);
            }
            if ((model.DataSetRouting ?? DataSetRoutingMode.None)
                != DataSetRoutingMode.None)
            {
                id.Append(model.DataSetRouting.ToString());
            }
            if (model.RepublishAfterTransfer != null)
            {
                id.Append(model.RepublishAfterTransfer.Value);
            }
            if (model.OpcNodeWatchdogTimespan != null)
            {
                id.Append(model.OpcNodeWatchdogTimespan.Value);
            }
            if (model.DataSetWriterWatchdogBehavior != null)
            {
                id.Append(model.DataSetWriterWatchdogBehavior.Value);
            }
            if (model.OpcNodeWatchdogCondition != null)
            {
                id.Append(model.OpcNodeWatchdogCondition.Value);
            }
            if (model.DataSetFetchDisplayNames != null)
            {
                id.Append(model.DataSetFetchDisplayNames.Value);
            }
            if (model.MessageTtlTimespan != null)
            {
                id.Append(model.MessageTtlTimespan.Value);
            }
            if (model.MessageRetention == true)
            {
                id.AppendLine();
            }
            Debug.Assert(id.Length != 0); // Should always have an endpoint mixed in
            return id.ToString().ToSha1Hash();
        }