1
0
mirror of https://github.com/samba-team/samba.git synced 2025-02-26 21:57:41 +03:00

ctdb-client: Add client API functions for new controls

Signed-off-by: Amitay Isaacs <amitay@gmail.com>
Reviewed-by: Martin Schwenke <martin@meltin.net>
This commit is contained in:
Amitay Isaacs 2016-02-19 11:14:40 +11:00 committed by Martin Schwenke
parent 95a15cde45
commit 338e0dccd9
2 changed files with 101 additions and 0 deletions

View File

@ -736,6 +736,21 @@ int ctdb_ctrl_db_transaction_cancel(TALLOC_CTX *mem_ctx,
int destnode, struct timeval timeout,
uint32_t db_id);
int ctdb_ctrl_db_pull(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
struct ctdb_client_context *client,
int destnode, struct timeval timeout,
struct ctdb_pulldb_ext *pulldb, uint32_t *num_records);
int ctdb_ctrl_db_push_start(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
struct ctdb_client_context *client,
int destnode, struct timeval timeout,
struct ctdb_pulldb_ext *pulldb);
int ctdb_ctrl_db_push_confirm(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
struct ctdb_client_context *client,
int destnode, struct timeval timeout,
uint32_t db_id, uint32_t *num_records);
/* from client/client_db.c */
struct tevent_req *ctdb_attach_send(TALLOC_CTX *mem_ctx,

View File

@ -3088,3 +3088,89 @@ int ctdb_ctrl_db_transaction_cancel(TALLOC_CTX *mem_ctx,
return 0;
}
int ctdb_ctrl_db_pull(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
struct ctdb_client_context *client,
int destnode, struct timeval timeout,
struct ctdb_pulldb_ext *pulldb, uint32_t *num_records)
{
struct ctdb_req_control request;
struct ctdb_reply_control *reply;
int ret;
ctdb_req_control_db_pull(&request, pulldb);
ret = ctdb_client_control(mem_ctx, ev, client, destnode, timeout,
&request, &reply);
if (ret != 0) {
DEBUG(DEBUG_ERR,
("Control DB_PULL failed to node %u, ret=%d\n",
destnode, ret));
return ret;
}
ret = ctdb_reply_control_db_pull(reply, num_records);
if (ret != 0) {
DEBUG(DEBUG_ERR, ("Control DB_PULL failed, ret=%d\n", ret));
return ret;
}
return 0;
}
int ctdb_ctrl_db_push_start(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
struct ctdb_client_context *client,
int destnode, struct timeval timeout,
struct ctdb_pulldb_ext *pulldb)
{
struct ctdb_req_control request;
struct ctdb_reply_control *reply;
int ret;
ctdb_req_control_db_push_start(&request, pulldb);
ret = ctdb_client_control(mem_ctx, ev, client, destnode, timeout,
&request, &reply);
if (ret != 0) {
DEBUG(DEBUG_ERR,
("Control DB_PUSH failed to node %u, ret=%d\n",
destnode, ret));
return ret;
}
ret = ctdb_reply_control_db_push_start(reply);
if (ret != 0) {
DEBUG(DEBUG_ERR,
("Control DB_PUSH failed, ret=%d\n", ret));
return ret;
}
return 0;
}
int ctdb_ctrl_db_push_confirm(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
struct ctdb_client_context *client,
int destnode, struct timeval timeout,
uint32_t db_id, uint32_t *num_records)
{
struct ctdb_req_control request;
struct ctdb_reply_control *reply;
int ret;
ctdb_req_control_db_push_confirm(&request, db_id);
ret = ctdb_client_control(mem_ctx, ev, client, destnode, timeout,
&request, &reply);
if (ret != 0) {
DEBUG(DEBUG_ERR,
("Control DB_PUSH failed to node %u, ret=%d\n",
destnode, ret));
return ret;
}
ret = ctdb_reply_control_db_push_confirm(reply, num_records);
if (ret != 0) {
DEBUG(DEBUG_ERR,
("Control DB_PUSH failed, ret=%d\n", ret));
return ret;
}
return 0;
}