Les fonctions de support d'archivage définissent le comportement d'archivage proprement dit du module. Le serveur les appellera suivant les besoins pour traiter chaque fichier segment WAL individuellement.
La fonction de rappel startup_cb
est appelée peu après
le chargement du module. Ce rappel peut être utilisé pour effectuer
toute initialisation requise. Si le module d'archivage comprend des états,
il est possible de les stocker en
utilisant state->private_data
.
typedef void (*ArchiveStartupCB) (ArchiveModuleState *state);
La fonction de support check_configured_cb
est appelée pour
déterminer si le module est pleinement configuré et prêt à traiter des
fichiers segment WAL (par exemple, si ses paramètres de configuration sont
définis avec des valeurs valides). Si la fonction
check_configured_cb
n'est pas définie, le serveur
présumera que le module est configuré.
typedef bool (*ArchiveCheckConfiguredCB) (ArchiveModuleState *state);
Si true
est renvoyé, le serveur procédera à l'archivage
en appelant la fonction archive_file_cb
. Si
false
est renvoyé, l'archivage ne sera pas effectué, et
l'archiver émettra le message suivant dans les traces du serveur :
WARNING: archive_mode enabled, yet archiving is not configured
Dans ce dernier cas, le serveur appellera périodiquement cette fonction, et
l'archivage ne sera effectué que lorsque le booléen true
sera
renvoyé.
La fonction archive_file_cb
est appelée pour archiver un
fichier segment WAL individuel.
typedef bool (*ArchiveFileCB) (ArchiveModuleState *state, const char *file, const char *path);
Si la valeur true
est renvoyée, le serveur procédera comme si le
fichier était archivé avec succès, ce qui peut inclure de recycler ou supprimer
le fichier segment WAL original. Si la valeur false
est renvoyée, le
serveur conservera le fichier segment WAL original et réessayera de
l'archiver plus tard.
file
contiendra juste le nom du fichier du segment WAL à
archiver, alors que path
contiendra le chemin complet du
fichier segment WAL (nom du fichier inclus).
La fonction shutdown_cb
est appelée quand le processus
archiver s'arrête (par exemple, après une erreur) ou si la valeur de
archive_library change. Si la fonction
shutdown_cb
n'est pas définie, aucune action spécifique
ne sera entreprise lors de ces situations.
Si le module d'archivage gère des états, ce rappel devrait les libérer pour éviter
des fuites mémoire.
typedef void (*ArchiveShutdownCB) (ArchiveModuleState *state);