Las retrollamadas de archivado definen el comportamiento de archivado real del módulo. El servidor las llamará según sea necesario para procesar cada archivo WAL individual.
La retrollamada startup_cb se llama poco después de que el
módulo se carga. Esta retrollamada se puede utilizar para realizar cualquier inicialización
adicional requerida. Si el módulo de archivado tiene algún estado, puede usar
state->private_data para almacenarlo.
typedef void (*ArchiveStartupCB) (ArchiveModuleState *state);
La retrollamada check_configured_cb se llama para determinar
si el módulo está completamente configurado y listo para aceptar archivos WAL (por ejemplo,
sus parámetros de configuración están definidos con valores válidos). Si no se define ningún
check_configured_cb, el servidor siempre asume que el
módulo está configurado.
typedef bool (*ArchiveCheckConfiguredCB) (ArchiveModuleState *state);
Si se devuelve true, el servidor procederá a archivar el
archivo llamando a la retrollamada archive_file_cb.
Si se devuelve false, el archivado no procederá, y el
archivador emitirá el siguiente mensaje en el registro del servidor:
WARNING: archive_mode enabled, yet archiving is not configured
En este último caso, el servidor llamará periódicamente a esta función, y el
archivado procederá solo cuando devuelva true.
Al devolver false, puede ser útil añadir alguna información
adicional al mensaje de advertencia genérico. Para hacer eso, proporciona un
mensaje a la macro arch_module_check_errdetail antes de
devolver false. Al igual que
errdetail(), esta macro acepta una cadena de formato
seguida de una lista opcional de argumentos. El resultado se emitirá como
la línea DETAIL del mensaje de advertencia.
La retrollamada archive_file_cb se llama para archivar un
solo archivo WAL.
typedef bool (*ArchiveFileCB) (ArchiveModuleState *state, const char *file, const char *path);
Si se devuelve true, el servidor procede como si el archivo
se hubiera archivado con éxito, lo que puede incluir el reciclaje o la eliminación del
archivo WAL original. Si se devuelve false o se produce un error, el servidor
conservará el archivo WAL original e intentará el archivado nuevamente más tarde.
file contendrá solo el nombre del archivo WAL a
archivar, mientras que path contiene la ruta completa
del archivo WAL (incluyendo el nombre del archivo).
La retrollamada archive_file_cb se llama en un
contexto de memoria de corta duración que se restablecerá entre invocaciones. Si
necesitas un almacenamiento de mayor duración, crea un contexto de memoria en la
retrollamada startup_cb del módulo.
La retrollamada shutdown_cb se llama cuando el proceso
archivador finaliza (por ejemplo, después de un error) o cuando el valor de
archive_library cambia. Si no se define ningún
shutdown_cb, no se toma ninguna acción especial en
estas situaciones. Si el módulo de archivado tiene algún estado, esta retrollamada
debe liberarlo para evitar fugas (leaks).
typedef void (*ArchiveShutdownCB) (ArchiveModuleState *state);