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