root/include/crm/cib/cib_types.h

/* [previous][next][first][last][top][bottom][index][help] */

INCLUDED FROM


   1 /*
   2  * Copyright 2004-2019 the Pacemaker project contributors
   3  *
   4  * The version control history for this file may have further details.
   5  *
   6  * This source code is licensed under the GNU Lesser General Public License
   7  * version 2.1 or later (LGPLv2.1+) WITHOUT ANY WARRANTY.
   8  */
   9 
  10 #ifndef PCMK__CRM_CIB_CIB_TYPES__H
  11 #  define PCMK__CRM_CIB_CIB_TYPES__H
  12 
  13 #  include <glib.h>             // gboolean, GList
  14 #  include <libxml/tree.h>      // xmlNode
  15 #  include <crm/common/ipc.h>
  16 #  include <crm/common/xml.h>
  17 
  18 #ifdef __cplusplus
  19 extern "C" {
  20 #endif
  21 
  22 /**
  23  * \file
  24  * \brief Data types for Cluster Information Base access
  25  * \ingroup cib
  26  */
  27 
  28 enum cib_variant {
  29     cib_undefined,
  30     cib_native,
  31     cib_file,
  32     cib_remote,
  33     cib_database,
  34 };
  35 
  36 enum cib_state {
  37     cib_connected_command,
  38     cib_connected_query,
  39     cib_disconnected
  40 };
  41 
  42 enum cib_conn_type {
  43     cib_command,
  44     cib_query,
  45     cib_no_connection,
  46     cib_command_nonblocking,
  47 };
  48 
  49 enum cib_call_options {
  50     cib_none            = 0x00000000,
  51     cib_verbose         = 0x00000001,  //!< Prefer stderr to logs
  52     cib_xpath           = 0x00000002,
  53     cib_multiple        = 0x00000004,
  54     cib_can_create      = 0x00000008,
  55     cib_discard_reply   = 0x00000010,
  56     cib_no_children     = 0x00000020,
  57     cib_xpath_address   = 0x00000040,
  58     cib_mixed_update    = 0x00000080,
  59     cib_scope_local     = 0x00000100,
  60     cib_dryrun          = 0x00000200,
  61     cib_sync_call       = 0x00001000,
  62     cib_no_mtime        = 0x00002000,
  63     cib_zero_copy       = 0x00004000,
  64     cib_inhibit_notify  = 0x00010000,
  65     cib_quorum_override = 0x00100000,
  66     cib_inhibit_bcast   = 0x01000000, //!< \deprecated Will be removed in future
  67     cib_force_diff      = 0x10000000
  68 };
  69 
  70 typedef struct cib_s cib_t;
  71 
  72 typedef struct cib_api_operations_s {
  73     int (*signon) (cib_t *cib, const char *name, enum cib_conn_type type);
  74     int (*signon_raw) (cib_t *cib, const char *name, enum cib_conn_type type,
  75                        int *event_fd);
  76     int (*signoff) (cib_t *cib);
  77     int (*free) (cib_t *cib);
  78     int (*set_op_callback) (cib_t *cib, void (*callback) (const xmlNode *msg,
  79                                                           int callid, int rc,
  80                                                           xmlNode *output));
  81     int (*add_notify_callback) (cib_t *cib, const char *event,
  82                                 void (*callback) (const char *event,
  83                                                   xmlNode *msg));
  84     int (*del_notify_callback) (cib_t *cib, const char *event,
  85                                 void (*callback) (const char *event,
  86                                                   xmlNode *msg));
  87     int (*set_connection_dnotify) (cib_t *cib,
  88                                    void (*dnotify) (gpointer user_data));
  89     int (*inputfd) (cib_t *cib);
  90     int (*noop) (cib_t *cib, int call_options);
  91     int (*ping) (cib_t *cib, xmlNode **output_data, int call_options);
  92     int (*query) (cib_t *cib, const char *section, xmlNode **output_data,
  93                   int call_options);
  94     int (*query_from) (cib_t *cib, const char *host, const char *section,
  95                        xmlNode **output_data, int call_options);
  96     int (*is_master) (cib_t *cib);
  97     int (*set_master) (cib_t *cib, int call_options);
  98     int (*set_slave) (cib_t *cib, int call_options);
  99     int (*set_slave_all) (cib_t *cib, int call_options);
 100     int (*sync) (cib_t *cib, const char *section, int call_options);
 101     int (*sync_from) (cib_t *cib, const char *host, const char *section,
 102                       int call_options);
 103     int (*upgrade) (cib_t *cib, int call_options);
 104     int (*bump_epoch) (cib_t *cib, int call_options);
 105     int (*create) (cib_t *cib, const char *section, xmlNode *data,
 106                    int call_options);
 107     int (*modify) (cib_t *cib, const char *section, xmlNode *data,
 108                    int call_options);
 109     int (*update) (cib_t *cib, const char *section, xmlNode *data,
 110                    int call_options);
 111     int (*replace) (cib_t *cib, const char *section, xmlNode *data,
 112                     int call_options);
 113     int (*remove) (cib_t *cib, const char *section, xmlNode *data,
 114                    int call_options);
 115     int (*erase) (cib_t *cib, xmlNode **output_data, int call_options);
 116     int (*delete_absolute) (cib_t *cib, const char *section, xmlNode *data,
 117                             int call_options);
 118     int (*quit) (cib_t *cib, int call_options);
 119     int (*register_notification) (cib_t *cib, const char *callback,
 120                                   int enabled);
 121     gboolean (*register_callback) (cib_t *cib, int call_id, int timeout,
 122                                    gboolean only_success, void *user_data,
 123                                    const char *callback_name,
 124                                    void (*callback) (xmlNode*, int, int,
 125                                                      xmlNode*, void *));
 126     gboolean (*register_callback_full)(cib_t *cib, int call_id, int timeout,
 127                                        gboolean only_success, void *user_data,
 128                                        const char *callback_name,
 129                                        void (*callback)(xmlNode *, int, int,
 130                                                         xmlNode *, void *),
 131                                        void (*free_func)(void *));
 132 } cib_api_operations_t;
 133 
 134 struct cib_s {
 135     enum cib_state state;
 136     enum cib_conn_type type;
 137     enum cib_variant variant;
 138 
 139     int call_id;
 140     int call_timeout;
 141     void *variant_opaque;
 142     void *delegate_fn;
 143 
 144     GList *notify_list;
 145     void (*op_callback) (const xmlNode *msg, int call_id, int rc,
 146                          xmlNode *output);
 147     cib_api_operations_t *cmds;
 148 };
 149 
 150 #ifdef __cplusplus
 151 }
 152 #endif
 153 
 154 #endif // PCMK__CRM_CIB_CIB_TYPES__H

/* [previous][next][first][last][top][bottom][index][help] */