This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
+ the Free Software Foundation; either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "includes.h"
#include "cluster/cluster.h"
#include "cluster/cluster_private.h"
+#include "librpc/gen_ndr/misc.h"
+#include "librpc/gen_ndr/server_id.h"
static struct cluster_ops *ops;
}
/*
- not a nice abstraction :(
+ an ugly way of getting at the backend handle (eg. ctdb context) via the cluster API
*/
-void *cluster_private(void)
+void *cluster_backend_handle(void)
{
- return ops->private;
+ return ops->backend_handle(ops);
}
/* by default use the local ops */
if (ops == NULL) cluster_local_init();
}
-
+/*
+ create a server_id for the local node
+*/
+struct server_id cluster_id(uint64_t pid, uint32_t task_id)
+{
+ cluster_init();
+ return ops->cluster_id(ops, pid, task_id);
+}
/*
- server a server_id for the local node
+ open a temporary tdb in a cluster friendly manner
*/
-struct server_id cluster_id(uint32_t id)
+struct db_context *cluster_db_tmp_open(TALLOC_CTX *mem_ctx, struct loadparm_context *lp_ctx, const char *dbbase, int flags)
{
cluster_init();
- return ops->cluster_id(ops, id);
+ return ops->cluster_db_tmp_open(ops, mem_ctx, lp_ctx, dbbase, flags);
}
/*
- return a server_id as a string
+ register a callback function for a messaging endpoint
+*/
+NTSTATUS cluster_message_init(struct imessaging_context *msg, struct server_id server,
+ cluster_message_fn_t handler)
+{
+ cluster_init();
+ return ops->message_init(ops, msg, server, handler);
+}
+
+/*
+ send a message to another node in the cluster
*/
-const char *cluster_id_string(TALLOC_CTX *mem_ctx, struct server_id id)
+NTSTATUS cluster_message_send(struct server_id server, DATA_BLOB *data)
{
cluster_init();
- return ops->cluster_id_string(ops, mem_ctx, id);
+ return ops->message_send(ops, server, data);
}