96
Задачами модуля AsteriskProxy Main являются проверка существования
конфигурационного файла и его создания с типовыми значениями конфигурации
в случае отсутствия, чтение настроек из конфигурационного файла, создание
потоков для работы модулей Монитора и Парсера, выделение (создание и
блокировка до запроса) потока для Обработчика, запуск в работу модулей
Монитора и Парсера. Дальнейшая работа Главного модуля заключается в
ожидании завершения работы потоков (модулей). В случае завершения работы
потоков, главный модуль, следственно, сам AsteriskProxy завершает работу.
Задачами модуля AsteriskProxy Monitor являются подключение к
телефонной станции, в случае успешного подключения – авторизация на
телефонной станции, завершение работы модуля в случае неудачного
подключения к телефонной станции или неудачной авторизации. В случае
поступления данных от телефонной станции, модуль производит посимвольное
чтение данных от телефонной станции и осуществляет постановку полученных
данных в очередь на обработку. В случае отсутствия поступления данных от
телефонной станции, модуль переходит в режим ожидания данных. В случае
обрыва подключения к телефонной станции в результате программно-
аппаратного сбоя, повторное подключение произойдет автоматически на уровне
контроля подключения операционной системой телефонной станции. Модуль
всегда ожидает получения данных от станции, так как они поступают
непрерывно. Завершение работы модуля происходит по внешней команде.
Задачами модуля AsteriskProxy Parser являются постоянное наблюдение за
очередью данных на обработку, ожидание появления данных в очереди, чтение
данных из очереди во временный буффер. В случае обнаружения признака конца
пакета данных, содержимое временного буффера данных отправляются
экземпляру модуля Обработчика, запускаемого в новом потоке, из очереди
удаляются данные, помещенные во временный буффер, который в результате
очищается. Модуль переходит к ожиданию данных в очереди на обработку.
Завершение работы модуля возможно только по внешней команде.