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>(); }
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]); }
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> >(); }
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)); }
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);