2
0

walsender.h 1.9 KB

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