Opc.Ua.ServerBase.InitializeBaseAddresses C# (CSharp) Method

InitializeBaseAddresses() private method

Initializes the list of base addresses.
private InitializeBaseAddresses ( ApplicationConfiguration configuration ) : void
configuration ApplicationConfiguration
return void
        private void InitializeBaseAddresses(ApplicationConfiguration configuration)
        {
            BaseAddresses = new List<BaseAddress>();

            StringCollection sourceBaseAddresses = null;
            StringCollection sourceAlternateAddresses = null;

            if (configuration.ServerConfiguration != null)
            {
                sourceBaseAddresses = configuration.ServerConfiguration.BaseAddresses;
                sourceAlternateAddresses = configuration.ServerConfiguration.AlternateBaseAddresses;
            }

            if (configuration.DiscoveryServerConfiguration != null)
            {
                sourceBaseAddresses = configuration.DiscoveryServerConfiguration.BaseAddresses;
                sourceAlternateAddresses = configuration.DiscoveryServerConfiguration.AlternateBaseAddresses;
            }

            if (sourceBaseAddresses == null)
            {
                return;
            }

            foreach (string baseAddress in sourceBaseAddresses)
            {
                BaseAddress address = new BaseAddress() { Url = new Uri(baseAddress) };

                if (sourceAlternateAddresses != null)
                {
                    foreach (string alternateAddress in sourceAlternateAddresses)
                    {
                        Uri alternateUrl = new Uri(alternateAddress);

                        if (alternateUrl.Scheme == address.Url.Scheme)
                        {
                            if (address.AlternateUrls == null)
                            {
                                address.AlternateUrls = new List<Uri>();
                            }

                            address.AlternateUrls.Add(alternateUrl);
                        }
                    }
                }

                switch (address.Url.Scheme)
                {
                    case Utils.UriSchemeHttp:
                    case Utils.UriSchemeNetTcp:
                    case Utils.UriSchemeNetPipe:
                    {
                        address.ProfileUri = Profiles.WsHttpXmlOrBinaryTransport;
                        address.DiscoveryUrl = new Uri(address.Url.ToString() + "/discovery");
                        break;
                    }

                    case Utils.UriSchemeHttps:
                    {
                        address.ProfileUri = Profiles.HttpsXmlOrBinaryTransport;
                        address.DiscoveryUrl = address.Url;
                        break;
                    }

                    case Utils.UriSchemeNoSecurityHttp:
                    {
                        UriBuilder builder = new UriBuilder(address.Url);
                        builder.Scheme = Utils.UriSchemeHttp;
                        address.Url = builder.Uri;

                        if (address.AlternateUrls != null)
                        {
                            for (int ii = 0; ii < address.AlternateUrls.Count; ii++)
                            {
                                builder = new UriBuilder(address.AlternateUrls[ii]);
                                builder.Scheme = Utils.UriSchemeHttp;
                                address.AlternateUrls[ii] = builder.Uri;
                            }
                        }

                        address.ProfileUri = Profiles.HttpsXmlOrBinaryTransport;
                        address.DiscoveryUrl = address.Url;
                        break;
                    }

                    case Utils.UriSchemeOpcTcp:
                    {
                        address.ProfileUri = Profiles.UaTcpTransport;
                        address.DiscoveryUrl = address.Url;
                        break;
                    }
                }

                BaseAddresses.Add(address);
            }
        }