6 #define CONNINFO_DEFAULT "dbname=test"
7 #define QUERY_DEFAULT "SELECT a, b FROM foo"
9 void cb_connected (struct evpq_conn *conn, void *arg) {
10 INFO("[evpq_test] connected");
12 if (evpq_query(conn, QUERY_DEFAULT))
16 void cb_result (struct evpq_conn *conn, PGresult *result, void *arg) {
18 INFO("[evpq_test] result: %s", PQresStatus(PQresultStatus(result)));
21 if (PQresultStatus(result) != PGRES_TUPLES_OK)
22 FATAL("error: %s", PQresultErrorMessage(result));
38 PQprint(stdout, result, &popt);
40 // don't care about the result anymore
44 void cb_done (struct evpq_conn *conn, void *arg) {
45 INFO("[evpq_test] done");
48 void cb_failure (struct evpq_conn *conn, void *arg) {
49 INFO("[evpq_test] failure");
50 INFO("\t%s", evpq_error_message(conn));
55 int main (int argc, char **argv) {
56 struct event_base *ev_base = NULL;
57 struct evpq_conn *conn = NULL;
58 const char *conninfo = CONNINFO_DEFAULT;
60 struct evpq_callback_info cb_info = {
61 .fn_connected = cb_connected,
62 .fn_result = cb_result,
64 .fn_failure = cb_failure,
67 // initialize libevent
68 if ((ev_base = event_base_new()) == NULL)
69 ERROR("event_base_new");
71 // establish the evpq connection
72 if ((conn = evpq_connect(ev_base, conninfo, cb_info, NULL)) == NULL)
73 ERROR("evpq_connect");
76 INFO("running libevent loop");
78 if (event_base_dispatch(ev_base))
79 ERROR("event_base_dispatch");
85 event_base_free(ev_base);