r21256: - msg_type is not needed in the cluster messaging API
[samba.git] / source4 / cluster / cluster.h
1 /* 
2    Unix SMB/CIFS implementation.
3
4    structures for clustering
5
6    Copyright (C) Andrew Tridgell 2006
7    
8    This program is free software; you can redistribute it and/or modify
9    it under the terms of the GNU General Public License as published by
10    the Free Software Foundation; either version 2 of the License, or
11    (at your option) any later version.
12    
13    This program is distributed in the hope that it will be useful,
14    but WITHOUT ANY WARRANTY; without even the implied warranty of
15    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16    GNU General Public License for more details.
17    
18    You should have received a copy of the GNU General Public License
19    along with this program; if not, write to the Free Software
20    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
21 */
22
23 #ifndef __CLUSTER_H__
24 #define __CLUSTER_H__ 
25
26 /*
27   test for same cluster id
28 */
29 #define cluster_id_equal(id1, id2) ((id1)->id == (id2)->id && (id1)->node == (id2)->node)
30
31 /*
32   test for same cluster node
33 */
34 #define cluster_node_equal(id1, id2) ((id1)->node == (id2)->node)
35
36 struct messaging_context;
37 typedef void (*cluster_message_fn_t)(struct messaging_context *, DATA_BLOB);
38
39 /* prototypes */
40 struct server_id cluster_id(uint32_t id);
41 const char *cluster_id_string(TALLOC_CTX *mem_ctx, struct server_id id);
42 struct tdb_wrap *cluster_tdb_tmp_open(TALLOC_CTX *mem_ctx, const char *dbname, int flags);
43 void *cluster_backend_handle(void);
44
45 NTSTATUS cluster_message_init(struct messaging_context *msg, struct server_id server,
46                               cluster_message_fn_t handler);
47 NTSTATUS cluster_message_send(struct server_id server, DATA_BLOB *data);
48
49 #endif