private void SetSettings(JObject settings)
{
var acc = PeerCast.AccessController;
settings.TryGetThen("maxRelays", v => acc.MaxRelays = v);
settings.TryGetThen("maxRelaysPerChannel", v => acc.MaxRelaysPerChannel = v);
settings.TryGetThen("maxDirects", v => acc.MaxPlays = v);
settings.TryGetThen("maxDirectsPerChannel", v => acc.MaxPlaysPerChannel = v);
settings.TryGetThen("maxUpstreamRate", v => acc.MaxUpstreamRate = v);
settings.TryGetThen("maxUpstreamRatePerChannel", v => acc.MaxUpstreamRatePerChannel = v);
settings.TryGetThen("channelCleaner", (JObject channel_cleaner) => {
channel_cleaner.TryGetThen("inactiveLimit", v => ChannelCleaner.InactiveLimit = v);
channel_cleaner.TryGetThen("mode", v => ChannelCleaner.Mode = (ChannelCleaner.CleanupMode)v);
});
settings.TryGetThen("portMapper", (JObject mapper) => {
var port_mapper = PeerCastApplication.Current.Plugins.GetPlugin<PeerCastStation.UI.PortMapperPlugin>();
if (port_mapper!=null) {
mapper.TryGetThen("enabled", v => port_mapper.Enabled = v);
port_mapper.DiscoverAsync();
}
});
owner.Application.SaveSettings();
}