static AmqpTransportListener CreateListener()

in src/AmqpConnectionListener.cs [81:130]


        static AmqpTransportListener CreateListener(IEnumerable<string> addresses, AmqpSettings settings)
        {
            List<TransportListener> listeners = new List<TransportListener>();
            foreach (string address in addresses)
            {
                Uri uri = new Uri(address);
                bool isAmqps = string.Equals(AmqpConstants.SchemeAmqps, uri.Scheme, StringComparison.OrdinalIgnoreCase);
                TcpTransportSettings tcpSettings = new TcpTransportSettings()
                {
                    Host = uri.Host,
                    Port = uri.Port < 0 ? (isAmqps ? AmqpConstants.DefaultSecurePort : AmqpConstants.DefaultPort) : uri.Port
                };

                TransportListener tpListener;
                if (isAmqps)
                {
                    var tlsProvider = settings.GetTransportProvider<TlsTransportProvider>();
                    if (tlsProvider == null)
                    {
                        throw new InvalidOperationException($"TlsTransportProvider must be in AmqpSettings.TransportProviders for '{address}'.");
                    }

                    if (tlsProvider.Settings.Certificate == null)
                    {
                        throw new InvalidOperationException($"A server certificate is required in TlsTransportProvider for '{address}'.");
                    }

                    TlsTransportSettings tlsSettings = new TlsTransportSettings(tcpSettings, false);
                    tlsSettings.Certificate = tlsProvider.Settings.Certificate;
                    tlsSettings.CertificateValidationCallback = tlsProvider.Settings.CertificateValidationCallback;
                    tlsSettings.CheckCertificateRevocation = tlsProvider.Settings.CheckCertificateRevocation;

                    tpListener = tlsSettings.CreateListener();
                }
                else
                {
                    tpListener = tcpSettings.CreateListener();
                }

                listeners.Add(tpListener);
            }

            if (settings.GetTransportProvider<AmqpTransportProvider>() == null)
            {
                var amqpProvider = new AmqpTransportProvider(AmqpVersion.V100);
                settings.TransportProviders.Add(amqpProvider);
            }

            return new AmqpTransportListener(listeners, settings);
        }