File module.h

Материал из ISPWiki
Перейти к: навигация, поиск


Макросы

#define  LIB_ENTRY_POINT

Функция для инициализации библиотеки


#define  LIBRARY_ENTRY
#define  MAX_SHUTDOWN_DELAY

Рекомендуемое время в миллисекундах, которое может пройти после запроса на выгрузку модуля до его реальной деактивации


#define  MODULE_INIT ( NAME , DEPEND )

Объявление блока инициализации модуля

Классы

namespace isp_api

Классы и функции для работы с действиями (Action) и событиями (Event)

Открытые члены (кратко)

Макросы

#define LIB_ENTRY_POINT

Функция для инициализации библиотеки

Если библиотека содержит функцию с таким именем, она будет вызвана до инициализации компонентов. В случае, если эта функция вернет false, библиотека будет выгружена.

#define LIBRARY_ENTRY

#define MAX_SHUTDOWN_DELAY

Рекомендуемое время в миллисекундах, которое может пройти после запроса на выгрузку модуля до его реальной деактивации

#define MODULE_INIT ( NAME , DEPEND )

Объявление блока инициализации модуля

Код для инициализации модуля должен быть заключен в фигурные скобки и следовать сразу за этим макросом Одна библиотека может иметь неограниченное количество таких блоков

Аргументы:
[NAME] имя модуля
[DEPEND] строка, содержащая список имен используемых модулей разделенных пробелами Если параметр DEPEND не пуст, гарантируется, что код инициализации для этого модуля будет выполнен только после инициализации всех модулей, перечисленных в DEPEND, или не будет выполнен вообще.
Warning: Если в [DEPEND] будет указан модуль, находящийся в другой библиотеке, загрузка вашего модуля будет отложена, до момента загрузки соответствующего модуля. В случае, если при загрузке такого модуля произойдет ошибка, вместе с ним будут выгружены все модули этой библиотеки. Например, если вы укажите в DEPEND модуль "last", ошибка в вашем модуле приведет к выгрузке не только вашей библиотеки, но и к завершению работы всей панели. Есть ряд зарезервированных имен:
  • connection модуль будет загружен после того, как загрузятся все модули от connection не зависящие
  • last модуль будет загружен после того, как загрузятся все модули не зависящие от last и connection Ошибки в модулях зависящих от last или connection не приводят к завершению загрузки библиотеки
See also: RegisterComponent
See also: LoadModule

extern DataBase *db; 
MODULE_INIT(mytable, "database") { 
 // мы предполгаем, что некий модуль database инициализурует значение переменной db 
 new Table(db); 
}