corosync  2.4.4
include/corosync/quorum.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2008-2012 Red Hat, Inc.
3  *
4  * All rights reserved.
5  *
6  * Author: Christine Caulfield (ccaulfi@redhat.com)
7  *
8  * This software licensed under BSD license, the text of which follows:
9  *
10  * Redistribution and use in source and binary forms, with or without
11  * modification, are permitted provided that the following conditions are met:
12  *
13  * - Redistributions of source code must retain the above copyright notice,
14  * this list of conditions and the following disclaimer.
15  * - Redistributions in binary form must reproduce the above copyright notice,
16  * this list of conditions and the following disclaimer in the documentation
17  * and/or other materials provided with the distribution.
18  * - Neither the name of the Red Hat, Inc. nor the names of its
19  * contributors may be used to endorse or promote products derived from this
20  * software without specific prior written permission.
21  *
22  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
23  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
24  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
25  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
26  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
27  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
28  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
29  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
30  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
31  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
32  * THE POSSIBILITY OF SUCH DAMAGE.
33  */
34 #ifndef COROSYNC_QUORUM_H_DEFINED
35 #define COROSYNC_QUORUM_H_DEFINED
36 
37 #include <corosync/corotypes.h>
38 
39 #ifdef __cplusplus
40 extern "C" {
41 #endif
42 
46 typedef uint64_t quorum_handle_t;
47 
51 typedef void (*quorum_notification_fn_t) (
52  quorum_handle_t handle,
53  uint32_t quorate,
54  uint64_t ring_seq,
55  uint32_t view_list_entries,
56  uint32_t *view_list
57  );
58 
62 typedef struct {
65 
66 #define QUORUM_FREE 0
67 #define QUORUM_SET 1
68 
77  quorum_handle_t *handle,
78  quorum_callbacks_t *callbacks,
79  uint32_t *quorum_type);
80 
87  quorum_handle_t handle);
88 
99  quorum_handle_t handle,
100  int *fd);
101 
109  quorum_handle_t handle,
110  cs_dispatch_flags_t dispatch_types);
111 
119  quorum_handle_t handle,
120  int *quorate);
121 
129  quorum_handle_t handle,
130  unsigned int flags );
131 
138  quorum_handle_t handle);
139 
147  quorum_handle_t handle,
148  const void *context);
149 
157  quorum_handle_t handle,
158  const void **context);
159 
160 #ifdef __cplusplus
161 }
162 #endif
163 
164 #endif /* COROSYNC_QUORUM_H_DEFINED */
The quorum_callbacks_t struct.
cs_error_t quorum_fd_get(quorum_handle_t handle, int *fd)
Get a file descriptor on which to poll.
Definition: lib/quorum.c:212
uint32_t flags
cs_error_t
The cs_error_t enum.
Definition: corotypes.h:94
cs_dispatch_flags_t
The cs_dispatch_flags_t enum.
Definition: corotypes.h:80
cs_error_t quorum_context_get(quorum_handle_t handle, const void **context)
quorum_context_get
Definition: lib/quorum.c:232
uint32_t quorate
Definition: sam.c:134
uint64_t quorum_handle_t
quorum_handle_t
cs_error_t quorum_getquorate(quorum_handle_t handle, int *quorate)
Get quorum information.
Definition: lib/quorum.c:170
cs_error_t quorum_context_set(quorum_handle_t handle, const void *context)
quorum_context_set
Definition: lib/quorum.c:251
cs_error_t quorum_dispatch(quorum_handle_t handle, cs_dispatch_flags_t dispatch_types)
Dispatch messages and configuration changes.
Definition: lib/quorum.c:351
cs_error_t quorum_initialize(quorum_handle_t *handle, quorum_callbacks_t *callbacks, uint32_t *quorum_type)
Create a new quorum connection.
Definition: lib/quorum.c:69
quorum_notification_fn_t quorum_notify_fn
cs_error_t quorum_trackstop(quorum_handle_t handle)
quorum_trackstop
Definition: lib/quorum.c:312
unsigned long long ring_seq
Definition: totemsrp.c:64
void(* quorum_notification_fn_t)(quorum_handle_t handle, uint32_t quorate, uint64_t ring_seq, uint32_t view_list_entries, uint32_t *view_list)
The quorum_notification_fn_t callback.
cs_error_t quorum_trackstart(quorum_handle_t handle, unsigned int flags)
Track node and quorum changes.
Definition: lib/quorum.c:271
cs_error_t quorum_finalize(quorum_handle_t handle)
Close the quorum handle.
Definition: lib/quorum.c:142