Функция on_shutdown
Добавлено в версии 2.8.1. Зарегистрировать и/или отменить регистрацию функции on_shutdown.
Параметры:
-
arg(void*) — Указатель на область, которую может использовать новый обработчик -
new_handler(function*) — Указатель на функцию, которая будет зарегистрирована, или NULL -
old_handler(function*) — Указатель на функцию, регистрация которой будет отменена, или NULL
Возвращает
статус операции. 0 - успех, -1 - неудача
Тип возвращаемого значения
int
Зарегистрированная функция будет вызвана при завершении работы экземпляра Tarantool. По функциональности это аналогично тому, что делает box.ctl.on_shutdown.
Если функций on_shutdown несколько, экземпляр Tarantool вызовет их в порядке, обратном порядку регистрации, то есть первой будет вызвана функция, зарегистрированная последней.
Обычно разработчик модуля регистрирует функцию on_shutdown, которая выполняет необходимую модулю очистку, а затем возвращает управление экземпляру Tarantool. Такая функция on_shutdown должна работать быстро либо использовать асинхронный механизм ожидания (например, coio_wait).
Возможные ошибки:
old_handlerне существует (errno = EINVAL)new_handlerиold_handlerодновременно равны NULL (errno = EINVAL)- не удалось выделить память (
errno = ENOMEM)
Пример
Если программа .c с использованием C API содержит функцию:
int on_shutdown_function(void *arg){printf("Bye!\n");return 0;}
а далее в функции, которую вызывает экземпляр, содержится строка
box_on_shutdown(NULL, on_shutdown_function, NULL);
то, если всё пройдёт успешно, при завершении работы экземпляра будет
выведено Bye!.