1 /**************************************************************
2 * Copyright (C) 2001 Alex Rozin, Optical Access
6 * Permission to use, copy, modify and distribute this software and its
7 * documentation for any purpose and without fee is hereby granted,
8 * provided that the above copyright notice appear in all copies and that
9 * both that copyright notice and this permission notice appear in
10 * supporting documentation.
12 * ALEX ROZIN DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
13 * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
14 * ALEX ROZIN BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
15 * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
16 * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
17 * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
19 ******************************************************************/
21 #ifndef _row_api_h_included__
22 #define _row_api_h_included__
25 * control tables API section
29 RMON1_ENTRY_VALID = 1,
30 RMON1_ENTRY_CREATE_REQUEST,
31 RMON1_ENTRY_UNDER_CREATION,
33 } RMON1_ENTRY_STATUS_T;
35 #define MAX_OWNERSTRING 128
38 * structure for entry of all 'control' tables
40 typedef struct tagEntry {
44 struct tagEntry *next;
45 void *table_ptr; /* do casting to (TABLE_DEFINTION_T*) */
46 RMON1_ENTRY_STATUS_T status;
47 RMON1_ENTRY_STATUS_T new_status;
52 u_char only_just_created;
62 typedef int (ENTRY_CALLBACK_T) (RMON_ENTRY_T *);
67 u_long max_number_of_entries; /* '<0' means without limit */
68 u_long current_number_of_entries;
69 ENTRY_CALLBACK_T *ClbkCreate;
70 ENTRY_CALLBACK_T *ClbkClone;
71 ENTRY_CALLBACK_T *ClbkValidate;
72 ENTRY_CALLBACK_T *ClbkActivate;
73 ENTRY_CALLBACK_T *ClbkDeactivate;
74 ENTRY_CALLBACK_T *ClbkDelete;
75 ENTRY_CALLBACK_T *ClbkCopy;
81 void ROWAPI_init_table(TABLE_DEFINTION_T * table_ptr,
83 u_long max_number_of_entries,
84 ENTRY_CALLBACK_T * ClbkCreate,
85 ENTRY_CALLBACK_T * ClbkClone,
86 ENTRY_CALLBACK_T * ClbkDelete,
87 ENTRY_CALLBACK_T * ClbkValidate,
88 ENTRY_CALLBACK_T * ClbkActivate,
89 ENTRY_CALLBACK_T * ClbkDeactivate,
90 ENTRY_CALLBACK_T * ClbkCopy);
92 int ROWAPI_new(TABLE_DEFINTION_T * table_ptr,
95 RMON_ENTRY_T *ROWAPI_get_clone(TABLE_DEFINTION_T * table_ptr,
96 u_long ctrl_index, size_t body_size);
98 void ROWAPI_delete_clone(TABLE_DEFINTION_T * table_ptr,
101 RMON_ENTRY_T *ROWAPI_first(TABLE_DEFINTION_T * table_ptr);
103 RMON_ENTRY_T *ROWAPI_next(TABLE_DEFINTION_T * table_ptr,
106 RMON_ENTRY_T *ROWAPI_find(TABLE_DEFINTION_T * table_ptr,
109 int ROWAPI_action_check(TABLE_DEFINTION_T * table_ptr,
112 int ROWAPI_commit(TABLE_DEFINTION_T * table_ptr,
115 RMON_ENTRY_T *ROWAPI_header_ControlEntry(struct variable *vp, oid * name,
116 size_t * length, int exact,
118 TABLE_DEFINTION_T * table_ptr,
122 int ROWAPI_do_another_action(oid * name,
123 int tbl_first_index_begin,
124 int action, int *prev_action,
125 TABLE_DEFINTION_T * table_ptr,
129 * data tables API section
132 typedef int (SCROLLER_ENTRY_DESCRUCTOR_T) (void *);
134 typedef struct nexted_void_t {
135 struct nexted_void_t *next;
139 typedef struct data_scroller {
140 u_long max_number_of_entries;
141 u_long data_requested;
143 u_long data_created; /* number of allocated data entries */
144 u_long data_stored; /* number of data, currently stored */
145 u_long data_total_number; /* number of data entries, stored after validation */
148 * these 3 pointers make casting to private (DATA_ENTRY_T*)
150 void *first_data_ptr;
151 NEXTED_PTR_T *last_data_ptr;
152 void *current_data_ptr;
155 int (*data_destructor) (struct data_scroller *, void *);
158 int ROWDATAAPI_init(SCROLLER_T * scrlr,
159 u_long max_number_of_entries,
160 u_long data_requested,
162 int (*data_destructor) (struct
167 ROWDATAAPI_set_size(SCROLLER_T * scrlr,
168 u_long data_requested,
169 u_char do_allocation);
171 void ROWDATAAPI_descructor(SCROLLER_T * scrlr);
173 void *ROWDATAAPI_locate_new_data(SCROLLER_T * scrlr);
175 u_long ROWDATAAPI_get_total_number(SCROLLER_T * scrlr);
177 RMON_ENTRY_T *ROWDATAAPI_header_DataEntry(struct variable *vp,
178 oid * name, size_t * length,
179 int exact, size_t * var_len,
180 TABLE_DEFINTION_T * table_ptr,
182 (*extract_scroller) (void
187 #endif /* _row_api_h_included__ */