1/*** 2 This file is part of PulseAudio. 3 4 Copyright 2022 Craig Howard 5 6 PulseAudio is free software; you can redistribute it and/or modify 7 it under the terms of the GNU Lesser General Public License as published 8 by the Free Software Foundation; either version 2.1 of the License, 9 or (at your option) any later version. 10 11 PulseAudio is distributed in the hope that it will be useful, but 12 WITHOUT ANY WARRANTY; without even the implied warranty of 13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 General Public License for more details. 15 16 You should have received a copy of the GNU Lesser General Public License 17 along with PulseAudio; if not, see <http://www.gnu.org/licenses/>. 18***/ 19 20#ifndef RESTART_MODULE_H 21#define RESTART_MODULE_H 22 23#ifdef __cplusplus 24extern "C" { 25#endif 26 27#include <pulse/timeval.h> 28 29#include <pulsecore/core.h> 30#include <pulsecore/thread-mq.h> 31 32/* Init and exit callbacks of the module */ 33typedef int (*init_cb)(pa_module *m); 34typedef void (*done_cb)(pa_module *m); 35/* Restart data structure */ 36typedef struct pa_restart_data pa_restart_data; 37 38/* Tears down the module using the done callback and schedules a restart after restart_usec. 39 * Returns a handle to the restart event. When the init callback finishes successfully during 40 * restart or when the restart should be cancelled, the restart event must be destroyed using 41 * pa_restart_free(). */ 42pa_restart_data *pa_restart_module_reinit(pa_module *m, init_cb do_init, done_cb do_done, pa_usec_t restart_usec); 43 44/* Free the restart event */ 45void pa_restart_free(pa_restart_data *data); 46 47#ifdef __cplusplus 48} 49#endif 50 51#endif 52