# tagsaver

Выполняет автоматическое сохранение значений тегов с флагом `autosave` в файлы и восстанавливает их при подаче команды start.

    plugin.tagsaver:
      enable: on

      module.tagsaver1:
        enable:       on
        history:      10
        file.save:    saves/1/save
        file.chng:    saves/1/save.chng
        mirror.save:  saves/1/save.mirror
        mirror.chng:  saves/1/save.mirror.chng
        flag.autosave: autosave.shdsh

Параметр | По умолчанию | Описание
--- | --- | ---
flag.autosave | `autosave` | по умолчанию. Модули, теги которых должен сохранять данный модуль, должные иметь такое же значение в своих `flag.autosave`
file.save | `saves/save` | файл хранения значений сохраняемых тегов. Имя файла произвольное. Также можно указать путь - абсолютный, либо относительно файла конфигурации. Чтение из этого файла выполняется в момент старта системы командой start, а запись - в процессе останова (команда stop), либо по достижению лимита записей в файле `file.chng`
file.chng | file.save + `.chng` | файл хранения измененных значений сохраняемых тегов в процессе работы системы. Цель - обеспечить сохранность измененных значений тегов при внезапном завершении работы программы. Имя файла произвольное. Также можно указать путь - абсолютный, либо относительно файла конфигурации. Чтение файла выполняется в момент старта системы, а запись в процессе работы системы при изменении какого-либо из сохраняемых тегов. При останове системы после обновления файла file.save данный файл уничтожается.
mirror.save | file.save + `.mirror` | зеркалирование файла `file.save`
mirror.chng | mirror.save + `.chng` | зеркалирование файла `file.chng`
history | 10 | количество файлов предыдущих записей
chng.max | 10000 | максимальное количество строк в файлах `*.chng`, по достиженю которого происходит полное сохранение

Если во время старта файлы `file.save` и `mirror.save` отсутствуют, то создаются.

Если при старте не удается считать значения из основных файлов `file.save`/`file.chng`, будет выполнена попытка считать данные из файлов зеркалирования - `mirror.save`/`mirror.chng`, и, если успешно, обновляется основной файл `file.save`. Если же при чтении зеркала возникла ошибка, то старт системы прерывается.

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