Author: tridge Date: 2007-01-19 03:53:37 +0000 (Fri, 19 Jan 2007) New Revision: 20887
WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=20887 Log: allow the registration of multiple cluster backends this is in preparation for ctdb Added: branches/SAMBA_4_0/source/cluster/cluster_private.h Modified: branches/SAMBA_4_0/source/cluster/cluster.c branches/SAMBA_4_0/source/cluster/cluster.h Changeset: Modified: branches/SAMBA_4_0/source/cluster/cluster.c =================================================================== --- branches/SAMBA_4_0/source/cluster/cluster.c 2007-01-19 03:52:21 UTC (rev 20886) +++ branches/SAMBA_4_0/source/cluster/cluster.c 2007-01-19 03:53:37 UTC (rev 20887) @@ -22,16 +22,39 @@ #include "includes.h" #include "cluster/cluster.h" +#include "cluster/cluster_private.h" +static struct cluster_ops *ops; + +/* set cluster operations */ +void cluster_set_ops(struct cluster_ops *new_ops) +{ + ops = new_ops; +} + /* + not a nice abstraction :( +*/ +void *cluster_private(void) +{ + return ops->private; +} + +/* by default use the local ops */ +static void cluster_init(void) +{ + if (ops == NULL) cluster_local_init(); +} + + + +/* server a server_id for the local node */ struct server_id cluster_id(uint32_t id) { - struct server_id server_id; - ZERO_STRUCT(server_id); - server_id.id = id; - return server_id; + cluster_init(); + return ops->cluster_id(ops, id); } @@ -40,6 +63,6 @@ */ const char *cluster_id_string(TALLOC_CTX *mem_ctx, struct server_id id) { - return talloc_asprintf(mem_ctx, "%u.%u", id.node, id.id); + cluster_init(); + return ops->cluster_id_string(ops, mem_ctx, id); } - Modified: branches/SAMBA_4_0/source/cluster/cluster.h =================================================================== --- branches/SAMBA_4_0/source/cluster/cluster.h 2007-01-19 03:52:21 UTC (rev 20886) +++ branches/SAMBA_4_0/source/cluster/cluster.h 2007-01-19 03:53:37 UTC (rev 20887) @@ -31,5 +31,6 @@ /* prototypes */ struct server_id cluster_id(uint32_t id); const char *cluster_id_string(TALLOC_CTX *mem_ctx, struct server_id id); +void *cluster_private(void); #endif Added: branches/SAMBA_4_0/source/cluster/cluster_private.h =================================================================== --- branches/SAMBA_4_0/source/cluster/cluster_private.h 2007-01-19 03:52:21 UTC (rev 20886) +++ branches/SAMBA_4_0/source/cluster/cluster_private.h 2007-01-19 03:53:37 UTC (rev 20887) @@ -0,0 +1,36 @@ +/* + Unix SMB/CIFS implementation. + + private structures for clustering + + Copyright (C) Andrew Tridgell 2006 + + 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 + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + 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. +*/ + +#ifndef _CLUSTER_PRIVATE_H_ +#define _CLUSTER_PRIVATE_H_ + +struct cluster_ops { + struct server_id (*cluster_id)(struct cluster_ops *ops, uint32_t id); + const char *(*cluster_id_string)(struct cluster_ops *ops, + TALLOC_CTX *, struct server_id ); + void *private; /* backend state */ +}; + +void cluster_set_ops(struct cluster_ops *new_ops); +void cluster_local_init(void); + +#endif