Age Owner TLA Line data Source code
1 : /*------------------------------------------------------------------------- 2 : * 3 : * walsender.h 4 : * Exports from replication/walsender.c. 5 : * 6 : * Portions Copyright (c) 2010-2023, PostgreSQL Global Development Group 7 : * 8 : * src/include/replication/walsender.h 9 : * 10 : *------------------------------------------------------------------------- 11 : */ 12 : #ifndef _WALSENDER_H 13 : #define _WALSENDER_H 14 : 15 : #include <signal.h> 16 : 17 : /* 18 : * What to do with a snapshot in create replication slot command. 19 : */ 20 : typedef enum 21 : { 22 : CRS_EXPORT_SNAPSHOT, 23 : CRS_NOEXPORT_SNAPSHOT, 24 : CRS_USE_SNAPSHOT 25 : } CRSSnapshotAction; 26 : 27 : /* global state */ 28 : extern PGDLLIMPORT bool am_walsender; 29 : extern PGDLLIMPORT bool am_cascading_walsender; 30 : extern PGDLLIMPORT bool am_db_walsender; 31 : extern PGDLLIMPORT bool wake_wal_senders; 32 : 33 : /* user-settable parameters */ 34 : extern PGDLLIMPORT int max_wal_senders; 35 : extern PGDLLIMPORT int wal_sender_timeout; 36 : extern PGDLLIMPORT bool log_replication_commands; 37 : 38 : extern void InitWalSender(void); 39 : extern bool exec_replication_command(const char *cmd_string); 40 : extern void WalSndErrorCleanup(void); 41 : extern void WalSndResourceCleanup(bool isCommit); 42 : extern void WalSndSignals(void); 43 : extern Size WalSndShmemSize(void); 44 : extern void WalSndShmemInit(void); 45 : extern void WalSndWakeup(bool physical, bool logical); 46 : extern void WalSndInitStopping(void); 47 : extern void WalSndWaitStopping(void); 48 : extern void HandleWalSndInitStopping(void); 49 : extern void WalSndRqstFileReload(void); 50 : 51 : /* 52 : * Remember that we want to wakeup walsenders later 53 : * 54 : * This is separated from doing the actual wakeup because the writeout is done 55 : * while holding contended locks. 56 : */ 57 : #define WalSndWakeupRequest() \ 58 : do { wake_wal_senders = true; } while (0) 59 : 60 : /* 61 : * wakeup walsenders if there is work to be done 62 : */ 63 : static inline void 1 andres 64 GNC 312498 : WalSndWakeupProcessRequests(bool physical, bool logical) 65 : { 66 312498 : if (wake_wal_senders) 67 : { 68 296561 : wake_wal_senders = false; 69 296561 : if (max_wal_senders > 0) 70 275145 : WalSndWakeup(physical, logical); 71 : } 72 312498 : } 73 : 74 : #endif /* _WALSENDER_H */