Описание итогового проекта курса "Разработчик C++ с нуля" . Название проекта - "SearchServer"
Что было сделано: Реализованы классы SearchServer, AsioServer, session, Settings, ThreadPool, InvertedIndex, DocPath, RelativIndex, Word, Logger выполняющие следующих функционал:
SearchServer:
- проверяет корректоность настроек сервера, выбрасывает соответствующие исключения в случае их неправильности;
- отображает текущие настройки сервера;
- запускает в отдельном потоке переодическое обновление словаря (переиндексацию файлов);
- передает в InvertedIndex вектор путей файлов подлежащих индексации, получаемых из настроек (перечислены явно или просто все из папки).
- запускает в отдельном потоке асио-сервер;
- выполняет поисковые запросы, формирует ответы;
- имеет возможность работать в режимах точного и не точного поиска(см. подробнее в SerchServer.cpp);
- записывает информацию о своей работе в лог-файл.
InvertedIndex:
- в многопоточном режиме производит индексацию файлов с составлением словаря;
- записывает информацию о своей работе в лог-файл;
- корректирует словарь при изменении, удалении, добавлении новых файлов.
DocPath:
- предоставляет классу InvertedIndex сведения о новых (и/или измененных) файлах подлжещих индексации и добавлению в словарь;
- предоставляет классу InvertedIndex сведения о файлах подлежащих удалению из словаря.
RelativIndex:
- участвует в подсчете релевантности файлов соответствующих поисковому запросу.
Word:
- участвует в получении выборки файлов содержащих все слова из поискового запроса (если сервер работает в режиме точного поиска).
Settings:
- хранит и отображает настройки сервера.
AsioServer:
- устанавливает и разрывает соединения с клиентами сервера;
- запускает соответствующие кадому клиенту сессии в асинхронном режиме.
session:
- получает от клиента команду (хедер) и информацию запроса, читая из сокета;
- отправляет ответ клиенту, записывая команду (хедер) и информацию содержащую ответ в сокет;
- проверяет корректность хедера запроса поступающего от клиента, разрывает соединение в случае некорректности, c отправлением клиенту уведомления об ошибке.
- передает SearchServer поисковые запросы поступившие от клиентов, получает от SearchServer ответы;
- передает клиенту текст запрашиваемого файла.
ThreadPool:
- предстваляет InverrtedIndex пул потоков для произведения индексации файлов.
ConvertJSON:
- получает/записывает настройки из/в класс(а) Settings;
- получает запросы из json файла;
- записывает ответы в json файл;
- выбрасывает исключения в случае некорректности обрабатываемых json файлов.
Logger:
- для логирования работы сервера.
Создано клиентское приложение в середе разработки RAD studio, позволяющее отправлять запросы серверу по сети.