Skip to content

J-Roux/test

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

19 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Задание 2. Написать консольную программу, которая имеет следующий функционал: Основной поток обрабатывает пользовательский клавиатурный ввод и управляет работой других потоков. Второй поток (ведущий) через случайные промежутки времени генерирует события, которые должны протоколироваться третьим потоком. Событие представляет собой структуру Event, содержащую поля: текущие дата и время идентификатор события 3 параметра типа int. Передача событий между потоками должна осуществляться посредством анонимных пайпов. Протоколирование должно быть многоуровневым с возможностью переключения режимов «на лету». Объект протоколировщика любого уровня представляет собой потомок абстрактного класса Logger, который содержит прототип метода протоколирования и фабричный метод для порождения экземпляров классов-наследников.

class Logger { protected: Logger(char* fileName); ~Logger(); public: static Logger* GetLogger(int level); virtual Logger* Write(Event event); }

Нулевой уровень протоколирования записывает информацию о текущем времени и идентификаторе события. Первый уровень записывает информацию о дате и времени, идентификаторе события и первом параметре Второй уровень записывает полную информацию о событии

Команды пользовательского ввода: date – печать текущей даты time – печать текущего времени exit – завершить работу программы faster – уменьшить интервал между порождениями событий slower – увеличить интервал между порождением событий pause – приостановить генерацию событий resume – продолжить генерацию событий level 0 – установить нулевой уровень протоколирования level 1 – установить первый уровень протоколирования level 2 – установить второй уровень протоколирования stat – вывести количество произошедших событий Задание 3. В предыдущем задании реализовать сопоставление команды и её обработчика посредством std::map<std::string, {routine}> Обработчик должен принимать в качестве параметров остаток строки, идущий после серии пробельных символов, как const char*. Если строка не содержит параметров, в обработчик следует передавать NULL. Организовать выв од сообщений об ошибках при передаче некорректных аргументов и при запросе некорректной команды через поток вывода stderr.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published