Ejemplo n.º 1
0
 /// <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;
 }
Ejemplo n.º 4
0
 /// <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>());
 }
Ejemplo n.º 5
0
 /// <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;
 }
Ejemplo n.º 6
0
        /// <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;
 }