public Endpoints()

in csharp/rocketmq-client-csharp/Endpoints.cs [80:125]


        public Endpoints(string endpoints)
        {
            if (endpoints.StartsWith(HttpPrefix))
            {
                endpoints = endpoints[HttpPrefix.Length..];
            }

            if (endpoints.StartsWith(HttpsPrefix))
            {
                endpoints = endpoints[HttpsPrefix.Length..];
            }

            var index = endpoints.IndexOf(EndpointSeparator, StringComparison.Ordinal);
            var port = index > 0 ? int.Parse(endpoints[(1 + index)..]) : DefaultPort;
            var host = index > 0 ? endpoints.Substring(0, index) : endpoints;

            var uriHostNameType = Uri.CheckHostName(host);
            Scheme = AddressScheme.DomainName;
            switch (uriHostNameType)
            {
                case UriHostNameType.IPv4:
                    Scheme = AddressScheme.Ipv4;
                    break;
                case UriHostNameType.IPv6:
                    Scheme = AddressScheme.Ipv6;
                    break;
                case UriHostNameType.Dns:
                case UriHostNameType.Basic:
                case UriHostNameType.Unknown:
                default:
                    Scheme = AddressScheme.DomainName;
                    break;
            }

            var address = new Address(host, port);
            var addresses = new List<Address> { address };
            Addresses = addresses;

            unchecked
            {
                var hash = 17;
                hash = (hash * 31) + AddressListComparer.GetHashCode(Addresses);
                hash = (hash * 31) + (int)Scheme;
                _hashCode = hash;
            }
        }