aboutsummaryrefslogtreecommitdiff
path: root/src/backend/libpq/pqcomm.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend/libpq/pqcomm.h')
-rw-r--r--src/backend/libpq/pqcomm.h124
1 files changed, 124 insertions, 0 deletions
diff --git a/src/backend/libpq/pqcomm.h b/src/backend/libpq/pqcomm.h
new file mode 100644
index 00000000000..a7870871ea8
--- /dev/null
+++ b/src/backend/libpq/pqcomm.h
@@ -0,0 +1,124 @@
+/*-------------------------------------------------------------------------
+ *
+ * pqcomm.h--
+ * Parameters for the communication module
+ *
+ *
+ * Copyright (c) 1994, Regents of the University of California
+ *
+ * $Id: pqcomm.h,v 1.1.1.1 1996/07/09 06:21:31 scrappy Exp $
+ *
+ * NOTES
+ * Some of this should move to libpq.h
+ *
+ *-------------------------------------------------------------------------
+ */
+#ifndef PQCOMM_H
+#define PQCOMM_H
+
+#include <sys/types.h>
+#ifdef WIN32
+#include <winsock.h>
+#else
+#include <netinet/in.h>
+#endif /* WIN32 */
+
+#include "postgres.h"
+
+/*
+ * startup msg parameters: path length, argument string length
+ */
+#define PATH_SIZE 64
+#define ARGV_SIZE 64
+
+
+typedef enum _MsgType {
+ ACK_MSG = 0, /* acknowledge a message */
+ ERROR_MSG=1, /* error response to client from server */
+ RESET_MSG=2, /* client must reset connection */
+ PRINT_MSG=3, /* tuples for client from server */
+ NET_ERROR=4, /* error in net system call */
+ FUNCTION_MSG=5, /* fastpath call (unused) */
+ QUERY_MSG=6, /* client query to server */
+ STARTUP_MSG=7, /* initialize a connection with a backend */
+ DUPLICATE_MSG=8, /* duplicate msg arrived (errors msg only) */
+ INVALID_MSG=9, /* for some control functions */
+ STARTUP_KRB4_MSG=10, /* krb4 session follows startup packet */
+ STARTUP_KRB5_MSG=11, /* krb5 session follows startup packet */
+ STARTUP_HBA_MSG=12 /* use host-based authentication */
+ /* insert new values here -- DO NOT REORDER OR DELETE ENTRIES */
+} MsgType;
+
+typedef char *Addr;
+typedef int PacketLen; /* packet length */
+
+
+typedef struct StartupInfo {
+/* PacketHdr hdr; */
+ char database[PATH_SIZE]; /* database name */
+ char user[NAMEDATALEN]; /* user name */
+ char options[ARGV_SIZE]; /* possible additional args */
+ char execFile[ARGV_SIZE]; /* possible backend to use */
+ char tty[PATH_SIZE]; /* possible tty for debug output*/
+} StartupInfo;
+
+/* amount of available data in a packet buffer */
+#define MESSAGE_SIZE sizeof(StartupInfo) + 5
+
+/* I/O can be blocking or non-blocking */
+#define BLOCKING (FALSE)
+#define NON_BLOCKING (TRUE)
+
+/* a PacketBuf gets shipped from client to server so be careful
+ of differences in representation.
+ Be sure to use htonl() and ntohl() on the len and msgtype fields! */
+typedef struct PacketBuf {
+ int len;
+ MsgType msgtype;
+ char data[MESSAGE_SIZE];
+} PacketBuf;
+
+/* update the conversion routines
+ StartupInfo2PacketBuf() and PacketBuf2StartupInfo() (decl. below)
+ if StartupInfo or PacketBuf structs ever change */
+
+/*
+ * socket descriptor port
+ * we need addresses of both sides to do authentication calls
+ */
+typedef struct Port {
+ int sock; /* file descriptor */
+ int mask; /* select mask */
+ int nBytes; /* nBytes read in so far */
+ struct sockaddr_in laddr; /* local addr (us) */
+ struct sockaddr_in raddr; /* remote addr (them) */
+/* PacketBufId id;*/ /* id of packet buf currently in use */
+ PacketBuf buf; /* stream implementation (curr pack buf) */
+} Port;
+
+/* invalid socket descriptor */
+#define INVALID_SOCK (-1)
+
+#define INVALID_ID (-1)
+#define MAX_CONNECTIONS 10
+#define N_PACK_BUFS 20
+
+/* no multi-packet messages yet */
+#define MAX_PACKET_BACKLOG 1
+
+#define DEFAULT_STRING ""
+
+extern FILE *Pfout, *Pfin;
+extern int PQAsyncNotifyWaiting;
+
+/*
+ * prototypes for functions in pqpacket.c
+ */
+extern int PacketReceive(Port *port, PacketBuf *buf, bool nonBlocking);
+extern int PacketSend(Port *port, PacketBuf *buf,
+ PacketLen len, bool nonBlocking);
+/* extern PacketBuf* StartupInfo2PacketBuf(StartupInfo*); */
+/* extern StartupInfo* PacketBuf2StartupInfo(PacketBuf*); */
+
+
+#endif /* PQCOMM_H */