Remove ctdb_set_callback() from the public API and provide the callback as part
[sahlberg/ctdb.git] / libctdb / libctdb.c
index e4a5ea6e6d06fa7eedd2b159bcf41cc48cae8a65..9fe55a9b50602b8650f435150af333657fecc527 100644 (file)
@@ -45,7 +45,7 @@ static void
 ctdb_control_cb(struct ctdb_client_control_state *state)
 {
        struct ctdb_control_cb_data *cb_data = state->async.private_data;
-       ctdb_callback callback = (ctdb_callback)cb_data->callback;
+       ctdb_generic_callback callback = (ctdb_generic_callback)cb_data->callback;
 
        /* dont recurse */
        state->async.fn = NULL;
@@ -63,7 +63,8 @@ ctdb_control_cb(struct ctdb_client_control_state *state)
 /*
  * This function is used to set the callback action for a handle
  */
-int ctdb_set_callback(ctdb_handle *handle, ctdb_callback callback, void *private_data)
+static int
+ctdb_set_generic_callback(ctdb_handle *handle, ctdb_generic_callback callback, void *private_data)
 {
        struct ctdb_client_control_state *control_state = talloc_get_type(handle, struct ctdb_client_control_state);
 
@@ -240,7 +241,9 @@ int ctdb_free(ctdb_handle *handle)
  *************************/
 ctdb_handle *
 ctdb_getpnn_send(struct ctdb_context *ctdb,
-                       uint32_t destnode)
+                       uint32_t destnode,
+                       ctdb_generic_callback callback,
+                       void *private_data)
 {
        struct ctdb_client_control_state *state;
 
@@ -253,6 +256,10 @@ ctdb_getpnn_send(struct ctdb_context *ctdb,
                return NULL;
        }
 
+       if (callback != NULL) {
+               ctdb_set_generic_callback(state, callback, private_data);
+       }
+
        return (ctdb_handle *)state;
 }
 
@@ -278,7 +285,7 @@ int ctdb_getpnn(struct ctdb_context *ctdb, uint32_t destnode, uint32_t *pnn)
 {
        struct ctdb_client_control_state *state;
        
-       state = ctdb_getpnn_send(ctdb, destnode);
+       state = ctdb_getpnn_send(ctdb, destnode, NULL, NULL);
        if (state == NULL) {
                DEBUG(DEBUG_ERR,(__location__ " ctdb_getpnn_send() failed.\n"));
                return -1;
@@ -294,7 +301,9 @@ int ctdb_getpnn(struct ctdb_context *ctdb, uint32_t destnode, uint32_t *pnn)
  ***********************/
 ctdb_handle *
 ctdb_getrecmaster_send(struct ctdb_context *ctdb,
-                       uint32_t destnode)
+                       uint32_t destnode,
+                       ctdb_generic_callback callback,
+                       void *private_data)
 {
        struct ctdb_client_control_state *state;
 
@@ -307,6 +316,10 @@ ctdb_getrecmaster_send(struct ctdb_context *ctdb,
                return NULL;
        }
 
+       if (callback != NULL) {
+               ctdb_set_generic_callback(state, callback, private_data);
+       }
+
        return (ctdb_handle *)state;
 }
 
@@ -332,7 +345,7 @@ int ctdb_getrecmaster(struct ctdb_context *ctdb, uint32_t destnode, uint32_t *re
 {
        struct ctdb_client_control_state *state;
        
-       state = ctdb_getrecmaster_send(ctdb, destnode);
+       state = ctdb_getrecmaster_send(ctdb, destnode, NULL, NULL);
        if (state == NULL) {
                DEBUG(DEBUG_ERR,(__location__ " ctdb_getrecmaster_send() failed.\n"));
                return -1;