From 709615ac804b7d93082cdca5b43f292fc7caea17 Mon Sep 17 00:00:00 2001 From: Ronnie Sahlberg Date: Wed, 12 May 2010 14:16:17 +1000 Subject: [PATCH] move some timed event calls out from libctdb and put it back in client/ctdb_client.c --- client/ctdb_client.c | 21 +++++++++++++++++++++ include/ctdb_private.h | 6 ++++++ libctdb/ctdb_client.c | 26 +++----------------------- 3 files changed, 30 insertions(+), 23 deletions(-) diff --git a/client/ctdb_client.c b/client/ctdb_client.c index a0d5997d..f97d739a 100644 --- a/client/ctdb_client.c +++ b/client/ctdb_client.c @@ -3480,3 +3480,24 @@ int ctdb_ctrl_get_db_priority(struct ctdb_context *ctdb, struct timeval timeout, return 0; } + +/* time out handler for ctdb_control */ +void ctdb_control_timeout_func(struct event_context *ev, struct timed_event *te, + struct timeval t, void *private_data) +{ + struct ctdb_client_control_state *state = talloc_get_type(private_data, struct ctdb_client_control_state); + + DEBUG(DEBUG_ERR,(__location__ " control timed out. reqid:%u opcode:%u " + "dstnode:%u\n", state->reqid, state->c->opcode, + state->c->hdr.destnode)); + + state->state = CTDB_CONTROL_TIMEOUT; + + /* if we had a callback registered for this control, pull the response + and call the callback. + */ + if (state->async.fn) { + event_add_timed(state->ctdb->ev, state, timeval_zero(), ctdb_invoke_control_callback, state); + } +} + diff --git a/include/ctdb_private.h b/include/ctdb_private.h index 685048b0..658ba9b7 100644 --- a/include/ctdb_private.h +++ b/include/ctdb_private.h @@ -1647,4 +1647,10 @@ int verify_remote_ip_allocation(struct ctdb_context *ctdb, int update_ip_assignment_tree(struct ctdb_context *ctdb, struct ctdb_public_ip *ip); +void ctdb_control_timeout_func(struct event_context *ev, + struct timed_event *te, + struct timeval t, void *private_data); + +void ctdb_invoke_control_callback(struct event_context *ev, struct timed_event *te, struct timeval t, void *private_data); + #endif diff --git a/libctdb/ctdb_client.c b/libctdb/ctdb_client.c index c7ce1388..92d04557 100644 --- a/libctdb/ctdb_client.c +++ b/libctdb/ctdb_client.c @@ -216,7 +216,7 @@ int ctdb_control_recv(struct ctdb_context *ctdb, called when a control completes or timesout to invoke the callback function the user provided */ -static void invoke_control_callback(struct event_context *ev, struct timed_event *te, +void ctdb_invoke_control_callback(struct event_context *ev, struct timed_event *te, struct timeval t, void *private_data) { struct ctdb_client_control_state *state; @@ -278,7 +278,7 @@ static void ctdb_client_reply_control(struct ctdb_context *ctdb, and call the callback. */ if (state->async.fn) { - event_add_timed(ctdb->ev, state, timeval_zero(), invoke_control_callback, state); + event_add_timed(ctdb->ev, state, timeval_zero(), ctdb_invoke_control_callback, state); } } @@ -436,26 +436,6 @@ static int ctdb_client_queue_pkt(struct ctdb_context *ctdb, struct ctdb_req_head } -/* time out handler for ctdb_control */ -static void control_timeout_func(struct event_context *ev, struct timed_event *te, - struct timeval t, void *private_data) -{ - struct ctdb_client_control_state *state = talloc_get_type(private_data, struct ctdb_client_control_state); - - DEBUG(DEBUG_ERR,(__location__ " control timed out. reqid:%u opcode:%u " - "dstnode:%u\n", state->reqid, state->c->opcode, - state->c->hdr.destnode)); - - state->state = CTDB_CONTROL_TIMEOUT; - - /* if we had a callback registered for this control, pull the response - and call the callback. - */ - if (state->async.fn) { - event_add_timed(state->ctdb->ev, state, timeval_zero(), invoke_control_callback, state); - } -} - /* async version of send control request */ struct ctdb_client_control_state *ctdb_control_send(struct ctdb_context *ctdb, uint32_t destnode, uint64_t srvid, @@ -506,7 +486,7 @@ struct ctdb_client_control_state *ctdb_control_send(struct ctdb_context *ctdb, /* timeout */ if (timeout && !timeval_is_zero(timeout)) { - event_add_timed(ctdb->ev, state, *timeout, control_timeout_func, state); + event_add_timed(ctdb->ev, state, *timeout, ctdb_control_timeout_func, state); } ret = ctdb_client_queue_pkt(ctdb, &(c->hdr)); -- 2.34.1