walsender.h 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. /*-------------------------------------------------------------------------
  2. *
  3. * walsender.h
  4. * Exports from replication/walsender.c.
  5. *
  6. * Portions Copyright (c) 2010-2016, 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. #include "fmgr.h"
  16. /* global state */
  17. extern bool am_walsender;
  18. extern bool am_cascading_walsender;
  19. extern bool am_db_walsender;
  20. extern bool wake_wal_senders;
  21. /* user-settable parameters */
  22. extern int max_wal_senders;
  23. extern int wal_sender_timeout;
  24. extern bool log_replication_commands;
  25. extern void InitWalSender(void);
  26. extern void exec_replication_command(const char *query_string);
  27. extern void WalSndErrorCleanup(void);
  28. extern void WalSndSignals(void);
  29. extern Size WalSndShmemSize(void);
  30. extern void WalSndShmemInit(void);
  31. extern void WalSndWakeup(void);
  32. extern void WalSndInitStopping(void);
  33. extern void WalSndWaitStopping(void);
  34. extern void HandleWalSndInitStopping(void);
  35. extern void WalSndRqstFileReload(void);
  36. extern Datum pg_stat_get_wal_senders(PG_FUNCTION_ARGS);
  37. /*
  38. * Remember that we want to wakeup walsenders later
  39. *
  40. * This is separated from doing the actual wakeup because the writeout is done
  41. * while holding contended locks.
  42. */
  43. #define WalSndWakeupRequest() \
  44. do { wake_wal_senders = true; } while (0)
  45. /*
  46. * wakeup walsenders if there is work to be done
  47. */
  48. #define WalSndWakeupProcessRequests() \
  49. do \
  50. { \
  51. if (wake_wal_senders) \
  52. { \
  53. wake_wal_senders = false; \
  54. if (max_wal_senders > 0) \
  55. WalSndWakeup(); \
  56. } \
  57. } while (0)
  58. #endif /* _WALSENDER_H */