アーカイブコールバックは、モジュールの実際のアーカイブ動作を定義します。 サーバは、個々のWALファイルを処理するために必要に応じてこれらを呼び出します。
startup_cbコールバックは、モジュールがロードされた直後に呼び出されます。
このコールバックは、必要な追加の初期化を実行するために使用できます。
アーカイブモジュールに状態がある場合は、state->private_dataを使用して保存できます。
typedef void (*ArchiveStartupCB) (ArchiveModuleState *state);
check_configured_cbコールバックは、モジュールが完全に設定されていて、WALファイルを受け入れる準備ができているかどうかを判断するために呼び出されます(たとえば、構成パラメータが適切な値に設定されているかどうかを判断します)。
check_configured_cbが定義されていない場合、サーバは常にモジュールが設定されていると想定します。
typedef bool (*ArchiveCheckConfiguredCB) (ArchiveModuleState *state);
trueが返された場合、サーバはarchive_file_cbコールバックを呼び出してファイルのアーカイブを続行します。
falseが返された場合、アーカイブは続行されず、アーカイバはサーバログに次のメッセージを出力します:
WARNING: archive_mode enabled, yet archiving is not configured
後者の場合、サーバは定期的にこの関数を呼び出し、trueが返された場合のみアーカイブが続行されます。
falseを返すときに、一般的な警告メッセージに追加情報を加えると便利な場合があります。
そのためには、falseを返す前にarch_module_check_errdetailマクロにメッセージを指定します。
errdetail()と同様に、このマクロはフォーマット文字列とそれに続くオプショナルリストの引数を受け入れます。
結果の文字列は警告メッセージのDETAIL行として出力されます。
archive_file_cbコールバックは、単一のWALファイルをアーカイブするために呼び出されます。
typedef bool (*ArchiveFileCB) (ArchiveModuleState *state, const char *file, const char *path);
trueが返された場合、サーバはファイルが正常にアーカイブされたかのように処理を進めます。
これには元のWALファイルのリサイクルまたは削除が含まれる場合があります。
falseが返されたかエラーが生じた場合には、サーバは元のWALファイルを保持し、後でアーカイブを再試行します。
fileにはアーカイブするWALファイルのファイル名だけが含まれ、pathにはWALファイルのフルパス(ファイル名を含む)が含まれます。
fileにはアーカイブするWALファイルのファイル名だけが含まれ、pathにはWALファイルのフルパス(ファイル名を含む)が含まれます。
archive_file_cbコールバックは、呼び出し毎にリセットされる存続期間の短いメモリコンテキストで、呼び出されます。
存続期間の長いストレージが必要な場合は、モジュールのstartup_cbコールバックにメモリコンテキストを作成します。
shutdown_cbコールバックは、アーカイバプロセスが終了するとき(たとえばエラー後など)、またはarchive_libraryの値が変更されたときに呼び出されます。
shutdown_cbが定義されていない場合、これらの状況では特別な処理は行われません。
アーカイブモジュールが何らかの状態を持っている場合、このコールバックはメモリリークを防ぐためにそれを解放すべきです。
typedef void (*ArchiveShutdownCB) (ArchiveModuleState *state);