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;
}
}