logo search
Протокол HTTP

2.3.1 Система инициализации

Система инициализации предназначена для конфигурирования программы и запуска сервера. С нее начинается выполнение программы в силу того, что она включает в себя функцию main().

При разработке программы были определены следующие параметры:

· LogMode - режим журналирования, может принимать значения short (краткий режим журналирования) и verbose (вывод расширенных сообщений).

· LogDir - каталог, в который будет осуществляться запись журнальных файлов.

· Address - адрес в формате xxx.xxx.xxx.xxx, который будет использован для привязки серверного сокета.

· Port - номер порта, который будет использован для привязки серверного сокета.

· MaxClients - максимальное число одновременно обслуживаемых клиентов.

· AccountFile - путь к файлу, содержащему учетные записи пользователя.

· ModulesDir - каталог, содержащий подключаемые модули (в виде динамических библиотек).

Система инициализации производит трехшаговую установку параметров:

1. Устанавливаются значения по умолчанию.

2. Загружаются значения из файла конфигурации.

3. Загружаются значения из аргументов командной строки.

Каждый последующий шаг имеет приоритет над предыдущим; это означает, что если для параметра существует строка в файле конфигурации, то будет учитываться значение, загруженное из файла конфигурации; а если значение параметра указано еще и в командной строке, то будет использовано именно оно.

После определения значений параметров система инициализации производит настройку соответствующих систем (сервера, системы журналирования и системы безопасности) через предоставляемый ими интерфейс.

Система инициализации также осуществляет настройку обработчика сигнала SIGINT (см. п. 3.2.2) в целях возможности корректно прервать работу сервера. Для этого создается переменная типа int, изначально содержащая значение 1. При возникновении сигнала функция обработки осуществляет сброс переменной в 0, тем самым делая условие цикла приема подключений ложным, что приводит к выходу из цикла и завершения работы сервера.