PostgreSQL Source Code  git master
walsender.h
Go to the documentation of this file.
1 /*-------------------------------------------------------------------------
2  *
3  * walsender.h
4  * Exports from replication/walsender.c.
5  *
6  * Portions Copyright (c) 2010-2024, 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 "access/xlogdefs.h"
16 
17 /*
18  * What to do with a snapshot in create replication slot command.
19  */
20 typedef enum
21 {
26 
27 /* global state */
28 extern PGDLLIMPORT bool am_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;
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 PhysicalWakeupLogicalWalSnd(void);
44 extern void WalSndSignals(void);
45 extern Size WalSndShmemSize(void);
46 extern void WalSndShmemInit(void);
47 extern void WalSndWakeup(bool physical, bool logical);
48 extern void WalSndInitStopping(void);
49 extern void WalSndWaitStopping(void);
50 extern void HandleWalSndInitStopping(void);
51 extern void WalSndRqstFileReload(void);
52 
53 /*
54  * Remember that we want to wakeup walsenders later
55  *
56  * This is separated from doing the actual wakeup because the writeout is done
57  * while holding contended locks.
58  */
59 #define WalSndWakeupRequest() \
60  do { wake_wal_senders = true; } while (0)
61 
62 /*
63  * wakeup walsenders if there is work to be done
64  */
65 static inline void
66 WalSndWakeupProcessRequests(bool physical, bool logical)
67 {
68  if (wake_wal_senders)
69  {
70  wake_wal_senders = false;
71  if (max_wal_senders > 0)
72  WalSndWakeup(physical, logical);
73  }
74 }
75 
76 #endif /* _WALSENDER_H */
#define PGDLLIMPORT
Definition: c.h:1316
size_t Size
Definition: c.h:605
PGDLLIMPORT bool wake_wal_senders
Definition: walsender.c:130
void PhysicalWakeupLogicalWalSnd(void)
Definition: walsender.c:1733
void WalSndErrorCleanup(void)
Definition: walsender.c:327
PGDLLIMPORT bool am_cascading_walsender
Definition: walsender.c:116
void WalSndWakeup(bool physical, bool logical)
Definition: walsender.c:3666
void WalSndShmemInit(void)
Definition: walsender.c:3621
PGDLLIMPORT bool am_db_walsender
Definition: walsender.c:118
bool exec_replication_command(const char *cmd_string)
Definition: walsender.c:1977
void InitWalSender(void)
static void WalSndWakeupProcessRequests(bool physical, bool logical)
Definition: walsender.h:66
void WalSndInitStopping(void)
Definition: walsender.c:3745
void WalSndWaitStopping(void)
Definition: walsender.c:3771
void WalSndResourceCleanup(bool isCommit)
Definition: walsender.c:362
PGDLLIMPORT int max_wal_senders
Definition: walsender.c:121
PGDLLIMPORT bool log_replication_commands
Definition: walsender.c:125
void WalSndRqstFileReload(void)
Definition: walsender.c:3537
Size WalSndShmemSize(void)
Definition: walsender.c:3609
void HandleWalSndInitStopping(void)
Definition: walsender.c:3560
PGDLLIMPORT int wal_sender_timeout
Definition: walsender.c:123
PGDLLIMPORT bool am_walsender
Definition: walsender.c:115
void WalSndSignals(void)
Definition: walsender.c:3590
CRSSnapshotAction
Definition: walsender.h:21
@ CRS_USE_SNAPSHOT
Definition: walsender.h:24
@ CRS_NOEXPORT_SNAPSHOT
Definition: walsender.h:23
@ CRS_EXPORT_SNAPSHOT
Definition: walsender.h:22
XLogRecPtr GetStandbyFlushRecPtr(TimeLineID *tli)
Definition: walsender.c:3504
uint64 XLogRecPtr
Definition: xlogdefs.h:21
uint32 TimeLineID
Definition: xlogdefs.h:59