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 Mqtt(MqttConnectionInfo connectionInfo) { if (connectionInfo == null) throw new ArgumentNullException("connectionInfo"); _connectionInfo = connectionInfo; _connectionProvider = new MqttConnectionProvider(); _listenCallback = new AsyncCallback(_listenCallback); _msgFactory = new MqttMessageFactory(); _headerBuffer = new byte[1]; }
public Mqtt(MqttConnectionInfo connectionInfo) { if (connectionInfo == null) { throw new ArgumentNullException("connectionInfo"); } _connectionInfo = connectionInfo; _connectionProvider = new MqttConnectionProvider(); _listenCallback = new AsyncCallback(_listenCallback); _msgFactory = new MqttMessageFactory(); _headerBuffer = new byte[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> >(); }
protected override void Load(ContainerBuilder builder) { // IByteBufferAllocator builder.Register( c => { // TODO - We should probably also use some heuristics to make this determination, like how much memory does the system have. return(this.optimizeForPerformance ? PooledByteBufferAllocator.Default : UnpooledByteBufferAllocator.Default as IByteBufferAllocator); }) .As <IByteBufferAllocator>() .SingleInstance(); builder.Register(c => new ByteBufferConverter(c.Resolve <IByteBufferAllocator>())) .As <IByteBufferConverter>() .SingleInstance(); // MessageAddressConverter builder.Register(c => new MessageAddressConverter(this.conversionConfiguration)) .As <MessageAddressConverter>() .SingleInstance(); // IMessageConverter<IProtocolGatewayMessage> builder.Register(c => new ProtocolGatewayMessageConverter(c.Resolve <MessageAddressConverter>(), c.Resolve <IByteBufferConverter>())) .As <IMessageConverter <IProtocolGatewayMessage> >() .SingleInstance(); // ISettingsProvider builder.Register(c => new MqttSettingsProvider(this.mqttSettingsConfiguration)) .As <ISettingsProvider>() .SingleInstance(); // Task<IMqttConnectionProvider> builder.Register( async c => { var pgMessageConverter = c.Resolve <IMessageConverter <IProtocolGatewayMessage> >(); var byteBufferConverter = c.Resolve <IByteBufferConverter>(); IConnectionProvider connectionProvider = await c.Resolve <Task <IConnectionProvider> >(); IMqttConnectionProvider mqtt = new MqttConnectionProvider(connectionProvider, pgMessageConverter, byteBufferConverter); return(mqtt); }) .As <Task <IMqttConnectionProvider> >() .SingleInstance(); // Task<ISessionStatePersistenceProvider> builder.Register( async c => { if (this.isStoreAndForwardEnabled) { IDbStoreProvider dbStoreProvider = await c.Resolve <Task <IDbStoreProvider> >(); IEntityStore <string, SessionState> entityStore = new StoreProvider(dbStoreProvider).GetEntityStore <string, SessionState>(Constants.SessionStorePartitionKey); IEdgeHub edgeHub = await c.Resolve <Task <IEdgeHub> >(); return(new SessionStateStoragePersistenceProvider(edgeHub, entityStore) as ISessionStatePersistenceProvider); } else { IEdgeHub edgeHub = await c.Resolve <Task <IEdgeHub> >(); return(new SessionStatePersistenceProvider(edgeHub) as ISessionStatePersistenceProvider); } }) .As <Task <ISessionStatePersistenceProvider> >() .SingleInstance(); // MqttProtocolHead builder.Register( async c => { var productInfoStore = await c.Resolve <Task <IProductInfoStore> >(); var settingsProvider = c.Resolve <ISettingsProvider>(); var websocketListenerRegistry = c.Resolve <IWebSocketListenerRegistry>(); var byteBufferAllocator = c.Resolve <IByteBufferAllocator>(); var mqttConnectionProviderTask = c.Resolve <Task <IMqttConnectionProvider> >(); var sessionStatePersistenceProviderTask = c.Resolve <Task <ISessionStatePersistenceProvider> >(); var authenticatorProviderTask = c.Resolve <Task <IAuthenticator> >(); IClientCredentialsFactory clientCredentialsProvider = c.Resolve <IClientCredentialsFactory>(); IMqttConnectionProvider mqttConnectionProvider = await mqttConnectionProviderTask; ISessionStatePersistenceProvider sessionStatePersistenceProvider = await sessionStatePersistenceProviderTask; IAuthenticator authenticator = await authenticatorProviderTask; return(new MqttProtocolHead( settingsProvider, this.tlsCertificate, mqttConnectionProvider, authenticator, clientCredentialsProvider, sessionStatePersistenceProvider, websocketListenerRegistry, byteBufferAllocator, productInfoStore, this.clientCertAuthAllowed, this.sslProtocols)); }) .As <Task <MqttProtocolHead> >() .SingleInstance(); base.Load(builder); }
protected override void Load(ContainerBuilder builder) { // IByteBufferAllocator builder.Register( c => { var usePooledBuffers = this.mqttSettingsConfiguration.GetValue("UsePooledBuffers", false); return(usePooledBuffers ? PooledByteBufferAllocator.Default : UnpooledByteBufferAllocator.Default as IByteBufferAllocator); }) .As <IByteBufferAllocator>() .SingleInstance(); builder.Register(c => new ByteBufferConverter(c.Resolve <IByteBufferAllocator>())) .As <IByteBufferConverter>() .SingleInstance(); // MessageAddressConverter builder.Register(c => new MessageAddressConverter(this.conversionConfiguration)) .As <MessageAddressConverter>() .SingleInstance(); // IMessageConverter<IProtocolGatewayMessage> builder.Register(c => new ProtocolGatewayMessageConverter(c.Resolve <MessageAddressConverter>(), c.Resolve <IByteBufferConverter>())) .As <IMessageConverter <IProtocolGatewayMessage> >() .SingleInstance(); // ISettingsProvider builder.Register(c => new MqttSettingsProvider(this.mqttSettingsConfiguration)) .As <ISettingsProvider>() .SingleInstance(); // Task<IMqttConnectionProvider> builder.Register( async c => { var pgMessageConverter = c.Resolve <IMessageConverter <IProtocolGatewayMessage> >(); var byteBufferConverter = c.Resolve <IByteBufferConverter>(); IConnectionProvider connectionProvider = await c.Resolve <Task <IConnectionProvider> >(); ISessionStatePersistenceProvider sessionStatePersistenceProvider = await c.Resolve <Task <ISessionStatePersistenceProvider> >(); IMqttConnectionProvider mqtt = new MqttConnectionProvider(connectionProvider, pgMessageConverter, byteBufferConverter, sessionStatePersistenceProvider); return(mqtt); }) .As <Task <IMqttConnectionProvider> >() .SingleInstance(); // Task<ISessionStatePersistenceProvider> builder.Register( async c => { if (this.isStoreAndForwardEnabled) { IDbStoreProvider dbStoreProvider = await c.Resolve <Task <IDbStoreProvider> >(); IEntityStore <string, SessionState> entityStore = new StoreProvider(dbStoreProvider).GetEntityStore <string, SessionState>(Constants.SessionStorePartitionKey); IEdgeHub edgeHub = await c.Resolve <Task <IEdgeHub> >(); return(new SessionStateStoragePersistenceProvider(edgeHub, entityStore) as ISessionStatePersistenceProvider); } else { IEdgeHub edgeHub = await c.Resolve <Task <IEdgeHub> >(); return(new SessionStatePersistenceProvider(edgeHub) as ISessionStatePersistenceProvider); } }) .As <Task <ISessionStatePersistenceProvider> >() .SingleInstance(); // MqttProtocolHead builder.Register( async c => { var metadataStore = await c.Resolve <Task <IMetadataStore> >(); var settingsProvider = c.Resolve <ISettingsProvider>(); var websocketListenerRegistry = c.Resolve <IWebSocketListenerRegistry>(); var byteBufferAllocator = c.Resolve <IByteBufferAllocator>(); var mqttConnectionProviderTask = c.Resolve <Task <IMqttConnectionProvider> >(); var sessionStatePersistenceProviderTask = c.Resolve <Task <ISessionStatePersistenceProvider> >(); var authenticatorProviderTask = c.Resolve <Task <IAuthenticator> >(); var usernameParser = c.Resolve <IUsernameParser>(); IClientCredentialsFactory clientCredentialsProvider = c.Resolve <IClientCredentialsFactory>(); IMqttConnectionProvider mqttConnectionProvider = await mqttConnectionProviderTask; ISessionStatePersistenceProvider sessionStatePersistenceProvider = await sessionStatePersistenceProviderTask; IAuthenticator authenticator = await authenticatorProviderTask; return(new MqttProtocolHead( settingsProvider, this.tlsCertificate, mqttConnectionProvider, authenticator, usernameParser, clientCredentialsProvider, sessionStatePersistenceProvider, websocketListenerRegistry, byteBufferAllocator, metadataStore, this.clientCertAuthAllowed, this.sslProtocols)); }) .As <Task <MqttProtocolHead> >() .SingleInstance(); base.Load(builder); }