row_api.h
上传用户:wxp200602
上传日期:2007-10-30
资源大小:4028k
文件大小:7k
- /**************************************************************
- * 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__ */