diff options
Diffstat (limited to 'src/include/replication')
| -rw-r--r-- | src/include/replication/walreceiver.h | 70 | ||||
| -rw-r--r-- | src/include/replication/walsender.h | 49 |
2 files changed, 119 insertions, 0 deletions
diff --git a/src/include/replication/walreceiver.h b/src/include/replication/walreceiver.h new file mode 100644 index 0000000000..7651a696a0 --- /dev/null +++ b/src/include/replication/walreceiver.h @@ -0,0 +1,70 @@ +/*------------------------------------------------------------------------- + * + * walreceiver.h + * Exports from replication/walreceiverfuncs.c. + * + * Portions Copyright (c) 2010-2010, PostgreSQL Global Development Group + * + * $PostgreSQL: pgsql/src/include/replication/walreceiver.h,v 1.1 2010/01/15 09:19:09 heikki Exp $ + * + *------------------------------------------------------------------------- + */ +#ifndef _WALRECEIVER_H +#define _WALRECEIVER_H + +#include "storage/spin.h" + +/* + * MAXCONNINFO: maximum size of a connection string. + * + * XXX: Should this move to pg_config_manual.h? + */ +#define MAXCONNINFO 1024 + +/* + * Values for WalRcv->walRcvState. + */ +typedef enum +{ + WALRCV_NOT_STARTED, + WALRCV_RUNNING, /* walreceiver has been started */ + WALRCV_STOPPING, /* requested to stop, but still running */ + WALRCV_STOPPED /* stopped and mustn't start up again */ +} WalRcvState; + +/* Shared memory area for management of walreceiver process */ +typedef struct +{ + /* + * connection string; is used for walreceiver to connect with + * the primary. + */ + char conninfo[MAXCONNINFO]; + + /* + * PID of currently active walreceiver process, and the current state. + */ + pid_t pid; + WalRcvState walRcvState; + + /* + * receivedUpto-1 is the last byte position that has been already + * received. When startup process starts the walreceiver, it sets this + * to the point where it wants the streaming to begin. After that, + * walreceiver updates this whenever it flushes the received WAL. + */ + XLogRecPtr receivedUpto; + + slock_t mutex; /* locks shared variables shown above */ +} WalRcvData; + +extern WalRcvData *WalRcv; + +extern Size WalRcvShmemSize(void); +extern void WalRcvShmemInit(void); +extern bool WalRcvInProgress(void); +extern XLogRecPtr WaitNextXLogAvailable(XLogRecPtr recptr, bool *finished); +extern void RequestXLogStreaming(XLogRecPtr recptr, const char *conninfo); +extern XLogRecPtr GetWalRcvWriteRecPtr(void); + +#endif /* _WALRECEIVER_H */ diff --git a/src/include/replication/walsender.h b/src/include/replication/walsender.h new file mode 100644 index 0000000000..c9bfd12e8b --- /dev/null +++ b/src/include/replication/walsender.h @@ -0,0 +1,49 @@ +/*------------------------------------------------------------------------- + * + * walsender.h + * Exports from replication/walsender.c. + * + * Portions Copyright (c) 2010-2010, PostgreSQL Global Development Group + * + * $PostgreSQL: pgsql/src/include/replication/walsender.h,v 1.1 2010/01/15 09:19:09 heikki Exp $ + * + *------------------------------------------------------------------------- + */ +#ifndef _WALSENDER_H +#define _WALSENDER_H + +#include "access/xlog.h" +#include "storage/spin.h" + +/* + * Each walsender has a WalSnd struct in shared memory. + */ +typedef struct WalSnd +{ + pid_t pid; /* this walsender's process id, or 0 */ + XLogRecPtr sentPtr; /* WAL has been sent up to this point */ + + slock_t mutex; /* locks shared variables shown above */ +} WalSnd; + +/* There is one WalSndCtl struct for the whole database cluster */ +typedef struct +{ + WalSnd walsnds[1]; /* VARIABLE LENGTH ARRAY */ +} WalSndCtlData; + +extern WalSndCtlData *WalSndCtl; + +/* global state */ +extern bool am_walsender; + +/* user-settable parameters */ +extern int WalSndDelay; + +extern int WalSenderMain(void); +extern void WalSndSignals(void); +extern Size WalSndShmemSize(void); +extern void WalSndShmemInit(void); +extern XLogRecPtr GetOldestWALSendPointer(void); + +#endif /* _WALSENDER_H */ |
