public Runmode(ILoggerFactory loggerFactory, BaseConfig baseConfig, RunmodeConfig runmodeConfig) { _runmodeConfig = runmodeConfig; _logger = loggerFactory.CreateLogger <Runmode>(); _stopToken = new StopToken(); _modeBase = new ModeBase(loggerFactory, baseConfig, _stopToken); }
public Runmode(ILoggerFactory loggerFactory, BaseConfig baseConfig, Func <RunmodeConfig> configLoader) { RunmodeConfig runmodeConfig = configLoader(); _logger = loggerFactory.CreateLogger <Runmode>(); _stopToken = new StopToken(); Setups.Databases repos = Setups.SetUpRepositories(_logger, baseConfig); (_broadcastServer, _overlayConnection) = Setups.SetUpOverlayServer(loggerFactory); _modeBase = new ModeBase(loggerFactory, repos, baseConfig, _stopToken, _overlayConnection, ProcessMessage); _modeBase.InstallAdditionalCommand(new Command("reloadinputconfig", _ => { ReloadConfig(configLoader().InputConfig); return(Task.FromResult(new CommandResult { Response = "input config reloaded" })); })); // TODO felk: this feels a bit messy the way it is done right now, // but I am unsure yet how I'd integrate the individual parts in a cleaner way. InputConfig inputConfig = runmodeConfig.InputConfig; _inputParser = inputConfig.ButtonsProfile.ToInputParser(); _inputBufferQueue = new InputBufferQueue <QueuedInput>(CreateBufferConfig(inputConfig)); _anarchyInputFeed = CreateInputFeedFromConfig(inputConfig); _inputServer = new InputServer(loggerFactory.CreateLogger <InputServer>(), runmodeConfig.InputServerHost, runmodeConfig.InputServerPort, _anarchyInputFeed); }