public void Run(LauncherConfig config) { _config = config; if (_config.Help) { Usage(); return; } Log.Error(); Log.Error(@"______ _ _ _____ _ "); Log.Error(@"| ___ \ | | (_) |_ _| | | "); Log.Error(@"| |_/ /___ __ _ ___| |_ ___ _____ | |_ __ __ _ __| | ___ _ __ "); Log.Error(@"| // _ \/ _` |/ __| __| \ \ / / _ \ | | '__/ _` |/ _` |/ _ \ '__|"); Log.Error(@"| |\ \ __/ (_| | (__| |_| |\ V / __/ | | | | (_| | (_| | __/ | "); Log.Error(@"\_| \_\___|\__,_|\___|\__|_| \_/ \___| \_/_| \__,_|\__,_|\___|_| "); Log.Error(); try { Console.CancelKeyPress += (s, e) => { Log.Info("Termination signal sent."); Stop(); }; LogManager.Adapter = new ConsoleOutLoggerFactoryAdapter { ShowLogName = true }; if (_config.PopulateEventStore) { _launcher.InitializeEventStore(_config.EventStoreParameters, _config.RunEmbeddedEventStore); } if (_config.RunMessageBroker) { MessageBrokerLauncher.Run(); Log.Info("Started Message Broker"); } foreach (var service in _config.ServicesToStart) { ParseCommand($"start {service}"); } foreach (var unhandledCommand in _config.InvalidArguments) { Log.Error("Unrecognised Command: {0}", unhandledCommand); } if (!_config.IsInteractive) { if (_launcher.GetRunningServices().Any()) { _terminationSignal.WaitOne(); } return; } Log.Info(); Log.Info("INTERACTIVE MODE - type 'help' for help or 'exit' to EXIT"); // interactive mode while (_running) { var x = Console.ReadLine(); try { if (x == null || x == "exit" || x == "quit") { break; } if (ParseCommand(x)) { continue; } if (x == "help" || x == "h" || x == "") { } else { Log.Error("Didn't understand command {0}", x); } Console.WriteLine(); Console.WriteLine("Available Commands"); Console.WriteLine("=================="); Console.WriteLine("start"); Console.WriteLine(" p|pricing - launch a pricing service."); Console.WriteLine(" r|reference - launch a reference service."); Console.WriteLine(" b|blotter - launch a blotter service."); Console.WriteLine(" e|execution - launch a trade execution service."); Console.WriteLine(" a|analytics - launch an analytics service."); Console.WriteLine("kill [name] - kills a service (use status to find names)."); Console.WriteLine("status - returns a list of running services."); Console.WriteLine("help - show this page."); Console.WriteLine("exit - close the launcher."); Console.WriteLine(); } catch (Exception e) { Log.Error("Error handling request " + e.Message); } } } catch (Exception e) { Log.Error("Exception: " + e.Message); } }