Горячая перезагрузка (Hot-Reload)
Механика горячей перезагрузки
MandaGram включает файловый монитор каталога plugins/. Когда вы перекомпилируете свой плагин, операционная система уведомляет клиент о записи нового файла. Клиент выполняет цикл перезагрузки:
- Вызывается функция деинициализации текущего плагина (если экспортирован
mandagram_plugin_deinit). - Снимаются все зарегистрированные хуки методов JVM и перехватчики сообщений TDLib.
- Выгружается предыдущая динамическая библиотека.
- Загружается новая версия, проверяются метаданные и вызывается
mandagram_plugin_init.
Теневые копии и блокировки файлов
В Windows загруженная через LoadLibrary DLL блокируется операционной системой от перезаписи компилятором. Чтобы обойти это ограничение, MandaGram использует теневое копирование:
При обнаружении plugins/my_plugin.dll клиент копирует файл в plugins/.cache/my_plugin_<hash>.dll и загружает именно эту копию. Исходный файл в plugins/ всегда остаётся свободным для перезаписи компилятором или IDE.
Жизненный цикл плагина
Время полного цикла перезагрузки плагина составляет в среднем 10–15 миллисекунд, что позволяет тестировать изменения прямо во время живой переписки в чате.