xanax online vicodin meridia online best casino gambling online valium dosage generic xanax cheap prozac carisoprodol online propecia online buy lisinopril cheap alprazolam music ringtones alprazolam online free real ringtone cheap propecia free motorola ringtones soma tenuate online adipex online cheap meridia free samsung ringtones mtv ringtones free qwest ringtones cheap carisoprodol free sonyericsson ringtones cheap clonazepam free real ringtones cheap diazepam free mono ringtone free verizon ringtones cheap clonazepam free wwe ringtones didrex free sprint ringtones buy adipex free cingular ringtones cheap tramadol advice casino online free sharp ringtones cyclobenzaprine online sprint ringtones valium online cheap meridia sonyericsson ringtones free alltel ringtones funny ringtones buy ultracet free music ringtones valium online cheap cialis buy phentermine mtv ringtones generic levitra free free ringtones clonazepam online verizon ringtones generic viagra buy ambien free nextel ringtones lexapro and valium cheap ambien wellbutrin online wellbutrin online tracfone ringtones mp3 ringtones free real ringtones phentermine soma online generic diazepam cheap norco cheap fioricet cingular ringtones free real ringtones albuterol online free polyphonic ringtones cheap prozac cialis online ambien celexa online propecia online samsung ringtones motorola ringtones funny ringtones free sprint ringtones free sprint ringtones phentermine online free free ringtones free kyocera ringtones buy zyban mono ringtones buy ultram online xenical free real ringtones xenical online free cingular ringtones free kyocera ringtones free sonyericsson ringtones valium overdose free ericsson ringtones cheap fioricet but soma wellbutrin online fioricet online wellbutrin online free sharp ringtones what does valium do buy nexium midi ringtones free sonyericsson ringtones paxil online midi ringtones valium sale ambien online free sprint ringtones adipex online ativan online buy nexium free sagem ringtone cheap ativan free mono ringtones lorazepam online free ringtones free mono ringtones real ringtones generic ativan phentermine online norco online ericsson ringtones buy cialis ultram online free nokia ringtones levitra online real ringtones free ericsson ringtones ortho online free free ringtones free samsung ringtones cyclobenzaprine online cheap wellbutrin punk ringtones cool ringtones buy clomid free alltel ringtones lortab online diazepam free sagem ringtones ativan online free motorola ringtones nextel ringtones buy meridia free nokia ringtones cheap paxil free sony ericsson ringtones best bonus casino online sprint ringtones alltel ringtones xenical online online tramadol fioricet online free polyphonic ringtones buy carisoprodol ativan online ambien online alltel ringtones buy clomid cheap alprazolam free samsung ringtones free nokia ringtones adipex online verizon ringtones free kyocera ringtones free tracfone ringtones free qwest ringtone xanax online generic clonazepam xenical online cingular ringtones cheap cialis generic alprazolam nexium online cheap fioricet free funny ringtones free mp3 ringtones ultracet online cheap ativan verizon ringtones cheap diazepam ericsson ringtones rivotril free ringtone cheap carisoprodol cheap xanax free ringtones free tracfone ringtones buy vicodin wwe ringtones buy phentermine cyclobenzaprine online verizon ringtones buy hydrocodone ==Задача: библиотека для журналирования==
Описание
Создать библиотеку, котороая позволяет регистрировать отладочную информацию о программе. Задача состоит из нескольких частей, каждая из которых добавляет к существуюей реализации некоторую функциональность.
Задача 1
Функциональные требования
- Библиотека должна предоставлять интерфейс для записи некоторой информации в журнал.
- Пользователь должен иметь возможность задавать приоритет сообщения, который служит двум целям:
- Библиотека должна отбрасывать сообщения с приоритетом ниже установленного.
- Выходные записе в журнале должны содержать информацию о приоритете сообщения.
- Количество определенных приоритетов должно быть не меньше трех.
- Интерфейс библиотеки должен позволять состовлять журнальные записи из нескольких частей, каждая из которых может представлять собой:
- строку;
- целое число;
- число с плавающей точкой;
- указатель (целое число в 16-тиричной записи).
- Проверка типов из которых составляется запись должна происходить во время компиляции.
- Библиотека должна включать возможность для записи журналируемых сообщений в:
- поток ошибок;
- файл.
Нефункциональные требования
- Пользовательский код, использующий интерфейс библиотеки, должен быть независим от конкретного назначения журналируемой информации (терминал, файл, системный журнал, ...). Т.е. добавление нового способа для сохранения журналируемых данных не должно вызывать никаких изменений в исходном коде клиента библиотеки.
- Библиотека должна предоставлять пользователю возможность для разработки новых «драйверов» для вывода сообщений.
Требования к проекту
Проект должен включать в себя следующую пользовательскую документацию:
- Инструкция по сборке и установке.
- Описание интерфейса пользователя для записей в журнал.
- Описание интерфейса для создания новых драйверов вывода сообщений.
Задача 2
Задача состоит в перенесении процесса доставки (вывода) журналируемой информации в отдельный поток исполнения.
Требования
- Процесс вывода журналируемой записи должен осуществляться в отдельной нити.
- Пользователь не должен заботиться о сериализации доступа объектам библиотеки. Безопасность кода с точки зрения потоков должна осуществляться библиотекой.
Требования к проекту
- Использовать Boost thread для реализации многопоточности.
- Документировать стратегию обработки ошибочных ситуаций.
Задача 3
Суть задачи заключается в изменении реализации (и интерфейса) решения задачи 2 таким образом, чтобы пользователь мог сам решать, должна ли библиотека обрабатывать журналируемые сообщения синхронно или в отдельной нити.
Можно воспользоваться паттерном стратегия.
Данная задача может рассматриваться как часть второй задачи и, соответственно может быть реализованна вместе с ней. Оцениваться такое решение будет так же как последовательное решение задач 2 и 3.