using System; using BO.ProcessServer.Business; using BO.ProcessServer.Commands.Base; using Quadarax.Foundation.Core.NLog; using Quadarax.Foundation.Core.QConsole; using Quadarax.Foundation.Core.QConsole.Attributes; using Quadarax.Foundation.Core.Value; // ReSharper disable InconsistentNaming namespace BO.ProcessServer.Commands { [CommandDefinition] internal class RunCommand : BaseLocalCommand { #region *** Constants *** private const string CS_CMD_RUN_NAME = "run"; private const string CS_CMD_RUN_DESCR = "Runs entire ProcessServer instance."; #endregion #region *** Properties *** public override string Name => CS_CMD_RUN_NAME; public override string Description => CS_CMD_RUN_DESCR; #endregion #region *** Private fields *** #endregion #region *** Constructors *** public RunCommand(Engine engine) : base(engine) { } #endregion #region *** EXECUTE *** protected override Result OnExecute() { using (var server = new Server(Configuration, FileSystem, LoggerFactory.Instance)) { WriteInfo("Starting..."); server.Start(); WriteInfo("Started."); WriteCaption("Press Esc to exit."); var exit = false; while (!exit) { var keyInfo = Console.ReadKey(); exit = keyInfo.Key == ConsoleKey.Escape; } server.Stop(); } return new Result(); } #endregion #region *** Private operations *** #endregion } }