/// <summary> /// Initializes a new instance of the <see cref="UserRepository" /> class. /// </summary> /// <param name="connectionSettings">The connection settings to use.</param> public UserRepository(MqttDatabaseConnectionSettings connectionSettings) { this.connectionSettings = connectionSettings; }
/// <summary> /// Initializes a new instance of the <see cref="WhitelistRepository" /> class. /// </summary> /// <param name="connectionSettings">The connection settings to use.</param> public WhitelistRepository(MqttDatabaseConnectionSettings connectionSettings) { this.connectionSettings = connectionSettings; }
/// <summary> /// Initializes a new instance of the <see cref="DatabaseVersionRepository" /> class. /// </summary> /// <param name="connectionSettings">The connection settings to use.</param> public DatabaseVersionRepository(MqttDatabaseConnectionSettings connectionSettings) { this.connectionSettings = connectionSettings; }
/// <summary> /// Initializes a new instance of the <see cref="PublishMessageRepository" /> class. /// </summary> /// <param name="connectionSettings">The connection settings to use.</param> public PublishMessageRepository(MqttDatabaseConnectionSettings connectionSettings) { this.connectionSettings = connectionSettings; SqlMapper.AddTypeHandler(typeof(PublishedMessagePayload), new JsonMapper <PublishedMessagePayload>()); }
/// <summary> /// Initializes a new instance of the <see cref="EventLogRepository" /> class. /// </summary> /// <param name="connectionSettings">The connection settings to use.</param> public EventLogRepository(MqttDatabaseConnectionSettings connectionSettings) { this.connectionSettings = connectionSettings; }
/// <summary> /// Starts the silo host. /// </summary> /// <returns>An <see cref="ISiloHost" />.</returns> private ISiloHost StartSilo() { var databaseConfig = this.configuration.GetSection("Database"); var connectionSettings = new MqttDatabaseConnectionSettings(); databaseConfig.Bind(connectionSettings); DashboardOptions dashboardOptions = null; if (this.configuration.GetSection("Orleans").GetSection("DashboardOptions").Exists()) { dashboardOptions = new DashboardOptions(); this.configuration.GetSection("Orleans").Bind("DashboardOptions", dashboardOptions); } // ReSharper disable ImplicitlyCapturedClosure var builder = new SiloHostBuilder().ConfigureServices( s => { s.Configure <MqttDatabaseConnectionSettings>(databaseConfig); s.AddSingleton <IEventLogRepository>(r => new EventLogRepository(connectionSettings)); s.AddSingleton <IBlacklistRepository>(u => new BlacklistRepository(connectionSettings)); s.AddSingleton <IDatabaseVersionRepository>(u => new DatabaseVersionRepository(connectionSettings)); s.AddSingleton <IPublishMessageRepository>(a => new PublishMessageRepository(connectionSettings)); s.AddSingleton <IUserRepository>(u => new UserRepository(connectionSettings)); s.AddSingleton <IWhitelistRepository>(u => new WhitelistRepository(connectionSettings)); s.AddSingleton <IMqttValidator>(new MqttValidator()); }).UseAdoNetClustering( options => { options.Invariant = "Npgsql"; options.ConnectionString = connectionSettings.ToConnectionString(); }).UseAdoNetReminderService( options => { options.Invariant = "Npgsql"; options.ConnectionString = connectionSettings.ToConnectionString(); }).Configure <ClusterOptions>(options => { this.configuration.GetSection("Orleans").Bind("ClusterOptions", options); }).Configure <EndpointOptions>( options => { var opt = new SiloEndpointOptions(); this.configuration.GetSection("Orleans").Bind("EndpointOptions", opt); opt.Bind(options); }).ConfigureApplicationParts(parts => parts.AddApplicationPart(typeof(MqttRepositoryGrain).Assembly).WithReferences()).ConfigureLogging( logging => { logging.ClearProviders(); logging.AddSerilog(dispose: true, logger: this.logger); }); if (dashboardOptions != null) { builder.UseDashboard( o => { o.HostSelf = true; o.CounterUpdateIntervalMs = dashboardOptions.CounterUpdateIntervalMs; o.Port = dashboardOptions.Port; }); } builder.AddSimpleMessageStreamProvider("SMSProvider").AddMemoryGrainStorage("PubSubStore"); var host = builder.Build(); return(host); }
/// <summary> /// Initializes a new instance of the <see cref="PublishMessageRepository" /> class. /// </summary> /// <param name="connectionSettings">The connection settings to use.</param> public PublishMessageRepository(MqttDatabaseConnectionSettings connectionSettings) { this.connectionSettings = connectionSettings; }