/*-------------------------------------------------------------------------
 *
 * pidfile.h
 *	  Declarations describing the data directory lock file (postmaster.pid)
 *
 * Portions Copyright (c) 1996-2021, PostgreSQL Global Development Group
 * Portions Copyright (c) 1994, Regents of the University of California
 *
 * src/include/utils/pidfile.h
 *
 *-------------------------------------------------------------------------
 */
#ifndef UTILS_PIDFILE_H
#define UTILS_PIDFILE_H

/*
 * As of Postgres 10, the contents of the data-directory lock file are:
 *
 * line #
 *		1	postmaster PID (or negative of a standalone backend's PID)
 *		2	data directory path
 *		3	postmaster start timestamp (time_t representation)
 *		4	port number
 *		5	first Unix socket directory path (empty if none)
 *		6	first listen_address (IP address or "*"; empty if no TCP port)
 *		7	shared memory key (empty on Windows)
 *		8	postmaster status (see values below)
 *
 * Lines 6 and up are added via AddToDataDirLockFile() after initial file
 * creation; also, line 5 is initially empty and is changed after the first
 * Unix socket is opened.  Onlookers should not assume that lines 4 and up
 * are filled in any particular order.
 *
 * Socket lock file(s), if used, have the same contents as lines 1-5, with
 * line 5 being their own directory.
 */
#define LOCK_FILE_LINE_PID			1
#define LOCK_FILE_LINE_DATA_DIR		2
#define LOCK_FILE_LINE_START_TIME	3
#define LOCK_FILE_LINE_PORT			4
#define LOCK_FILE_LINE_SOCKET_DIR	5
#define LOCK_FILE_LINE_LISTEN_ADDR	6
#define LOCK_FILE_LINE_SHMEM_KEY	7
#define LOCK_FILE_LINE_PM_STATUS	8

/*
 * The PM_STATUS line may contain one of these values.  All these strings
 * must be the same length, per comments for AddToDataDirLockFile().
 * We pad with spaces as needed to make that true.
 */
#define PM_STATUS_STARTING		"starting"	/* still starting up */
#define PM_STATUS_STOPPING		"stopping"	/* in shutdown sequence */
#define PM_STATUS_READY			"ready   "	/* ready for connections */
#define PM_STATUS_STANDBY		"standby "	/* up, won't accept connections */
#define PM_STATUS_DTM_RECOVERED "dtmready"  /* ready for distributed connections */

#endif							/* UTILS_PIDFILE_H */
