#include "libpq-fe.h"

Go to the source code of this file.
Data Structures | |
| struct | PGEventRegister |
| struct | PGEventConnReset |
| struct | PGEventConnDestroy |
| struct | PGEventResultCreate |
| struct | PGEventResultCopy |
| struct | PGEventResultDestroy |
Typedefs | |
| typedef int(* | PGEventProc )(PGEventId evtId, void *evtInfo, void *passThrough) |
Enumerations | |
| enum | PGEventId { PGEVT_REGISTER, PGEVT_CONNRESET, PGEVT_CONNDESTROY, PGEVT_RESULTCREATE, PGEVT_RESULTCOPY, PGEVT_RESULTDESTROY } |
Functions | |
| int | PQregisterEventProc (PGconn *conn, PGEventProc proc, const char *name, void *passThrough) |
| int | PQsetInstanceData (PGconn *conn, PGEventProc proc, void *data) |
| void * | PQinstanceData (const PGconn *conn, PGEventProc proc) |
| int | PQresultSetInstanceData (PGresult *result, PGEventProc proc, void *data) |
| void * | PQresultInstanceData (const PGresult *result, PGEventProc proc) |
| int | PQfireResultCreateEvents (PGconn *conn, PGresult *res) |
| typedef int(* PGEventProc)(PGEventId evtId, void *evtInfo, void *passThrough) |
Definition at line 69 of file libpq-events.h.
| enum PGEventId |
| PGEVT_REGISTER | |
| PGEVT_CONNRESET | |
| PGEVT_CONNDESTROY | |
| PGEVT_RESULTCREATE | |
| PGEVT_RESULTCOPY | |
| PGEVT_RESULTDESTROY |
Definition at line 27 of file libpq-events.h.
{
PGEVT_REGISTER,
PGEVT_CONNRESET,
PGEVT_CONNDESTROY,
PGEVT_RESULTCREATE,
PGEVT_RESULTCOPY,
PGEVT_RESULTDESTROY
} PGEventId;
Definition at line 185 of file libpq-events.c.
References PGEventResultCreate::conn, pg_result::events, FALSE, i, pg_result::nEvents, PGEvent::passThrough, PGEVT_RESULTCREATE, PGEvent::proc, PGEventResultCreate::result, and PGEvent::resultInitialized.
{
int i;
if (!res)
return FALSE;
for (i = 0; i < res->nEvents; i++)
{
if (!res->events[i].resultInitialized)
{
PGEventResultCreate evt;
evt.conn = conn;
evt.result = res;
if (!res->events[i].proc(PGEVT_RESULTCREATE, &evt,
res->events[i].passThrough))
return FALSE;
res->events[i].resultInitialized = TRUE;
}
}
return TRUE;
}
| void* PQinstanceData | ( | const PGconn * | conn, | |
| PGEventProc | proc | |||
| ) |
Definition at line 121 of file libpq-events.c.
References PGEvent::data, pg_conn::events, i, pg_conn::nEvents, and PGEvent::proc.
| int PQregisterEventProc | ( | PGconn * | conn, | |
| PGEventProc | proc, | |||
| const char * | name, | |||
| void * | passThrough | |||
| ) |
Definition at line 40 of file libpq-events.c.
References PGEventRegister::conn, PGEvent::data, pg_conn::eventArraySize, pg_conn::events, free, i, malloc, PGEvent::name, pg_conn::nEvents, PGEvent::passThrough, PGEVT_REGISTER, PGEvent::proc, realloc, and PGEvent::resultInitialized.
{
int i;
PGEventRegister regevt;
if (!proc || !conn || !name || !*name)
return FALSE; /* bad arguments */
for (i = 0; i < conn->nEvents; i++)
{
if (conn->events[i].proc == proc)
return FALSE; /* already registered */
}
if (conn->nEvents >= conn->eventArraySize)
{
PGEvent *e;
int newSize;
newSize = conn->eventArraySize ? conn->eventArraySize * 2 : 8;
if (conn->events)
e = (PGEvent *) realloc(conn->events, newSize * sizeof(PGEvent));
else
e = (PGEvent *) malloc(newSize * sizeof(PGEvent));
if (!e)
return FALSE;
conn->eventArraySize = newSize;
conn->events = e;
}
conn->events[conn->nEvents].proc = proc;
conn->events[conn->nEvents].name = strdup(name);
if (!conn->events[conn->nEvents].name)
return FALSE;
conn->events[conn->nEvents].passThrough = passThrough;
conn->events[conn->nEvents].data = NULL;
conn->events[conn->nEvents].resultInitialized = FALSE;
conn->nEvents++;
regevt.conn = conn;
if (!proc(PGEVT_REGISTER, ®evt, passThrough))
{
conn->nEvents--;
free(conn->events[conn->nEvents].name);
return FALSE;
}
return TRUE;
}
| void* PQresultInstanceData | ( | const PGresult * | result, | |
| PGEventProc | proc | |||
| ) |
Definition at line 165 of file libpq-events.c.
References PGEvent::data, pg_result::events, i, pg_result::nEvents, and PGEvent::proc.
| int PQresultSetInstanceData | ( | PGresult * | result, | |
| PGEventProc | proc, | |||
| void * | data | |||
| ) |
Definition at line 142 of file libpq-events.c.
References PGEvent::data, pg_result::events, i, pg_result::nEvents, and PGEvent::proc.
| int PQsetInstanceData | ( | PGconn * | conn, | |
| PGEventProc | proc, | |||
| void * | data | |||
| ) |
Definition at line 98 of file libpq-events.c.
References PGEvent::data, pg_conn::events, i, pg_conn::nEvents, and PGEvent::proc.
1.7.1