using MessengerApi.Configuration.Model.Persistence.Base; using MessengerApi.Configuration.Parsers; using MessengerApi.Configuration.Sources.Environment; using MessengerBroker.Configuration.Model.Servers; using MessengerBroker.Configuration.Parsers; using MessengerBroker.Configuration.Sources.Environment; namespace MessengerBroker.Configuration.Model { public class BrokerConfiguration { public PersistenceConfiguration ApiPersistenceConfiguration { get; set; } public PersistenceConfiguration BrokerPersistenceConfiguration { get; set; } /// /// List of proxies that are trusted to provide forwarding headers. /// public string[] Proxies { get; set; } public Guid BrokerId { get; set; } public MasterServer[] MasterServers { get; set; } public SlaveServer[] SlaveServers { get; set; } public bool HousekeepingEnabled { get; set; } public int HousekeepingMessageAgeInMinutes { get; set; } public BrokerConfiguration( PersistenceConfiguration apiPersistenceConfiguration, PersistenceConfiguration broPersistenceConfiguration, Guid brokerId, MasterServer[] masters, SlaveServer[] slaves) { this.ApiPersistenceConfiguration = apiPersistenceConfiguration; this.BrokerPersistenceConfiguration = broPersistenceConfiguration; this.BrokerId = brokerId; this.MasterServers = masters; this.SlaveServers = slaves; this.Proxies = []; this.HousekeepingEnabled = true; this.HousekeepingMessageAgeInMinutes = 180; } public BrokerConfiguration(IEnvironmentConfigurationSource config) : this( ApiEnvironmentPersistenceConfigurationParser.Parse(config), EnvironmentPersistenceConfigurationParser.Parse(config), config.GetValue(Constants.EnvironmentVariables.BROKER_ID), MasterServerParser.Parse(config.GetValue(Constants.EnvironmentVariables.MASTER_SERVERS)), SlaveServerParser.Parse(config.GetValue(Constants.EnvironmentVariables.SLAVE_SERVERS))) { if(config.HasKey(Constants.EnvironmentVariables.HOUSEKEEPING_ENABLED)) { this.HousekeepingEnabled = config.GetValue(Constants.EnvironmentVariables.HOUSEKEEPING_ENABLED); this.HousekeepingMessageAgeInMinutes = config.GetValue(Constants.EnvironmentVariables.HOUSEKEEPING_MESSAGE_AGE_IN_MINUTES); } } } }