src/evpq.c
changeset 21 e5da1d428e3e
parent 12 7f159ee3a3ff
child 22 85ba190a9e68
--- a/src/evpq.c	Sat Oct 11 21:35:48 2008 +0300
+++ b/src/evpq.c	Sun Oct 12 00:17:09 2008 +0300
@@ -9,6 +9,7 @@
 struct evpq_conn {
     struct event_base *ev_base;
     struct evpq_callback_info user_cb;
+    void *user_cb_arg;
 
     PGconn *pg_conn;
 
@@ -25,7 +26,7 @@
     conn->state = EVPQ_FAILURE;
 
     // notify
-    conn->user_cb.fn_failure(conn, conn->user_cb.cb_arg);
+    conn->user_cb.fn_failure(conn, conn->user_cb_arg);
 }
 
 /*
@@ -36,7 +37,7 @@
     conn->state = EVPQ_CONNECTED;
 
     // notify
-    conn->user_cb.fn_connected(conn, conn->user_cb.cb_arg);
+    conn->user_cb.fn_connected(conn, conn->user_cb_arg);
 }
 
 /*
@@ -61,14 +62,14 @@
         conn->state = EVPQ_CONNECTED;
 
         // tell the user the query is done
-        conn->user_cb.fn_done(conn, conn->user_cb.cb_arg);
+        conn->user_cb.fn_done(conn, conn->user_c_arg);
 
         // stop waiting for more results
         return 1;
 
     } else {
         // got a result, give it to the user
-        conn->user_cb.fn_result(conn, result, conn->user_cb.cb_arg);
+        conn->user_cb.fn_result(conn, result, conn->user_cb_arg);
 
         // great
         return 0;
@@ -206,7 +207,7 @@
 
 }
 
-struct evpq_conn *evpq_connect (struct event_base *ev_base, const char *conninfo, const struct evpq_callback_info cb_info) {
+struct evpq_conn *evpq_connect (struct event_base *ev_base, const char *conninfo, const struct evpq_callback_info cb_info, void *cb_arg) {
     struct evpq_conn *conn = NULL;
     
     // alloc our context
@@ -216,6 +217,7 @@
     // initial state
     conn->ev_base = ev_base;
     conn->user_cb = cb_info;
+    conn->user_cb_arg = cb_arg;
     conn->state = EVPQ_INIT;
 
     // create our PGconn
@@ -272,6 +274,10 @@
     return -1;
 }
 
+enum evpq_state evpq_state (struct evpq_conn *conn) {
+    return conn->state;
+}
+
 const PGconn *evpq_pgconn (struct evpq_conn *conn) {
     return conn->pg_conn;
 }