/***
    This file is part of PulseAudio.
    Copyright 2022 Craig Howard
    PulseAudio is free software; you can redistribute it and/or modify
    it under the terms of the GNU Lesser General Public License as published
    by the Free Software Foundation; either version 2.1 of the License,
    or (at your option) any later version.
    PulseAudio is distributed in the hope that it will be useful, but
    WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
    General Public License for more details.
    You should have received a copy of the GNU Lesser General Public License
    along with PulseAudio; if not, see .
***/
#ifndef RESTART_MODULE_H
#define RESTART_MODULE_H
#ifdef __cplusplus
extern "C" {
#endif
#include 
#include 
#include 
/* Init and exit callbacks of the module */
typedef int (*init_cb)(pa_module *m);
typedef void (*done_cb)(pa_module *m);
/* Restart data structure */
typedef struct pa_restart_data pa_restart_data;
/* Tears down the module using the done callback and schedules a restart after restart_usec.
 * Returns a handle to the restart event. When the init callback finishes successfully during
 * restart or when the restart should be cancelled, the restart event must be destroyed using
 * pa_restart_free(). */
pa_restart_data *pa_restart_module_reinit(pa_module *m, init_cb do_init, done_cb do_done, pa_usec_t restart_usec);
/* Free the restart event */
void pa_restart_free(pa_restart_data *data);
#ifdef __cplusplus
}
#endif
#endif