Example #1
0
        public AmqpProtocolHead(
            ITransportSettings transportSettings,
            AmqpSettings amqpSettings,
            ITransportListenerProvider transportListenerProvider,
            IWebSocketListenerRegistry webSocketListenerRegistry,
            IAuthenticator authenticator,
            IClientCredentialsFactory clientCredentialsFactory)
        {
            this.syncLock                  = new AsyncLock();
            this.transportSettings         = Preconditions.CheckNotNull(transportSettings, nameof(transportSettings));
            this.amqpSettings              = Preconditions.CheckNotNull(amqpSettings, nameof(amqpSettings));
            this.transportListenerProvider = Preconditions.CheckNotNull(transportListenerProvider);
            this.webSocketListenerRegistry = Preconditions.CheckNotNull(webSocketListenerRegistry);
            this.authenticator             = Preconditions.CheckNotNull(authenticator, nameof(authenticator));
            this.clientCredentialsFactory  = Preconditions.CheckNotNull(clientCredentialsFactory, nameof(clientCredentialsFactory));

            this.connectionSettings = new AmqpConnectionSettings
            {
                ContainerId = "DeviceGateway_" + Guid.NewGuid().ToString("N"),
                HostName    = transportSettings.HostName,
                // 'IdleTimeOut' on connection settings will be used to close connection if server hasn't
                // received any packet for 'IdleTimeout'
                // Open frame send to client will have the IdleTimeout set and the client will do heart beat
                // every 'IdleTimeout * 7 / 8'
                // If server doesn't receive any packet till 'ServiceMaxConnectionIdleTimeout' the connection will be closed
                IdleTimeOut = Constants.DefaultAmqpConnectionIdleTimeoutInMilliSeconds
            };

            this.incomingConnectionMap = new ConcurrentDictionary <uint, AmqpConnection>();
        }
Example #2
0
 public MqttProtocolHead(
     ISettingsProvider settingsProvider,
     X509Certificate tlsCertificate,
     IMqttConnectionProvider mqttConnectionProvider,
     IAuthenticator authenticator,
     IUsernameParser usernameParser,
     IClientCredentialsFactory clientCredentialsFactory,
     ISessionStatePersistenceProvider sessionProvider,
     IWebSocketListenerRegistry webSocketListenerRegistry,
     IByteBufferAllocator byteBufferAllocator,
     IMetadataStore metadataStore,
     bool clientCertAuthAllowed,
     SslProtocols sslProtocols)
 {
     this.settingsProvider          = Preconditions.CheckNotNull(settingsProvider, nameof(settingsProvider));
     this.tlsCertificate            = Preconditions.CheckNotNull(tlsCertificate, nameof(tlsCertificate));
     this.mqttConnectionProvider    = Preconditions.CheckNotNull(mqttConnectionProvider, nameof(mqttConnectionProvider));
     this.authenticator             = Preconditions.CheckNotNull(authenticator, nameof(authenticator));
     this.usernameParser            = Preconditions.CheckNotNull(usernameParser, nameof(usernameParser));
     this.clientCredentialsFactory  = Preconditions.CheckNotNull(clientCredentialsFactory, nameof(clientCredentialsFactory));
     this.sessionProvider           = Preconditions.CheckNotNull(sessionProvider, nameof(sessionProvider));
     this.webSocketListenerRegistry = Preconditions.CheckNotNull(webSocketListenerRegistry, nameof(webSocketListenerRegistry));
     this.byteBufferAllocator       = Preconditions.CheckNotNull(byteBufferAllocator);
     this.clientCertAuthAllowed     = clientCertAuthAllowed;
     this.metadataStore             = Preconditions.CheckNotNull(metadataStore, nameof(metadataStore));
     this.sslProtocols = sslProtocols;
 }
        public async Task ProducesANewCorrelationIdForEachWebSocketRequest()
        {
            var correlationIds = new List <string>();
            IWebSocketListenerRegistry registry = this._ObservingWebSocketListenerRegistry(correlationIds);
            HttpContext httpContext             = this._WebSocketRequestContext();

            var middleware = new WebSocketHandlingMiddleware(this._ThrowingNextDelegate(), registry);
            await middleware.Invoke(httpContext);

            await middleware.Invoke(httpContext);

            Assert.Equal(2, correlationIds.Count);
            Assert.NotEqual(correlationIds[0], correlationIds[1]);
        }
        public async Task ProducesANewCorrelationIdForEachWebSocketRequest()
        {
            var correlationIds = new List <string>();
            IWebSocketListenerRegistry registry = ObservingWebSocketListenerRegistry(correlationIds);
            HttpContext httpContext             = this.WebSocketRequestContext();

            var middleware = new WebSocketHandlingMiddleware(this.ThrowingNextDelegate(), registry, Task.FromResult(Mock.Of <IHttpProxiedCertificateExtractor>()));
            await middleware.Invoke(httpContext);

            await middleware.Invoke(httpContext);

            Assert.Equal(2, correlationIds.Count);
            Assert.NotEqual(correlationIds[0], correlationIds[1]);
        }
Example #5
0
 public MqttProtocolHead(ISettingsProvider settingsProvider,
                         X509Certificate tlsCertificate,
                         IMqttConnectionProvider mqttConnectionProvider,
                         IDeviceIdentityProvider identityProvider,
                         ISessionStatePersistenceProvider sessionProvider,
                         IWebSocketListenerRegistry webSocketListenerRegistry,
                         IByteBufferAllocator byteBufferAllocator,
                         bool clientCertAuthAllowed,
                         string caChainPath)
 {
     this.settingsProvider          = Preconditions.CheckNotNull(settingsProvider, nameof(settingsProvider));
     this.tlsCertificate            = Preconditions.CheckNotNull(tlsCertificate, nameof(tlsCertificate));
     this.mqttConnectionProvider    = Preconditions.CheckNotNull(mqttConnectionProvider, nameof(mqttConnectionProvider));
     this.identityProvider          = Preconditions.CheckNotNull(identityProvider, nameof(identityProvider));
     this.sessionProvider           = Preconditions.CheckNotNull(sessionProvider, nameof(sessionProvider));
     this.webSocketListenerRegistry = Preconditions.CheckNotNull(webSocketListenerRegistry, nameof(webSocketListenerRegistry));
     this.byteBufferAllocator       = Preconditions.CheckNotNull(byteBufferAllocator);
     this.clientCertAuthAllowed     = clientCertAuthAllowed;
     this.caCertChain = clientCertAuthAllowed
         ? this.GetCaChainCerts(Preconditions.CheckNonWhiteSpace(caChainPath, nameof(this.caCertChain)))
         : Option.None <IList <X509Certificate2> >();
 }
Example #6
0
 public WebSocketHandlingMiddleware(RequestDelegate next, IWebSocketListenerRegistry webSocketListenerRegistry, Task <IHttpProxiedCertificateExtractor> httpProxiedCertificateExtractorProvider)
 {
     this.next = Preconditions.CheckNotNull(next, nameof(next));
     this.webSocketListenerRegistry = Preconditions.CheckNotNull(webSocketListenerRegistry, nameof(webSocketListenerRegistry));
     this.httpProxiedCertificateExtractorProvider = Preconditions.CheckNotNull(httpProxiedCertificateExtractorProvider, nameof(httpProxiedCertificateExtractorProvider));
 }
Example #7
0
 public static IApplicationBuilder UseWebSocketHandlingMiddleware(this IApplicationBuilder builder, IWebSocketListenerRegistry webSocketListenerRegistry, Task <IHttpProxiedCertificateExtractor> httpProxiedCertificateExtractor) =>
 builder.UseMiddleware <WebSocketHandlingMiddleware>(webSocketListenerRegistry, httpProxiedCertificateExtractor);
 public WebSocketHandlingMiddleware(RequestDelegate next, IWebSocketListenerRegistry webSocketListenerRegistry)
 {
     this.next = Preconditions.CheckNotNull(next, nameof(next));
     this.webSocketListenerRegistry = Preconditions.CheckNotNull(webSocketListenerRegistry, nameof(webSocketListenerRegistry));
 }
 public static IApplicationBuilder UseWebSocketHandlingMiddleware(this IApplicationBuilder builder, IWebSocketListenerRegistry webSocketListenerRegistry) =>
 builder.UseMiddleware <WebSocketHandlingMiddleware>(webSocketListenerRegistry);