1 /*-------------------------------------------------------------------------
2  *
3  * walsender.h
4  *	  Exports from replication/walsender.c.
5  *
6  * Portions Copyright (c) 2010-2017, 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 #include "fmgr.h"
18 
19 /*
20  * What to do with a snapshot in create replication slot command.
21  */
22 typedef enum
23 {
24 	CRS_EXPORT_SNAPSHOT,
25 	CRS_NOEXPORT_SNAPSHOT,
26 	CRS_USE_SNAPSHOT
27 } CRSSnapshotAction;
28 
29 /* global state */
30 extern bool am_walsender;
31 extern bool am_cascading_walsender;
32 extern bool am_db_walsender;
33 extern bool wake_wal_senders;
34 
35 /* user-settable parameters */
36 extern int	max_wal_senders;
37 extern int	wal_sender_timeout;
38 extern bool log_replication_commands;
39 
40 extern void InitWalSender(void);
41 extern bool exec_replication_command(const char *query_string);
42 extern void WalSndErrorCleanup(void);
43 extern void WalSndSignals(void);
44 extern Size WalSndShmemSize(void);
45 extern void WalSndShmemInit(void);
46 extern void WalSndWakeup(void);
47 extern void WalSndInitStopping(void);
48 extern void WalSndWaitStopping(void);
49 extern void HandleWalSndInitStopping(void);
50 extern void WalSndRqstFileReload(void);
51 
52 /*
53  * Remember that we want to wakeup walsenders later
54  *
55  * This is separated from doing the actual wakeup because the writeout is done
56  * while holding contended locks.
57  */
58 #define WalSndWakeupRequest() \
59 	do { wake_wal_senders = true; } while (0)
60 
61 /*
62  * wakeup walsenders if there is work to be done
63  */
64 #define WalSndWakeupProcessRequests()		\
65 	do										\
66 	{										\
67 		if (wake_wal_senders)				\
68 		{									\
69 			wake_wal_senders = false;		\
70 			if (max_wal_senders > 0)		\
71 				WalSndWakeup();				\
72 		}									\
73 	} while (0)
74 
75 #endif							/* _WALSENDER_H */
76