Режим сторожевого таймера

Такой режим активируется при запуске Updater.exe с параметром wthtimer:

Updater.exe -wthtimer

Updater не допускает повторный запуск себя в одинаковом режиме (невозможно запустить два процесса Updater.exe в режиме сторожевого таймера). При этом Updater.exe может быть запущен в разных режимах одновременно.

Общее описание функции

В этом режиме Updater следит за работоспособностью ПО PayPRO. Если платежное ПО зависло или внепланово закрылось - Updater незамедлительно восстановит его работу. По умолчанию режим сторожевого таймера включен, его настройка не требуется.

Платежное ПО (T.exe) также выступает в роли сторожевого таймера для программы Updater. Если Updater закрылся, то ПО снова запустит его. Таким образом эти две программы контролируют стабильность работы друг друга и исключают сбои или зависания ПО обеспечивая стабильную работу терминала и прием платежей.

Принцип определения зависания

  1. Во время работы T.exe пишет в файл watchdog.timer текущее время с определенным интервалом.
  2. С другим интервалом Updater проверяет данные в этом файле и если обнаруживается, что данные не записываются более 5 минут - Updater констатирует, что T.exe завис и пытается его закрыть. Сначала корректно, но если по окончанию отведенного на это времени закрытия не происходит - жестко прерывает процесс T.exe.

Принцип определения неожиданного закрытия ПО

  1. Если Updater определяет, что T.exe пропал из списка процессов, то осуществляет его немедленный запуск.
  2. При этом не анализируются данные в файле watchdog.timer, даже если запись в этот файл производилась совсем недавно.

Особые условия

Файл ''watchdog.nostart''

  1. T.exe не будет запущен, если в папке с программой есть файл watchdog.nostart. Этот файл является признаком того, что Updater в режиме сторожевого таймера не должен производить никаких действий. Такой файл создается самой программой при обновлении программы (в это время T.exe закрывается на время его обновления, файл watchdog.nostart препятствует преждевременному запуску программы).
  2. Также файл watchdog.nostart создается при закрытии программы из административного меню. Все другие способы закрытия программы приведут к ее повторному запуску. Поэтому если вам требуется закрыть ПО - пользуйтесь закрытием ПО через административное меню.
  3. T.exe при запуске удаляет файл watchdog.nostart.
  4. В файл watchdog.nostart записывается причина по которой не следует запускать ПО и время возникновения события. Информация является справочной.

Файл ''Flags\failure.flg''

  1. При закрытии или запуске T.exe сторожевым таймером в папке Flags создается файл failure.flg. В него записывается причина запуска или закрытия программы.
  2. Файл используется T.exe во время запуска для определения были ли проблемы в работе ПО. Очевидно, что если такой файл создался, то перед запуском ПО зависло или произошел сбой в его работе. Сообщения об этом фиксируются в логе и передаются в Диспетчерскую.
  3. T.exe при запуске удаляет файл failure.flg.

Во время запуска T.exe в папке Flags создается файл working.flg (с временем запуска и текстом «Терминал запущен»). Данный файл существует во время работы ПО и удаляется самой программой в момент корректного завершения работы.

Однако при выключении питания компьютера этот файл остается, что является признаком некорректного закрытия программы. Одновременно с этим анализируется наличие файла failure.flg и если failure.flg отсутствует, значит было не зависание ПО, а именно выключение питания (иначе сторожевой таймер создал бы файл failure.flg). Если есть оба файла - значит зависание ПО. Именно таким образом ПО определяет точную причину некорректного завершения работы.

Также если файл working.flg отсутствует, но присутствует файл failure.flg - это означает корректное завершение работы, однако сторожевой таймер все-равно запустил ПО. Если сторожевой таймер запустил ПО, значит при корректном завершении работы не был создан файл watchdog.nostart. Таким образом программа делает вывод, что запуск ПО произведен после корректного закрытия, но закрытие было не из админ.меню (например, через диспетчер задач или по Alt+F4). Для того, чтобы ПО не перезапускалось автоматически необходимо закрыть ПО через админ.меню по кнопке «Завершить работу ПО».