Esempio n. 1
0
 public void Write <T>(T message)
 {
     try
     {
         Exception e = message as Exception;
         if (e != null)
         {
             WriteException(e);
             return;
         }
         string s = message as String;
         if (s != null)
         {
             WriteMessage(s);
         }
     }
     catch (Exception e)
     {
         _output.PrintMessage(e.Message, "\n", true);
     }
 }
Esempio n. 2
0
        public void OptionsToWork(String[] keyPress)
        {
            if (keyPress == null)
            {
                throw new ArgumentNullException("Введено пустое значение команды");
            }
            string command = "";
            string option;

            if (keyPress.Length > 2)
            {
                option  = keyPress[0] + " " + keyPress[1];
                command = keyPress.Skip(2).Aggregate((x, y) => x + ' ' + y);
            }
            else
            {
                option = keyPress.Aggregate((x, y) => x + " " + y);
            }

            switch (option)
            {
            case KeyOptions.Add:
            {
                if (!_inputs.VerifyString(ref command))
                {
                    _outMess.PrintMessage("значение при добавлении не может быть пустым, ");
                }
                _outMess.PrintMessage("вызовите справку или ввидите корректное значение для добавления хоста",
                                      "\n", false);
                CommandAdd(command);
                OptionsToWork(_inputs.ValuesFromUi());
                break;
            }

            case KeyOptions.Quit:
                _outMess.PrintMessage("Приложение завершает свою работу");
                Console.CancelKeyPress -= KeyPress;
                Thread.Sleep(1000);
                Environment.Exit(0);
                break;

            case KeyOptions.Start:
                _outMess.PrintMessage(KeyOptions.HelloMessage);
                break;

            case KeyOptions.Ping:
            {
                if (!CommandPing(command))
                {
                    _outMess.PrintMessage("Неверная команда для старта пингования");
                }
                Console.CancelKeyPress += KeyPress;
                OptionsToWork(_inputs.ValuesFromUi());
                break;
            }

            case KeyOptions.Show:
            {
                try
                {
                    CommandShow();
                }
                catch (NotImplementedException e)
                {
                    _outMess.PrintMessage(e.Message);
                }
                finally
                {
                    OptionsToWork(_inputs.ValuesFromUi());
                }
                break;
            }

            case KeyOptions.Help:
            {
                _outMess.PrintMessage(KeyOptions.GetHelpOptions().Aggregate((a, b) => $"{a}\n{b}"), "\n", false);
                OptionsToWork(_inputs.ValuesFromUi());
                break;
            }

            case KeyOptions.Remove:
            {
                if (!_inputs.VerifyString(ref command, "[", "]"))
                {
                    _outMess.PrintMessage("Введенные данные не верны");
                }
                int index;
                if (Int32.TryParse(command, out index))
                {
                    _outMess.PrintMessage(_worker.RemoveFromConfig(index) ? "Протокол удалён" : "Ошибка удаления");
                }
                else
                {
                    _outMess.PrintMessage("Вы ввели неверный параметр, пожалуйста пробуйте ввести заново");
                }

                OptionsToWork(_inputs.ValuesFromUi());
                break;
            }

            case KeyOptions.Stop:
                _pinger.StopWork();
                _outMess.PrintMessage("Введите процесс опроса остановлен, введите команду:");
                OptionsToWork((_inputs.ValuesFromUi()));
                break;

            default:
                _outMess.PrintMessage(
                    "Неизвестная опция! Повторите ввод или наберите [pinger -help] для вызова справки", "\n", true);
                OptionsToWork(_inputs.ValuesFromUi());
                break;
            }
        }