归档库在运行时被动态加载。为了向系统注册回调函数并表明自身是一个合法的归档模块,动态库必须导出一个名为 _PG_archive_module_init 的初始化入口函数。该函数必须返回一个指向 ArchiveModuleCallbacks 结构体常量的指针:
typedef struct ArchiveModuleCallbacks
{
ArchiveStartupCB startup_cb;
ArchiveCheckConfiguredCB check_configured_cb;
ArchiveFileCB archive_file_cb;
ArchiveShutdownCB shutdown_cb;
} ArchiveModuleCallbacks;
typedef const ArchiveModuleCallbacks *(*ArchiveModuleInit) (void);
在上述回调中,只有负责具体单文件归档的 archive_file_cb 回调是强制必需的,其余均为可选配置。