📄 row_api.h
字号:
/************************************************************** * Copyright (C) 2001 Alex Rozin, Optical Access * * All Rights Reserved * * Permission to use, copy, modify and distribute this software and its * documentation for any purpose and without fee is hereby granted, * provided that the above copyright notice appear in all copies and that * both that copyright notice and this permission notice appear in * supporting documentation. * * ALEX ROZIN DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL * ALEX ROZIN BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS * SOFTWARE. ******************************************************************/#ifndef _row_api_h_included__#define _row_api_h_included__/* * control tables API section */typedef enum { RMON1_ENTRY_VALID = 1, RMON1_ENTRY_CREATE_REQUEST, RMON1_ENTRY_UNDER_CREATION, RMON1_ENTRY_INVALID,} RMON1_ENTRY_STATUS_T;#define MAX_OWNERSTRING 128/* * structure for entry of all 'control' tables */typedef struct tagEntry { /* * begin of the header */ struct tagEntry *next; void *table_ptr; /* do casting to (TABLE_DEFINTION_T*) */ RMON1_ENTRY_STATUS_T status; RMON1_ENTRY_STATUS_T new_status; u_long ctrl_index; u_long timer_id; char *owner; char *new_owner; u_char only_just_created; /* * end of the header */ void *body; void *tmp;} RMON_ENTRY_T;typedef int (ENTRY_CALLBACK_T) (RMON_ENTRY_T *);typedef struct { char *name; RMON_ENTRY_T *first; u_long max_number_of_entries; /* '<0' means without limit */ u_long current_number_of_entries; ENTRY_CALLBACK_T *ClbkCreate; ENTRY_CALLBACK_T *ClbkClone; ENTRY_CALLBACK_T *ClbkValidate; ENTRY_CALLBACK_T *ClbkActivate; ENTRY_CALLBACK_T *ClbkDeactivate; ENTRY_CALLBACK_T *ClbkDelete; ENTRY_CALLBACK_T *ClbkCopy;} TABLE_DEFINTION_T;/* * Api prototypes */void ROWAPI_init_table(TABLE_DEFINTION_T * table_ptr, char *name, u_long max_number_of_entries, ENTRY_CALLBACK_T * ClbkCreate, ENTRY_CALLBACK_T * ClbkClone, ENTRY_CALLBACK_T * ClbkDelete, ENTRY_CALLBACK_T * ClbkValidate, ENTRY_CALLBACK_T * ClbkActivate, ENTRY_CALLBACK_T * ClbkDeactivate, ENTRY_CALLBACK_T * ClbkCopy);int ROWAPI_new(TABLE_DEFINTION_T * table_ptr, u_long ctrl_index);RMON_ENTRY_T *ROWAPI_get_clone(TABLE_DEFINTION_T * table_ptr, u_long ctrl_index, size_t body_size);void ROWAPI_delete_clone(TABLE_DEFINTION_T * table_ptr, u_long ctrl_index);RMON_ENTRY_T *ROWAPI_first(TABLE_DEFINTION_T * table_ptr);RMON_ENTRY_T *ROWAPI_next(TABLE_DEFINTION_T * table_ptr, u_long prev_index);RMON_ENTRY_T *ROWAPI_find(TABLE_DEFINTION_T * table_ptr, u_long ctrl_index);int ROWAPI_action_check(TABLE_DEFINTION_T * table_ptr, u_long ctrl_index);int ROWAPI_commit(TABLE_DEFINTION_T * table_ptr, u_long ctrl_index);RMON_ENTRY_T *ROWAPI_header_ControlEntry(struct variable *vp, oid * name, size_t * length, int exact, size_t * var_len, TABLE_DEFINTION_T * table_ptr, void *entry_ptr, size_t entry_size);int ROWAPI_do_another_action(oid * name, int tbl_first_index_begin, int action, int *prev_action, TABLE_DEFINTION_T * table_ptr, size_t entry_size);/* * data tables API section */typedef int (SCROLLER_ENTRY_DESCRUCTOR_T) (void *);typedef struct nexted_void_t { struct nexted_void_t *next; u_long data_index;} NEXTED_PTR_T;typedef struct data_scroller { u_long max_number_of_entries; u_long data_requested; u_long data_granted; u_long data_created; /* number of allocated data entries */ u_long data_stored; /* number of data, currently stored */ u_long data_total_number; /* number of data entries, stored after validation */ /* * these 3 pointers make casting to private (DATA_ENTRY_T*) */ void *first_data_ptr; NEXTED_PTR_T *last_data_ptr; void *current_data_ptr; size_t data_size; int (*data_destructor) (struct data_scroller *, void *);} SCROLLER_T;int ROWDATAAPI_init(SCROLLER_T * scrlr, u_long max_number_of_entries, u_long data_requested, size_t data_size, int (*data_destructor) (struct data_scroller *, void *));void ROWDATAAPI_set_size(SCROLLER_T * scrlr, u_long data_requested, u_char do_allocation);void ROWDATAAPI_descructor(SCROLLER_T * scrlr);void *ROWDATAAPI_locate_new_data(SCROLLER_T * scrlr);u_long ROWDATAAPI_get_total_number(SCROLLER_T * scrlr);RMON_ENTRY_T *ROWDATAAPI_header_DataEntry(struct variable *vp, oid * name, size_t * length, int exact, size_t * var_len, TABLE_DEFINTION_T * table_ptr, SCROLLER_T * (*extract_scroller) (void *body), size_t data_size, void *entry_ptr);#endif /* _row_api_h_included__ */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -