corosync  2.3.5
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 
43 typedef uint64_t quorum_handle_t;
44 
45 typedef void (*quorum_notification_fn_t) (
46  quorum_handle_t handle,
47  uint32_t quorate,
48  uint64_t ring_seq,
49  uint32_t view_list_entries,
50  uint32_t *view_list
51  );
52 
53 typedef struct {
56 
57 #define QUORUM_FREE 0
58 #define QUORUM_SET 1
59 
64  quorum_handle_t *handle,
65  quorum_callbacks_t *callbacks,
66  uint32_t *quorum_type);
67 
72  quorum_handle_t handle);
73 
74 
81  quorum_handle_t handle,
82  int *fd);
83 
88  quorum_handle_t handle,
89  cs_dispatch_flags_t dispatch_types);
90 
91 
96  quorum_handle_t handle,
97  int *quorate);
98 
103  quorum_handle_t handle,
104  unsigned int flags );
105 
107  quorum_handle_t handle);
108 
110  quorum_handle_t handle,
111  const void *context);
112 
114  quorum_handle_t handle,
115  const void **context);
116 
117 #ifdef __cplusplus
118 }
119 #endif
120 
121 #endif /* COROSYNC_QUORUM_H_DEFINED */
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
Definition: corotypes.h:78
cs_dispatch_flags_t
Definition: corotypes.h:67
cs_error_t quorum_context_get(quorum_handle_t handle, const void **context)
Definition: lib/quorum.c:232
uint32_t quorate
Definition: sam.c:133
uint64_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)
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)
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)
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