int ctdb_which_events(struct ctdb_connection *ctdb);
-int ctdb_service(struct ctdb_connection *ctdb, int revents);
+bool ctdb_service(struct ctdb_connection *ctdb, int revents);
struct ctdb_request;
ctdb_callback_t callback,
void *private_data);
-int ctdb_set_message_handler_recv(struct ctdb_connection *ctdb,
- struct ctdb_request *handle);
+bool ctdb_set_message_handler_recv(struct ctdb_connection *ctdb,
+ struct ctdb_request *handle);
-int ctdb_set_message_handler(struct ctdb_connection *ctdb, uint64_t srvid,
- ctdb_message_fn_t handler, void *private_data);
+bool ctdb_set_message_handler(struct ctdb_connection *ctdb, uint64_t srvid,
+ ctdb_message_fn_t handler, void *private_data);
ctdb_callback_t callback,
void *private_data);
-int ctdb_remove_message_handler_recv(struct ctdb_request *handle);
+bool ctdb_remove_message_handler_recv(struct ctdb_request *handle);
-int ctdb_remove_message_handler(struct ctdb_connection *ctdb, uint64_t srvid);
+bool ctdb_remove_message_handler(struct ctdb_connection *ctdb, uint64_t srvid);
* send a message to a specific node/port
* this function is non-blocking
*/
-int ctdb_send_message(struct ctdb_connection *ctdb, uint32_t pnn, uint64_t srvid, TDB_DATA data);
+bool ctdb_send_message(struct ctdb_connection *ctdb, uint32_t pnn, uint64_t srvid, TDB_DATA data);
uint32_t destnode,
ctdb_callback_t callback,
void *private_data);
-int ctdb_getpnn_recv(struct ctdb_connection *ctdb,
- struct ctdb_request *req, uint32_t *pnn);
+bool ctdb_getpnn_recv(struct ctdb_connection *ctdb,
+ struct ctdb_request *req, uint32_t *pnn);
-int ctdb_getpnn(struct ctdb_connection *ctdb,
- uint32_t destnode,
- uint32_t *pnn);
+bool ctdb_getpnn(struct ctdb_connection *ctdb,
+ uint32_t destnode,
+ uint32_t *pnn);
uint32_t destnode,
ctdb_callback_t callback,
void *private_data);
-int ctdb_getrecmaster_recv(struct ctdb_connection *ctdb,
- struct ctdb_request *handle,
- uint32_t *recmaster);
-int ctdb_getrecmaster(struct ctdb_connection *ctdb,
- uint32_t destnode,
- uint32_t *recmaster);
+bool ctdb_getrecmaster_recv(struct ctdb_connection *ctdb,
+ struct ctdb_request *handle,
+ uint32_t *recmaster);
+bool ctdb_getrecmaster(struct ctdb_connection *ctdb,
+ uint32_t destnode,
+ uint32_t *recmaster);
/*
* cancel a request
*/
-int ctdb_cancel(struct ctdb_connection *ctdb, struct ctdb_request *req);
+void ctdb_cancel(struct ctdb_connection *ctdb, struct ctdb_request *req);
/*
#undef ctdb_getrecmaster_send
#undef ctdb_getpnn_send
-int ctdb_getrecmaster_recv(struct ctdb_connection *ctdb,
+bool ctdb_getrecmaster_recv(struct ctdb_connection *ctdb,
struct ctdb_request *req, uint32_t *recmaster)
{
struct ctdb_reply_control *reply;
reply = unpack_reply_control(ctdb, req, CTDB_CONTROL_GET_RECMASTER);
if (!reply) {
- return -1;
+ return false;
}
if (reply->status == -1) {
DEBUG(ctdb, LOG_ERR, "ctdb_getrecmaster_recv: status -1");
- return -1;
+ return false;
}
*recmaster = reply->status;
- return 0;
+ return true;
}
struct ctdb_request *ctdb_getrecmaster_send(struct ctdb_connection *ctdb,
callback, private_data);
}
-int ctdb_getpnn_recv(struct ctdb_connection *ctdb,
+bool ctdb_getpnn_recv(struct ctdb_connection *ctdb,
struct ctdb_request *req, uint32_t *pnn)
{
struct ctdb_reply_control *reply;
reply = unpack_reply_control(ctdb, req, CTDB_CONTROL_GET_PNN);
if (!reply) {
- return -1;
+ return false;
}
if (reply->status == -1) {
DEBUG(ctdb, LOG_ERR, "ctdb_getpnn_recv: status -1");
- return -1;
+ return false;
}
*pnn = reply->status;
- return 0;
+ return true;
}
struct ctdb_request *ctdb_getpnn_send(struct ctdb_connection *ctdb,
struct ctdb_request *req,
void *unused)
{
- if (ctdb_getpnn_recv(ctdb, req, &ctdb->pnn) != 0) {
+ if (!ctdb_getpnn_recv(ctdb, req, &ctdb->pnn)) {
DEBUG(ctdb, LOG_CRIT,
"ctdb_connect(async): failed to get pnn");
ctdb->broken = true;
return ret;
}
-int ctdb_service(struct ctdb_connection *ctdb, int revents)
+bool ctdb_service(struct ctdb_connection *ctdb, int revents)
{
if (ctdb->broken) {
- return -1;
+ return false;
}
if (holding_lock(ctdb)) {
DEBUG(ctdb, LOG_ERR,
"ctdb_service: error writing to ctdbd");
ctdb->broken = true;
- return -1;
+ return false;
}
if (io_elem_finished(ctdb->outq->io)) {
struct ctdb_request *done = ctdb->outq;
DEBUG(ctdb, LOG_ERR,
"ctdb_service: allocating readbuf");
ctdb->broken = true;
- return -1;
+ return false;
}
}
DEBUG(ctdb, LOG_ERR,
"ctdb_service: error reading from ctdbd");
ctdb->broken = true;
- return -1;
+ return false;
} else if (ret < 0) {
/* No progress, stop loop. */
revents = 0;
}
}
- return 0;
+ return true;
}
/* This is inefficient. We could pull in idtree.c. */
ctdb_request_free(ctdb, req);
}
-int ctdb_cancel(struct ctdb_connection *ctdb, struct ctdb_request *req)
+void ctdb_cancel(struct ctdb_connection *ctdb, struct ctdb_request *req)
{
DEBUG(ctdb, LOG_DEBUG, "ctdb_cancel: %p (id %u)",
req, req->hdr.hdr ? req->hdr.hdr->reqid : 0);
/* FIXME: If it's not sent, we could just free it right now. */
req->callback = ctdb_cancel_callback;
- return 0;
}
struct ctdb_db {
}
}
-int ctdb_set_message_handler_recv(struct ctdb_connection *ctdb,
- struct ctdb_request *req)
+bool ctdb_set_message_handler_recv(struct ctdb_connection *ctdb,
+ struct ctdb_request *req)
{
struct message_handler_info *info = req->extra;
struct ctdb_reply_control *reply;
reply = unpack_reply_control(ctdb, req, CTDB_CONTROL_REGISTER_SRVID);
if (!reply) {
- return -1;
+ return false;
}
if (reply->status != 0) {
DEBUG(ctdb, LOG_WARNING,
"ctdb_set_message_handler_recv: status %i",
reply->status);
- return -1;
+ return false;
}
/* Put ourselves in list of handlers. */
DLIST_ADD(ctdb->message_handlers, info);
/* Keep safe from destructor */
req->extra = NULL;
- return 0;
+ return true;
}
static void free_info(struct ctdb_connection *ctdb, struct ctdb_request *req)
return req;
}
-int ctdb_send_message(struct ctdb_connection *ctdb,
+bool ctdb_send_message(struct ctdb_connection *ctdb,
uint32_t pnn, uint64_t srvid,
TDB_DATA data)
{
ctdb_cancel_callback, NULL);
if (!req) {
DEBUG(ctdb, LOG_ERR, "ctdb_set_message: allocating message");
- return -1;
+ return false;
}
io_elem_init_req_header(req->io,
pkt->datalen = data.dsize;
memcpy(pkt->data, data.dptr, data.dsize);
DLIST_ADD_END(ctdb->outq, req, struct ctdb_request);
- return 0;
+ return true;
}
*done = true;
}
-int ctdb_getrecmaster(struct ctdb_connection *ctdb,
- uint32_t destnode, uint32_t *recmaster)
+bool ctdb_getrecmaster(struct ctdb_connection *ctdb,
+ uint32_t destnode, uint32_t *recmaster)
{
struct ctdb_request *req;
bool done = false;
- int ret = -1;
+ bool ret = false;
req = synchronous(ctdb,
ctdb_getrecmaster_send(ctdb, destnode, set, &done),
return ret;
}
-int ctdb_getpnn(struct ctdb_connection *ctdb,
- uint32_t destnode, uint32_t *pnn)
+bool ctdb_getpnn(struct ctdb_connection *ctdb,
+ uint32_t destnode, uint32_t *pnn)
{
struct ctdb_request *req;
bool done = false;
- int ret = -1;
+ bool ret = false;
req = synchronous(ctdb,
ctdb_getpnn_send(ctdb, destnode, set, &done),
static void pnn_cb(struct ctdb_connection *ctdb,
struct ctdb_request *req, void *private)
{
- int status;
+ bool status;
uint32_t pnn;
status = ctdb_getpnn_recv(ctdb, req, &pnn);
ctdb_request_free(ctdb, req);
- if (status != 0) {
+ if (!status) {
printf("Error reading PNN\n");
return;
}
- printf("status:%d pnn:%d\n", status, pnn);
+ printf("pnn:%d\n", pnn);
}
static void rm_cb(struct ctdb_connection *ctdb,
struct ctdb_request *req, void *private)
{
- int status;
+ bool status;
uint32_t rm;
status = ctdb_getrecmaster_recv(ctdb, req, &rm);
ctdb_request_free(ctdb, req);
- if (status != 0) {
+ if (!status) {
printf("Error reading RECMASTER\n");
return;
}
- printf("GETRECMASTER ASYNC: status:%d recmaster:%d\n", status, rm);
+ printf("GETRECMASTER ASYNC: recmaster:%d\n", rm);
}
/*
void message_handler_cb(struct ctdb_connection *ctdb,
struct ctdb_request *req, void *private)
{
- if (ctdb_set_message_handler_recv(ctdb, req) != 0) {
+ if (!ctdb_set_message_handler_recv(ctdb, req)) {
err(1, "registering message");
}
ctdb_request_free(ctdb, req);
struct ctdb_db *ctdb_db_context;
struct pollfd pfd;
uint32_t recmaster;
- int ret;
TDB_DATA msg;
bool rrl_cb_called = false;
msg.dptr="HelloWorld";
msg.dsize = strlen(msg.dptr);
- ret = ctdb_send_message(ctdb_connection, 0, 55, msg);
- if (ret != 0) {
+ if (!ctdb_send_message(ctdb_connection, 0, 55, msg)) {
printf("Failed to send message. Aborting\n");
exit(10);
}
* calls the blocking sync function.
* Avoid this mode for performance critical tasks
*/
- ret = ctdb_getrecmaster(ctdb_connection, CTDB_CURRENT_NODE, &recmaster);
- if (ret != 0) {
+ if (!ctdb_getrecmaster(ctdb_connection, CTDB_CURRENT_NODE, &recmaster)) {
printf("Failed to receive response to getrecmaster\n");
exit(10);
}
- printf("GETRECMASTER SYNC: status:%d recmaster:%d\n", ret, recmaster);
+ printf("GETRECMASTER SYNC: recmaster:%d\n", recmaster);
handle = ctdb_getpnn_send(ctdb_connection, CTDB_CURRENT_NODE,