private static IServiceCollection AddExtensions(this IServiceCollection services, IOptionsProvider optionsProvider) { var configuration = optionsProvider.Get <NtradaOptions>(); var extensionProvider = new ExtensionProvider(configuration); services.AddSingleton <IExtensionProvider>(extensionProvider); foreach (var extension in extensionProvider.GetAll()) { if (extension.Options.Enabled == false) { continue; } extension.Extension.Add(services, optionsProvider); } return(services); }
public void Add(IServiceCollection services, IOptionsProvider optionsProvider) { var options = optionsProvider.GetForExtension <RabbitMqOptions>(Name); services.AddSingleton(options); services.AddSingleton(sp => { var connectionFactory = new ConnectionFactory { HostName = options.Hostnames?.FirstOrDefault(), Port = options.Port, VirtualHost = options.VirtualHost, UserName = options.Username, Password = options.Password, RequestedConnectionTimeout = options.RequestedConnectionTimeout, SocketReadTimeout = options.SocketReadTimeout, SocketWriteTimeout = options.SocketWriteTimeout, RequestedChannelMax = options.RequestedChannelMax, RequestedFrameMax = options.RequestedFrameMax, RequestedHeartbeat = options.RequestedHeartbeat, UseBackgroundThreadsForIO = options.UseBackgroundThreadsForIO, Ssl = options.Ssl is null ? new SslOption() : new SslOption(options.Ssl.ServerName, options.Ssl.CertificatePath, options.Ssl.Enabled), }; var connection = connectionFactory.CreateConnection(options.ConnectionName); if (options.Exchange?.DeclareExchange != true) { return(connection); } var ntradaOptions = optionsProvider.Get <NtradaOptions>(); var exchanges = ntradaOptions.Modules .SelectMany(m => m.Value.Routes) .Where(m => m.Use.Equals(Name, StringComparison.InvariantCultureIgnoreCase)) .SelectMany(r => r.Config) .Where(c => c.Key.Equals("exchange", StringComparison.InvariantCultureIgnoreCase)) .Distinct() .ToList(); if (!exchanges.Any()) { return(connection); } var logger = sp.GetService <ILogger <IConnection> >(); var loggerEnabled = options.Logger?.Enabled == true; using (var channel = connection.CreateModel()) { foreach (var exchange in exchanges) { var name = exchange.Value; var type = options.Exchange.Type; if (loggerEnabled) { logger.LogInformation($"Declaring an exchange: '{name}', type: '{type}'."); } channel.ExchangeDeclare(name, type, options.Exchange.Durable, options.Exchange.AutoDelete); } } return(connection); }); services.AddTransient <IRabbitMqClient, RabbitMqClient>(); services.AddTransient <RabbitMqHandler>(); services.AddSingleton <IContextBuilder, NullContextBuilder>(); services.AddSingleton <ISpanContextBuilder, NullSpanContextBuilder>(); }
/// <summary> /// Creates a new RunManager instance /// </summary> /// <param name="args">Commandline parameters</param> public RunManager(string[] args) { _doRun = true; InstallMultiplexer(); #if DEBUG ShowConsole(); Thread.CurrentThread.Name = "Main"; ThreadHelper.Track(Thread.CurrentThread); #endif _opts = new Opts(); _files = new FileManager(this); var test = _files.GetDir(""); _commands = new Commands.Executor(this); _abortOnExit = new ManualResetEvent(false); _notifyHandlers = new List<ValueChangedHandler>(); foreach (var arg in args) { switch(arg.Substring(0,1)) { case "-": var argparts = arg.Substring(1).Split(new[] {"="}, StringSplitOptions.None); switch ( argparts[0].ToLower() ) { case "runmode": #region RunmodeSelector RunMode runMode = RunMode.Play; if (argparts.Length < 2) { Console.WriteLine("[Warning] No runmode supplied!"); break; } switch (argparts[1]) { case "select": var selectForm = new Form(); selectForm.Text = "Select Runmode"; selectForm.FormBorderStyle = FormBorderStyle.FixedToolWindow; selectForm.Size = new Size(330, 75); selectForm.StartPosition = FormStartPosition.CenterScreen; selectForm.Controls.Add(new Button() { Text = "Game", Location = new Point(5, 3), Size = new Size(75, 44) }); selectForm.Controls.Add(new Button() { Text = "Editor", Location = new Point(84, 3), Size = new Size(75, 44) }); selectForm.Controls.Add(new Button() { Text = "Server", Location = new Point(163, 3), Size = new Size(75, 44) }); selectForm.Controls.Add(new Button() { Text = "Collab Server", Location = new Point(242, 3), Size = new Size(75, 44) }); selectForm.Controls[0].Click += delegate { runMode = RunMode.Play; selectForm.Close(); }; selectForm.Controls[1].Click += delegate { runMode = RunMode.Edit; selectForm.Close(); }; selectForm.Controls[2].Click += delegate { runMode = RunMode.GameServer; selectForm.Close(); }; selectForm.Controls[3].Click += delegate { runMode = RunMode.CollabServer; selectForm.Close(); }; selectForm.Show(); selectForm.Focus(); Application.Run(selectForm); break; case "game": runMode = RunMode.Play; break; case "gameserver": runMode = RunMode.ServerPlay; break; case "edit": case "editor": runMode = RunMode.Edit; break; case "server": runMode = RunMode.GameServer; break; case "collabserver": case "editserver": runMode = RunMode.CollabServer; break; case "aioserver": runMode = RunMode.AIOServer; break; default: Console.WriteLine("[Warning] Unknown runMode: '"+argparts[0]+"'"); break; } Opts.Set("sys_runMode", runMode); #endregion break; case "console": #region ConsoleSection #if !DEBUG ShowConsole(); #else Console.WriteLine("[Info] Commandline-parameter '-console' given, ignoring..."); #endif #endregion break; } break; case "+": if (arg.Length < 2) continue; _commands.Parse(arg.Substring(1)); break; } } ((Options.Options)_opts).LockDownReadonly(); _views = new List<Base.Abstract.View>(); #if DEBUG ThreadHelper.Start(delegate { var dbgWnd = new DebugWindow(this); Application.Run(dbgWnd); }, "Dbg_Wnd"); #endif Console.ForegroundColor = _opts.Get<ConsoleColor>("gui_consoleColor"); _notifyHandlers.Add(_opts.RegisterChangeNotification("gui_consoleColor", delegate(string key, object value) { Console.ForegroundColor = (ConsoleColor)value; })); }