1 /*------------------------------------------------------------------------- 2 * 3 * receivelog.h 4 * 5 * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group 6 * 7 * IDENTIFICATION 8 * src/bin/pg_basebackup/receivelog.h 9 *------------------------------------------------------------------------- 10 */ 11 12 #ifndef RECEIVELOG_H 13 #define RECEIVELOG_H 14 15 #include "libpq-fe.h" 16 #include "walmethods.h" 17 18 #include "access/xlogdefs.h" 19 20 /* 21 * Called before trying to read more data or when a segment is 22 * finished. Return true to stop streaming. 23 */ 24 typedef bool (*stream_stop_callback) (XLogRecPtr segendpos, uint32 timeline, bool segment_finished); 25 26 /* 27 * Global parameters when receiving xlog stream. For details about the individual fields, 28 * see the function comment for ReceiveXlogStream(). 29 */ 30 typedef struct StreamCtl 31 { 32 XLogRecPtr startpos; /* Start position for streaming */ 33 TimeLineID timeline; /* Timeline to stream data from */ 34 char *sysidentifier; /* Validate this system identifier and 35 * timeline */ 36 int standby_message_timeout; /* Send status messages this often */ 37 bool synchronous; /* Flush immediately WAL data on write */ 38 bool mark_done; /* Mark segment as done in generated archive */ 39 bool do_sync; /* Flush to disk to ensure consistent state of 40 * data */ 41 42 stream_stop_callback stream_stop; /* Stop streaming when returns true */ 43 44 pgsocket stop_socket; /* if valid, watch for input on this socket 45 * and check stream_stop() when there is any */ 46 47 WalWriteMethod *walmethod; /* How to write the WAL */ 48 char *partial_suffix; /* Suffix appended to partially received files */ 49 char *replication_slot; /* Replication slot to use, or NULL */ 50 } StreamCtl; 51 52 53 54 extern bool CheckServerVersionForStreaming(PGconn *conn); 55 extern bool ReceiveXlogStream(PGconn *conn, 56 StreamCtl *stream); 57 58 #endif /* RECEIVELOG_H */ 59