/*------------------------------------------------------------------------- * * receivelog.h * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * * IDENTIFICATION * src/bin/pg_basebackup/receivelog.h *------------------------------------------------------------------------- */ #ifndef RECEIVELOG_H #define RECEIVELOG_H #include "access/xlogdefs.h" #include "libpq-fe.h" #include "walmethods.h" /* * Called before trying to read more data or when a segment is * finished. Return true to stop streaming. */ typedef bool (*stream_stop_callback) (XLogRecPtr segendpos, uint32 timeline, bool segment_finished); /* * Global parameters when receiving xlog stream. For details about the individual fields, * see the function comment for ReceiveXlogStream(). */ typedef struct StreamCtl { XLogRecPtr startpos; /* Start position for streaming */ TimeLineID timeline; /* Timeline to stream data from */ char *sysidentifier; /* Validate this system identifier and * timeline */ int standby_message_timeout; /* Send status messages this often */ bool synchronous; /* Flush immediately WAL data on write */ bool mark_done; /* Mark segment as done in generated archive */ bool do_sync; /* Flush to disk to ensure consistent state of * data */ stream_stop_callback stream_stop; /* Stop streaming when returns true */ pgsocket stop_socket; /* if valid, watch for input on this socket * and check stream_stop() when there is any */ WalWriteMethod *walmethod; /* How to write the WAL */ char *partial_suffix; /* Suffix appended to partially received files */ char *replication_slot; /* Replication slot to use, or NULL */ } StreamCtl; extern bool CheckServerVersionForStreaming(PGconn *conn); extern bool ReceiveXlogStream(PGconn *conn, StreamCtl *stream); #endif /* RECEIVELOG_H */