GCS  0.2.3
gcs_backend.h
1 /*
2  * Copyright (C) 2008-2014 Codership Oy <info@codership.com>
3  *
4  * $Id: gcs_backend.h 3455 2014-02-01 18:11:09Z alex $
5  */
6 /*
7  * This header defines GC backend interface.
8  * Since we can't know backend context in advance,
9  * we have to use type void*. Kind of unsafe.
10  */
11 
12 #ifndef _gcs_backend_h_
13 #define _gcs_backend_h_
14 
15 #include "gcs.h"
16 #include "gcs_recv_msg.h"
17 
18 #include <galerautils.h>
19 #include <stdlib.h>
20 
22 typedef struct gcs_backend gcs_backend_t;
23 
24 /*
25  * The macros below are declarations of backend functions
26  * (kind of function signatures)
27  */
28 
30 #define GCS_BACKEND_REGISTER_FN(fn) \
31 void fn (gu_config_t* cnf)
32 
34 #define GCS_BACKEND_CREATE_FN(fn) \
35 long fn (gcs_backend_t* backend, \
36  const char* const addr, \
37  gu_config_t* const cnf)
38 
40 #define GCS_BACKEND_DESTROY_FN(fn) \
41 long fn (gcs_backend_t* backend)
42 
44 #define GCS_BACKEND_OPEN_FN(fn) \
45 long fn (gcs_backend_t* backend, \
46  const char* const channel, \
47  bool const bootstrap)
48 
50 #define GCS_BACKEND_CLOSE_FN(fn) \
51 long fn (gcs_backend_t* backend)
52 
69 #define GCS_BACKEND_SEND_FN(fn) \
70 long fn (gcs_backend_t* const backend, \
71  const void* const buf, \
72  size_t const len, \
73  gcs_msg_type_t const msg_type)
74 
96 #define GCS_BACKEND_RECV_FN(fn) \
97 long fn (gcs_backend_t* const backend, \
98  gcs_recv_msg_t* const msg, \
99  long long const timeout)
100 
101 /* for lack of better place define it here */
102 static const long GCS_SENDER_NONE = -1;
105 #define GCS_BACKEND_NAME_FN(fn) \
106 const char* fn (void)
107 
123 #define GCS_BACKEND_MSG_SIZE_FN(fn) \
124 long fn (gcs_backend_t* const backend, \
125  long const pkt_size)
126 
137 #define GCS_BACKEND_PARAM_SET_FN(fn) \
138 long fn (gcs_backend_t* backend, \
139  const char* key, \
140  const char* value)
141 
149 #define GCS_BACKEND_PARAM_GET_FN(fn) \
150 const char* fn (gcs_backend_t* backend, \
151  const char* key)
152 
153 typedef GCS_BACKEND_CREATE_FN ((*gcs_backend_create_t));
154 typedef GCS_BACKEND_DESTROY_FN ((*gcs_backend_destroy_t));
155 typedef GCS_BACKEND_OPEN_FN ((*gcs_backend_open_t));
156 typedef GCS_BACKEND_CLOSE_FN ((*gcs_backend_close_t));
157 typedef GCS_BACKEND_SEND_FN ((*gcs_backend_send_t));
158 typedef GCS_BACKEND_RECV_FN ((*gcs_backend_recv_t));
159 typedef GCS_BACKEND_NAME_FN ((*gcs_backend_name_t));
160 typedef GCS_BACKEND_MSG_SIZE_FN ((*gcs_backend_msg_size_t));
161 typedef GCS_BACKEND_PARAM_SET_FN ((*gcs_backend_param_set_t));
162 typedef GCS_BACKEND_PARAM_GET_FN ((*gcs_backend_param_get_t));
163 
165 {
166  gcs_backend_conn_t* conn;
167  gcs_backend_open_t open;
168  gcs_backend_close_t close;
169  gcs_backend_destroy_t destroy;
170  gcs_backend_send_t send;
171  gcs_backend_recv_t recv;
172  gcs_backend_name_t name;
173  gcs_backend_msg_size_t msg_size;
174  gcs_backend_param_set_t param_set;
175  gcs_backend_param_get_t param_get;
176 };
177 
181 void
182 gcs_backend_register(gu_config_t* conf);
183 
188 long
189 gcs_backend_init (gcs_backend_t* bk,
190  const char* uri,
191  gu_config_t* cnf);
192 
193 #endif /* _gcs_backend_h_ */
Definition: gcs_dummy.c:76
Definition: gcs_backend.h:164