]> granicus.if.org Git - postgresql/blob - src/interfaces/libpq/libpq-events.h
libpq: use pgsocket for socket values, for portability
[postgresql] / src / interfaces / libpq / libpq-events.h
1 /*-------------------------------------------------------------------------
2  *
3  * libpq-events.h
4  *        This file contains definitions that are useful to applications
5  *        that invoke the libpq "events" API, but are not interesting to
6  *        ordinary users of libpq.
7  *
8  * Portions Copyright (c) 1996-2014, PostgreSQL Global Development Group
9  * Portions Copyright (c) 1994, Regents of the University of California
10  *
11  * src/interfaces/libpq/libpq-events.h
12  *
13  *-------------------------------------------------------------------------
14  */
15
16 #ifndef LIBPQ_EVENTS_H
17 #define LIBPQ_EVENTS_H
18
19 #include "libpq-fe.h"
20
21 #ifdef __cplusplus
22 extern          "C"
23 {
24 #endif
25
26 /* Callback Event Ids */
27 typedef enum
28 {
29         PGEVT_REGISTER,
30         PGEVT_CONNRESET,
31         PGEVT_CONNDESTROY,
32         PGEVT_RESULTCREATE,
33         PGEVT_RESULTCOPY,
34         PGEVT_RESULTDESTROY
35 } PGEventId;
36
37 typedef struct
38 {
39         PGconn     *conn;
40 } PGEventRegister;
41
42 typedef struct
43 {
44         PGconn     *conn;
45 } PGEventConnReset;
46
47 typedef struct
48 {
49         PGconn     *conn;
50 } PGEventConnDestroy;
51
52 typedef struct
53 {
54         PGconn     *conn;
55         PGresult   *result;
56 } PGEventResultCreate;
57
58 typedef struct
59 {
60         const PGresult *src;
61         PGresult   *dest;
62 } PGEventResultCopy;
63
64 typedef struct
65 {
66         PGresult   *result;
67 } PGEventResultDestroy;
68
69 typedef int (*PGEventProc) (PGEventId evtId, void *evtInfo, void *passThrough);
70
71 /* Registers an event proc with the given PGconn. */
72 extern int PQregisterEventProc(PGconn *conn, PGEventProc proc,
73                                         const char *name, void *passThrough);
74
75 /* Sets the PGconn instance data for the provided proc to data. */
76 extern int      PQsetInstanceData(PGconn *conn, PGEventProc proc, void *data);
77
78 /* Gets the PGconn instance data for the provided proc. */
79 extern void *PQinstanceData(const PGconn *conn, PGEventProc proc);
80
81 /* Sets the PGresult instance data for the provided proc to data. */
82 extern int      PQresultSetInstanceData(PGresult *result, PGEventProc proc, void *data);
83
84 /* Gets the PGresult instance data for the provided proc. */
85 extern void *PQresultInstanceData(const PGresult *result, PGEventProc proc);
86
87 /* Fires RESULTCREATE events for an application-created PGresult. */
88 extern int      PQfireResultCreateEvents(PGconn *conn, PGresult *res);
89
90 #ifdef __cplusplus
91 }
92 #endif
93
94 #endif   /* LIBPQ_EVENTS_H */