Пример #1
0
 public static ConnectionListener CreateSharedListener(
     Uri addressUri,
     AmqpSettings amqpSettings,
     AmqpConnectionSettings connectionSettings)
 {
     return(new SharedConnectionListener(addressUri, amqpSettings, connectionSettings));
 }
Пример #2
0
 public static ConnectionListener CreateExclusiveListener(
     Uri addressUri,
     AmqpSettings amqpSettings,
     AmqpConnectionSettings connectionSettings,
     IConnectionHandler connectionHandler)
 {
     return(new ExclusiveConnectionListener(addressUri, amqpSettings, connectionSettings, connectionHandler));
 }
Пример #3
0
 public SharedConnectionListener(
     Uri addressUri,
     AmqpSettings amqpSettings,
     AmqpConnectionSettings connectionSettings)
     : base(addressUri, amqpSettings, connectionSettings)
 {
     this.connectionHandlers     = new ConcurrentDictionary <string, IConnectionHandler>(StringComparer.OrdinalIgnoreCase);
     this.connectionOpenCallback = this.OnConnectionOpen;
 }
Пример #4
0
 public OpenConnectionAsyncResult(AmqpChannelFactory.SharedAmqpConnection sharedAmqpConnection, string host, int port, AmqpSettings settings, TimeSpan timeout, AsyncCallback callback, object state) : base(timeout, callback, state)
 {
     this.sharedAmqpConnection = sharedAmqpConnection;
     this.host     = host;
     this.port     = port;
     this.settings = settings;
     AmqpChannelFactory.SharedAmqpConnection.OpenConnectionAsyncResult openConnectionAsyncResult = this;
     openConnectionAsyncResult.OnCompleting = (Action <AsyncResult, Exception>)Delegate.Combine(openConnectionAsyncResult.OnCompleting, AmqpChannelFactory.SharedAmqpConnection.OpenConnectionAsyncResult.onFinally);
 }
Пример #5
0
 public ExclusiveConnectionListener(
     Uri addressUri,
     AmqpSettings amqpSettings,
     AmqpConnectionSettings connectionSettings,
     IConnectionHandler connectionHandler)
     : base(addressUri, amqpSettings, connectionSettings)
 {
     Fx.Assert(connectionHandler != null, "Connection handler cannot be null.");
     this.connectionHandler = connectionHandler;
 }
Пример #6
0
        public AmqpSettings Clone()
        {
            AmqpSettings settings = new AmqpSettings();

            settings.DefaultLinkCredit        = this.DefaultLinkCredit;
            settings.transportProviders       = new List <TransportProvider>(this.TransportProviders);
            settings.RuntimeProvider          = this.RuntimeProvider;
            settings.RequireSecureTransport   = this.RequireSecureTransport;
            settings.AllowAnonymousConnection = this.AllowAnonymousConnection;
            settings.AuthorizationDisabled    = this.AuthorizationDisabled;
            return(settings);
        }
Пример #7
0
            static void OnTransport(TransportAsyncCallbackArgs args)
            {
                OpenContainerAsyncResult thisPtr  = (OpenContainerAsyncResult)args.UserToken;
                AmqpSettings             settings = new AmqpSettings();
                TransportProvider        provider = new AmqpTransportProvider();

                provider.Versions.Add(new AmqpVersion(1, 0, 0));
                settings.TransportProviders.Add(provider);
                thisPtr.connection = new AmqpConnection(args.Transport, settings, new AmqpConnectionSettings()
                {
                    ContainerId = thisPtr.parent.id
                });
                thisPtr.connection.BeginOpen(TimeSpan.MaxValue, thisPtr.PrepareAsyncCompletion(onConnectionOpen), thisPtr);
            }
 public AmqpTransportManager(Uri listenUri, AmqpSettings amqpSettings, TimeSpan openTimeout)
 {
     this.ListenUri    = new Uri(listenUri.GetLeftPart(UriPartial.Authority));
     this.addressTable = new UriPrefixTable <AmqpChannelListenerBase>(false);
     this.OpenTimeout  = openTimeout;
     this.amqpSettings = amqpSettings.Clone();
     this.amqpSettings.RuntimeProvider = this;
     this.amqpConnectionSettings       = new AmqpConnectionSettings()
     {
         ContainerId = Guid.NewGuid().ToString("N")
     };
     this.id = string.Concat(base.GetType().Name, this.GetHashCode());
     MessagingClientEtwProvider.TraceClient(() => MessagingClientEtwProvider.Provider.EventWriteAmqpLogOperation(this, TraceOperation.Create, this.ListenUri));
 }
Пример #9
0
        public AmqpSettings Clone()
        {
            AmqpSettings amqpSetting = new AmqpSettings()
            {
                DefaultLinkCredit        = this.DefaultLinkCredit,
                transportProviders       = new List <TransportProvider>(this.TransportProviders),
                RuntimeProvider          = this.RuntimeProvider,
                RequireSecureTransport   = this.RequireSecureTransport,
                AllowAnonymousConnection = this.AllowAnonymousConnection,
                AuthorizationDisabled    = this.AuthorizationDisabled
            };

            return(amqpSetting);
        }
Пример #10
0
            public Listener(Container container)
            {
                this.container   = container;
                this.connections = new List <AmqpConnection>();
                this.settings    = new AmqpSettings()
                {
                    RuntimeProvider = this
                };
                TransportProvider provider = new AmqpTransportProvider();

                provider.Versions.Add(new AmqpVersion(1, 0, 0));
                this.settings.TransportProviders.Add(provider);
                this.nodes    = new Dictionary <string, List <LinkAsyncResult> >(StringComparer.OrdinalIgnoreCase);
                this.syncRoot = new object();
            }
Пример #11
0
        public AmqpConnection(TransportBase transport, ProtocolHeader protocolHeader, bool isInitiator, AmqpSettings amqpSettings, AmqpConnectionSettings connectionSettings) :
            base(transport, connectionSettings)
        {
            if (amqpSettings == null)
            {
                throw new ArgumentNullException("amqpSettings");
            }

            this.initialHeader          = protocolHeader;
            this.isInitiator            = isInitiator;
            this.amqpSettings           = amqpSettings;
            this.frameDecoder           = new FrameDecoder((int)this.Settings.MaxFrameSize);
            this.sessionsByLocalHandle  = new HandleTable <AmqpSession>(this.Settings.ChannelMax.Value);
            this.sessionsByRemoteHandle = new HandleTable <AmqpSession>(this.Settings.ChannelMax.Value);
            this.SessionFactory         = this;
        }
Пример #12
0
                public ConnectAsyncResult(string host, int port, AmqpSettings amqpSettings, TimeSpan timeout, AsyncCallback callback, object state) : base(callback, state)
                {
                    if (port <= 0)
                    {
                        port = 5672;
                    }
                    this.amqpSettings = amqpSettings;
                    TcpTransportSettings tcpTransportSetting = new TcpTransportSettings()
                    {
                        Host = host,
                        Port = port
                    };
                    AmqpTransportInitiator     amqpTransportInitiator    = new AmqpTransportInitiator(this.amqpSettings, tcpTransportSetting);
                    TransportAsyncCallbackArgs transportAsyncCallbackArg = new TransportAsyncCallbackArgs()
                    {
                        CompletedCallback = new Action <TransportAsyncCallbackArgs>(this.OnTransportCallback),
                        UserToken         = this
                    };

                    amqpTransportInitiator.ConnectAsync(timeout, transportAsyncCallbackArg);
                }
        internal AmqpSettings CreateAmqpSettings(string sslHostName)
        {
            AmqpSettings amqpSetting = new AmqpSettings();

            if (this.SslStreamUpgrade)
            {
                TlsTransportSettings tlsTransportSetting = new TlsTransportSettings()
                {
                    CertificateValidationCallback = this.CertificateValidationCallback,
                    TargetHost = sslHostName
                };
                TlsTransportProvider tlsTransportProvider = new TlsTransportProvider(tlsTransportSetting);
                tlsTransportProvider.Versions.Add(new Microsoft.ServiceBus.Messaging.Amqp.AmqpVersion(1, 0, 0));
                amqpSetting.TransportProviders.Add(tlsTransportProvider);
            }
            if (this.TokenProvider != null || this.NetworkCredential != null)
            {
                SaslTransportProvider saslTransportProvider = new SaslTransportProvider();
                saslTransportProvider.Versions.Add(new Microsoft.ServiceBus.Messaging.Amqp.AmqpVersion(1, 0, 0));
                amqpSetting.TransportProviders.Add(saslTransportProvider);
                if (this.NetworkCredential == null)
                {
                    saslTransportProvider.AddHandler(new SaslExternalHandler());
                }
                else
                {
                    SaslPlainHandler saslPlainHandler = new SaslPlainHandler()
                    {
                        AuthenticationIdentity = this.NetworkCredential.UserName,
                        Password = this.NetworkCredential.Password
                    };
                    saslTransportProvider.AddHandler(saslPlainHandler);
                }
            }
            AmqpTransportProvider amqpTransportProvider = new AmqpTransportProvider();

            amqpTransportProvider.Versions.Add(new Microsoft.ServiceBus.Messaging.Amqp.AmqpVersion(this.AmqpVersion));
            amqpSetting.TransportProviders.Add(amqpTransportProvider);
            return(amqpSetting);
        }
Пример #14
0
        protected ConnectionListener(
            Uri addressUri,
            AmqpSettings amqpSettings,
            AmqpConnectionSettings connectionSettings)
        {
            amqpSettings.ValidateListenerSettings();
            this.listenAddress      = addressUri;
            this.amqpSettings       = amqpSettings;
            this.connectionSettings = connectionSettings;
            this.onAcceptTransport  = this.OnAcceptTransport;

            TcpTransportSettings tcpSettings = new TcpTransportSettings();

            tcpSettings.SetEndPoint(addressUri.Host, addressUri.Port, true);
            TransportListener tpListener = null;

            if (addressUri.Scheme.Equals(AmqpConstants.SchemeAmqps, StringComparison.OrdinalIgnoreCase))
            {
                TlsTransportProvider tlsProvider = this.amqpSettings.GetTransportProvider <TlsTransportProvider>();
                if (tlsProvider == null)
                {
                    throw Fx.Exception.ArgumentNull("TlsSecurityProvider");
                }

                Fx.Assert(tlsProvider.Settings.Certificate != null, "Must have a valid certificate.");
                TlsTransportSettings tlsSettings = new TlsTransportSettings(tcpSettings, false);
                tlsSettings.Certificate = tlsProvider.Settings.Certificate;
                tpListener = tlsSettings.CreateListener();
            }
            else
            {
                tpListener = tcpSettings.CreateListener();
            }

            this.transportListener        = new AmqpTransportListener(new TransportListener[] { tpListener }, this.amqpSettings);
            this.onConnectionOpenComplete = new AsyncCallback(this.OnConnectionOpenComplete);
        }
        public AmqpConnection CreateConnection(TransportBase transport, ProtocolHeader protocolHeader, bool isInitiator, AmqpSettings amqpSettings, AmqpConnectionSettings connectionSettings)
        {
            AmqpConnection amqpConnection = new AmqpConnection(transport, protocolHeader, isInitiator, amqpSettings, connectionSettings)
            {
                SessionFactory = this
            };

            MessagingClientEtwProvider.TraceClient(() => MessagingClientEtwProvider.Provider.EventWriteAmqpLogOperation(this, TraceOperation.Connect, amqpConnection));
            return(amqpConnection);
        }
Пример #16
0
 AmqpConnection IConnectionFactory.CreateConnection(TransportBase transport, ProtocolHeader protocolHeader, bool isInitiator, AmqpSettings amqpSettings, AmqpConnectionSettings connectionSettings)
 {
     throw new NotImplementedException();
 }
Пример #17
0
        public AmqpConnection CreateConnection(TransportBase transport, ProtocolHeader protocolHeader, bool isInitiator, AmqpSettings amqpSettings, AmqpConnectionSettings connectionSettings)
        {
            if (this.amqpSettings.RequireSecureTransport && !transport.IsSecure)
            {
                throw new AmqpException(AmqpError.NotAllowed, SR.AmqpTransportNotSecure);
            }

            AmqpConnection connection = new AmqpConnection(transport, protocolHeader, isInitiator, amqpSettings, connectionSettings);

            Utils.Trace(TraceLevel.Info, "{0}: Created {1}", this, connection);
            return(connection);
        }
Пример #18
0
 public AmqpConnection(TransportBase transport, ProtocolHeader protocolHeader, AmqpSettings amqpSettings, AmqpConnectionSettings connectionSettings) :
     this(transport, protocolHeader, true, amqpSettings, connectionSettings)
 {
 }
Пример #19
0
 public AmqpTransportListener(IEnumerable <TransportListener> listeners, Microsoft.ServiceBus.Messaging.Amqp.AmqpSettings settings) : base("tp-listener")
 {
     this.innerListeners = new List <TransportListener>(listeners);
     this.settings       = settings;
 }
Пример #20
0
 public SharedAmqpConnection(AmqpChannelFactory amqpChannelFactory, string host, int port, AmqpSettings settings) : base(new object())
 {
     this.amqpChannelFactory = amqpChannelFactory;
     this.host     = host;
     this.port     = port;
     this.settings = settings;
 }
Пример #21
0
 public AmqpConnection(TransportBase transport, AmqpSettings amqpSettings, AmqpConnectionSettings connectionSettings) :
     this(transport, amqpSettings.GetDefaultHeader(), true, amqpSettings, connectionSettings)
 {
 }