You've already forked mariadb-columnstore-engine
mirror of
https://github.com/mariadb-corporation/mariadb-columnstore-engine.git
synced 2025-08-10 01:22:48 +03:00
169 lines
6.9 KiB
C
169 lines
6.9 KiB
C
/*
|
|
* table_iterator.h
|
|
*/
|
|
#ifndef _TABLE_DATA_SET_HANDLER_H_
|
|
#define _TABLE_DATA_SET_HANDLER_H_
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
/*
|
|
* This helper is designed to completely automate the task of storing
|
|
* tables of data within the agent that are not tied to external data
|
|
* sources (like the kernel, hardware, or other processes, etc). IE,
|
|
* all rows within a table are expected to be added manually using
|
|
* functions found below.
|
|
*/
|
|
|
|
void netsnmp_init_table_dataset(void);
|
|
|
|
#define TABLE_DATA_SET_NAME "netsnmp_table_data_set"
|
|
|
|
/*
|
|
* return SNMP_ERR_NOERROR or some SNMP specific protocol error id
|
|
*/
|
|
typedef int (Netsnmp_Value_Change_Ok) (char *old_value,
|
|
size_t old_value_len,
|
|
char *new_value,
|
|
size_t new_value_len,
|
|
void *mydata);
|
|
|
|
/*
|
|
* stored within a given row
|
|
*/
|
|
typedef struct netsnmp_table_data_set_storage_s {
|
|
unsigned int column;
|
|
|
|
/*
|
|
* info about it?
|
|
*/
|
|
char writable;
|
|
Netsnmp_Value_Change_Ok *change_ok_fn;
|
|
void *my_change_data;
|
|
|
|
/*
|
|
* data actually stored
|
|
*/
|
|
u_char type;
|
|
union { /* value of variable */
|
|
void *voidp;
|
|
long *integer;
|
|
u_char *string;
|
|
oid *objid;
|
|
u_char *bitstring;
|
|
struct counter64 *counter64;
|
|
#ifdef OPAQUE_SPECIAL_TYPES
|
|
float *floatVal;
|
|
double *doubleVal;
|
|
#endif /* OPAQUE_SPECIAL_TYPES */
|
|
} data;
|
|
u_long data_len;
|
|
|
|
struct netsnmp_table_data_set_storage_s *next;
|
|
} netsnmp_table_data_set_storage;
|
|
|
|
typedef struct netsnmp_table_data_set_s {
|
|
netsnmp_table_data *table;
|
|
netsnmp_table_data_set_storage *default_row;
|
|
int allow_creation; /* set to 1 to allow creation of new rows */
|
|
unsigned int rowstatus_column;
|
|
} netsnmp_table_data_set;
|
|
|
|
Netsnmp_Node_Handler netsnmp_table_data_set_helper_handler;
|
|
|
|
/*
|
|
* to set, add column, type, (writable) ? 1 : 0
|
|
*/
|
|
/*
|
|
* default value, if not NULL, is the default value used in row
|
|
* creation. It is copied into the storage template (free your
|
|
* calling argument).
|
|
*/
|
|
int
|
|
netsnmp_table_set_add_default_row(netsnmp_table_data_set *,
|
|
unsigned int, int, int,
|
|
void *default_value,
|
|
size_t default_value_len);
|
|
|
|
/*
|
|
* to set, add column, type, (writable) ? 1 : 0, ...
|
|
*/
|
|
#if HAVE_STDARG_H
|
|
void
|
|
netsnmp_table_set_multi_add_default_row(netsnmp_table_data_set *,
|
|
...);
|
|
#else
|
|
void netsnmp_table_set_multi_add_default_row(va_alist);
|
|
#endif
|
|
int netsnmp_set_row_column(netsnmp_table_row *,
|
|
unsigned int, int, const char *,
|
|
size_t);
|
|
netsnmp_table_data_set_storage
|
|
*netsnmp_table_data_set_find_column(netsnmp_table_data_set_storage
|
|
*, unsigned int);
|
|
netsnmp_table_data_set_storage
|
|
*netsnmp_extract_table_data_set_column(netsnmp_request_info *,
|
|
unsigned int);
|
|
int
|
|
netsnmp_register_table_data_set(netsnmp_handler_registration *,
|
|
netsnmp_table_data_set *,
|
|
netsnmp_table_registration_info *);
|
|
netsnmp_mib_handler
|
|
*netsnmp_get_table_data_set_handler(netsnmp_table_data_set *);
|
|
netsnmp_table_data_set *netsnmp_create_table_data_set(const char *);
|
|
int netsnmp_mark_row_column_writable(netsnmp_table_row
|
|
*row, int column,
|
|
int writable);
|
|
NETSNMP_INLINE netsnmp_table_data_set
|
|
*netsnmp_extract_table_data_set(netsnmp_request_info *request);
|
|
void netsnmp_config_parse_table_set(const char *token,
|
|
char *line);
|
|
void netsnmp_config_parse_add_row(const char *token,
|
|
char *line);
|
|
NETSNMP_INLINE void netsnmp_table_dataset_add_index(netsnmp_table_data_set
|
|
*table, u_char type);
|
|
NETSNMP_INLINE void netsnmp_table_dataset_add_row(netsnmp_table_data_set
|
|
*table,
|
|
netsnmp_table_row *row);
|
|
NETSNMP_INLINE void netsnmp_table_dataset_remove_row(netsnmp_table_data_set
|
|
*table,
|
|
netsnmp_table_row
|
|
*row);
|
|
NETSNMP_INLINE void netsnmp_table_dataset_delete_row(netsnmp_table_row
|
|
*row);
|
|
NETSNMP_INLINE void
|
|
netsnmp_table_dataset_remove_and_delete_row(netsnmp_table_data_set
|
|
*table,
|
|
netsnmp_table_row
|
|
*row);
|
|
NETSNMP_INLINE void
|
|
netsnmp_table_dataset_delete_all_data
|
|
(netsnmp_table_data_set_storage *data);
|
|
NETSNMP_INLINE void
|
|
netsnmp_table_dataset_replace_row(netsnmp_table_data_set *table,
|
|
netsnmp_table_row *origrow,
|
|
netsnmp_table_row *newrow);
|
|
netsnmp_table_row *netsnmp_table_data_set_clone_row(netsnmp_table_row
|
|
*row);
|
|
void netsnmp_register_auto_data_table(netsnmp_table_data_set
|
|
*table_set,
|
|
char
|
|
*registration_name);
|
|
int netsnmp_table_data_num_rows(netsnmp_table_data *table);
|
|
|
|
#if HAVE_STDARG_H
|
|
void
|
|
netsnmp_table_set_add_indexes(netsnmp_table_data_set *tset, ...);
|
|
#else
|
|
void netsnmp_table_helper_add_indexes(va_alist);
|
|
#endif
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#define netsnmp_table_row_add_column(row, type, value, value_len) snmp_varlist_add_variable(&row->indexes, NULL, 0, type, (u_char *) value, value_len)
|
|
|
|
#endif /* _TABLE_DATA_SET_HANDLER_H_ */
|