yumapro  24.10-7
YumaPro SDK
Loading...
Searching...
No Matches
getcb.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2008 - 2012, Andy Bierman, All Rights Reserved.
3 * Copyright (c) 2012 - 2023, YumaWorks, Inc., All Rights Reserved.
4 *
5 * Unless required by applicable law or agreed to in writing,
6 * software distributed under the License is distributed on an
7 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
8 * KIND, either express or implied. See the License for the
9 * specific language governing permissions and limitations
10 * under the License.
11 */
12#ifndef _H_getcb
13#define _H_getcb
14
15/* FILE: getcb.h
16*********************************************************************
17* *
18* P U R P O S E *
19* *
20*********************************************************************/
21
27/*********************************************************************
28* *
29* C H A N G E H I S T O R Y *
30* *
31*********************************************************************
32
33date init comment
34----------------------------------------------------------------------
3516-apr-07 abb Begun; split out from agt_ps.h
36
37*/
38
39#ifndef _H_ncxconst
40#include "ncxconst.h"
41#endif
42
43#ifndef _H_obj
44#include "obj.h"
45#endif
46
47#ifndef _H_rpc
48#include "rpc.h"
49#endif
50
51#ifndef _H_ses
52#include "ses.h"
53#endif
54
55#ifndef _H_status_enum
56#include "status_enum.h"
57#endif
58
59#ifndef _H_val
60#include "val.h"
61#endif
62
63#ifndef _H_val_util
64#include "val_util.h"
65#endif
66
67#ifdef __cplusplus
68extern "C" {
69#endif
70
71
103/********************************************************************
104* *
105* C O N S T A N T S *
106* *
107*********************************************************************/
108
109/* input parameter macros */
110#define GETCB_GET2_TXID_STR(G) (G)->txid_str
111#define GETCB_GET2_OBJ(G) (G)->obj
112#define GETCB_GET2_TESTFN(G) (G)->testfn
113#define GETCB_GET2_KEYQ(G) &(G)->keyQ
114#define GETCB_GET2_MATCHQ(G) &(G)->matchQ
115#define GETCB_GET2_SELECTQ(G) &(G)->selectQ
116#define GETCB_GET2_RETURN_KEYQ(G) &(G)->return_keyQ
117#define GETCB_GET2_RETURN_VALQ(G) &(G)->return_valQ
118#define GETCB_GET2_GETBULKQ(G) &(G)->getbulkQ
119#define GETCB_GET2_CBMODE(G) (G)->cbmode
120#define GETCB_GET2_MAX_ENTRIES(G) (G)->max_entries
121#define GETCB_GET2_MAX_LEVELS(G) (G)->max_levels
122#define GETCB_GET2_OPER_DATA(G) (G)->oper_data
123#define GETCB_GET2_CONFIG_DATA(G) (G)->config_data
124#define GETCB_GET2_PRE_PROCESS(G) (G)->pre_process
125#define GETCB_GET2_EXPAND_VAREXPR(G) (G)->expand_varexpr
126#define GETCB_GET2_KEYS_ONLY(G) (G)->keys_only
127#define GETCB_GET2_WITH_DEFAULTS(G) (G)->with_defaults
128#define GETCB_GET2_SELECT(G) (G)->select_only
129#define GETCB_GET2_API_MODE(G) (G)->api_mode
130#define GETCB_GET2_WITH_ORIGIN(G) (G)->with_origin
131#define GET2CB_GET2_SCB(G) (G)->scb
132
133/* internal state data macros */
134#define GETCB_GET2_START_ADD_KEY(G) (G)->start_add_key
135#define GETCB_GET2_ACMTEST_RESULT(G) (G)->acmtest_result
136#define GETCB_GET2_FIRST_SIBLING(G) (G)->first_sibling
137#define GETCB_GET2_FIRST_LL_SIBLING(G) (G)->first_llsibling
138#define GETCB_GET2_LAST_LL_SIBLING(G) (G)->last_llsibling
139#define GETCB_GET2_LAST_SIBLING(G) (G)->last_sibling
140#define GETCB_GET2_FIRST_CHILD(G) (G)->first_child
141#define GETCB_GET2_FIRST_NOKEY_CHILD(G) (G)->isfirst_nokey
142#define GETCB_GET2_FIRST(G) (G)->isfirst
143#define GETCB_GET2_LAST(G) (G)->islast
144#define GETCB_GET2_WROTE_LIST(G) (G)->wrote_some_lists
145#define GETCB_GET2_FINISH_LIST(G) (G)->finish_list
146
147/* return data macros */
148#define GETCB_GET2_MORE_DATA(G) (G)->more_data
149#define GETCB_GET2_ACTIVE_CASE_MODNAME(G) (G)->active_case_modname
150#define GETCB_GET2_ACTIVE_CASE(G) (G)->active_case
151#define GETCB_GET2_PARENT_VAL(G) (G)->parent_val
152#define GETCB_GET2_PARENT_CB(G) (G)->parent_cb
153#define GETCB_GET2_REMOVE_KEY(G,C) dlq_remove(C)
154#define GETCB_GET2_REMOVE_MATCH(G,C) dlq_remove(C)
155#define GETCB_GET2_REMOVE_VAL(G,C) dlq_remove(C)
156
157
158#define GETCB_GET2_FIRST_KEY(G) \
159 (val_value_t *)dlq_firstEntry(&(G)->keyQ)
160
161#define GETCB_GET2_NEXT_KEY(G,C) \
162 (val_value_t *)dlq_nextEntry(C)
163
164#define GETCB_GET2_FIRST_MATCH(G) \
165 (val_value_t *)dlq_firstEntry(&(G)->matchQ)
166
167#define GETCB_GET2_NEXT_MATCH(G,C) \
168 (val_value_t *)dlq_nextEntry(C)
169
170#define GETCB_GET2_FIRST_SELECT(G) \
171 (getcb_get2_select_t *)dlq_firstEntry(&(G)->selectQ)
172
173#define GETCB_GET2_NEXT_SELECT(G,C) \
174 (getcb_get2_select_t *)dlq_nextEntry(C)
175
176#define GETCB_GET2_MATCH_TEST_DONE(G) (G)->match_test_done
177
178#define GETCB_GET2_RETURN_VAL(G) &(G)->return_val
179
180#define GETCB_GET2_RETURN_VAL_SET(G) \
181 ((G)->return_val.btyp != NCX_BT_NONE)
182
183#define GETCB_GET2_FIRST_RETURN_KEY(G) \
184 (val_value_t *)dlq_firstEntry(&(G)->return_keyQ)
185
186#define GETCB_GET2_NEXT_RETURN_KEY(G,C) \
187 (val_value_t *)dlq_nextEntry(C)
188
189#define GETCB_GET2_FIRST_RETURN_VAL(G) \
190 (val_value_t *)dlq_firstEntry(&(G)->return_valQ)
191
192#define GETCB_GET2_NEXT_RETURN_VAL(G,C) \
193 (val_value_t *)dlq_nextEntry(C)
194
195#define GETCB_GET2_RESPONSEQ(G) &(G)->responseQ
196
197#define GETCB_GET2_FIRST_RESPONSE(G) \
198 (getcb_get2_t *)dlq_firstEntry(&(G)->responseQ)
199
200#define GETCB_GET2_NEXT_RESPONSE(G,C) \
201 (getcb_get2_t *)dlq_nextEntry(C)
202
203#define GETCB_GET2_REMOVE_RESPONSE(G,C) dlq_remove(C)
204
205
206#define GETCB_GET2_FIRST_GETBULK(G) \
207 (getcb_get2_getbulk_t *)dlq_firstEntry(&(G)->getbulkQ)
208
209#define GETCB_GET2_NEXT_GETBULK(G,C) \
210 (getcb_get2_getbulk_t *)dlq_nextEntry(C)
211
212#define GETCB_GET2_DATASTORE(G) (G)->nmda_ds
213
214#define GETCB_GET2_ORIGIN(G) (G)->nmda_origin
215
216
217/* All in One Queue Macros */
218#define GETCB_GET2_RETURN_AIOQ(G) &(G)->return_aioQ
219#define GETCB_AIO_ENCODING(G) (G)->aio_encoding
220#define GETCB_AIO_BUFFER(G) (G)->aio_return_buff
221
222#define GETCB_GET2_FIRST_RETURN_AIO_VAL(G) \
223 (val_value_t *)dlq_firstEntry(&(G)->return_aioQ)
224
225#define GETCB_GET2_NEXT_RETURN_AIO_VAL(C) \
226 (val_value_t *)dlq_nextEntry(C)
227
228#define GETCB_GET2_USER_DATA_REF(G) (G)->user_data_ref
229
230#define GETCB_GET2_USER_DATA_INDEX(G) (G)->user_data_index
231
232/* Schema mount MPID field
233 * The parameter G is a getcb_get2_t *
234 */
235#define GETCB_GET2_SM_MPID(G) (G)->sm_mpid
236
241#define GETCB_GET2_SM_MPID_MALLOCED(G) (G)->sm_mpid_malloced
242
243#define GETCB_FLAG_KEYS (const xmlChar *)"keys"
244#define GETCB_FLAG_CONFIG (const xmlChar *)"config"
245#define GETCB_FLAG_OPER (const xmlChar *)"oper"
246#define GETCB_FLAG_GETNEXT (const xmlChar *)"getnext"
247#define GETCB_FLAG_WITHDEF (const xmlChar *)"withdef"
248#define GETCB_FLAG_SELECT (const xmlChar *)"select"
249#define GETCB_FLAG_WITH_ORIGIN (const xmlChar *)"with-origin"
250#define GETCB_FLAG_PRE_PROCESS (const xmlChar *)"pre-process"
251
252
253/********************************************************************
254* *
255* T Y P E S *
256* *
257*********************************************************************/
258
260typedef enum getcb_mode_t_ {
265
266
267/* get2 walker callback modes for the 'normal' API mode */
268typedef enum getcb_api_mode_t_ {
269 GETCB_API_MODE_NONE,
270 GETCB_API_MODE_NORMAL,
271 GETCB_API_MODE_1SHOT,
272 GETCB_API_MODE_CHOICE,
273 GETCB_API_MODE_CONFIG_NODE, // config=true node
274 GETCB_API_MODE_ALL_IN_ONE, // All in One retrieval
275 GETCB_API_MODE_ALL_IN_ONE_1SHOT
276} getcb_api_mode_t;
277
278
280typedef enum getcb_walker_mode_t_ {
281 GETCB_WALK_MODE_NONE,
282
283 /* get2 walker callback modes for the 'normal' API mode */
284 GETCB_WALK_MODE_START,
285 GETCB_WALK_MODE_TERM,
286 GETCB_WALK_MODE_END,
287
288 /* get2 walker callback mode for the '1shot' API mode */
289 GETCB_WALK_MODE_1SHOT,
290
291 /* get2 walker callback mode for pre-get choices API mode */
292 GETCB_WALK_MODE_CHOICE
294
295
297typedef enum getcb_walker_status_t_ {
298 GETCB_WALK_STAT_NONE,
299 GETCB_WALK_STAT_CONTINUE,
300 GETCB_WALK_STAT_STOP_INSTANCE,
301 GETCB_WALK_STAT_STOP_OBJECT,
302 GETCB_WALK_STAT_STOP_WALK
304
305
310typedef struct getcb_keyval_t_ {
311 dlq_hdr_t qhdr;
312 xmlChar *value;
315 boolean fixed_value;
317
318
320typedef struct getcb_get2_lookup_t_ {
321 dlq_hdr_t qhdr;
323 dlq_hdr_t keyvalQ;
324 boolean full_lookup;
326
327
329typedef struct getcb_get2_select_t_ {
330 dlq_hdr_t qhdr;
331 const xmlChar *modname;
332 const xmlChar *objname;
334
335
346typedef struct getcb_get2_getbulk_t_ {
347 dlq_hdr_t qhdr;
350 dlq_hdr_t return_keyQ;
351
353 dlq_hdr_t return_valQ;
355
356
358typedef struct getcb_get2_t_ {
359 dlq_hdr_t qhdr;
361 /********** I N P U T P A R A M E T E R S *******/
362
364 xmlChar *txid_str;
365
368
371
378 dlq_hdr_t keyQ;
379
384 dlq_hdr_t matchQ;
385
399 dlq_hdr_t selectQ;
403
408
413
415 boolean oper_data;
416
421 boolean config_data;
422
427
431 boolean keys_only;
432
436 boolean select_only;
437
444
461 getcb_api_mode_t api_mode;
462
464 boolean with_origin;
465
466 /********** I N T E R N A L S T A T E D A T A *******/
467
473
476
479
484
486 boolean islast;
487 boolean isfirst;
488 boolean aio_done;
491 boolean first_child;
496
500 boolean finish_list;
501
502 /********** C A L L B A C K R E T U R N D A T A *******/
503
508 boolean more_data;
509
514 dlq_hdr_t getbulkQ;
521 xmlChar *active_case;
522
524 dlq_hdr_t return_keyQ;
525
527 dlq_hdr_t return_valQ;
528
538
542 dlq_hdr_t responseQ; // Q of getcb_get2_t structs
543
551
557
560
561 struct getcb_get2_t_ *parent_cb;
562
570 dlq_hdr_t return_aioQ;
571
574
577
582
587
588
594
599
600
601 /******** C A L L B A C K S T A T E D A T A *******/
602
616
628
634 boolean pre_process;
635
642
643
656typedef status_t
657 (*getcb_fn_t) (ses_cb_t *scb,
658 getcb_mode_t cbmode,
659 const val_value_t *virval,
660 val_value_t *dstval);
661
662
663
682typedef status_t
683 (*getcb_fn2_t) (ses_cb_t *scb,
684 xml_msg_hdr_t *msg,
685 getcb_get2_t *get2cb);
686
687
726 getcb_get2_t *get2cb,
727 obj_template_t *obj,
728 val_value_t *val,
729 void *cookie);
730
731
739extern void
741
742
749extern getcb_get2_t *
750 getcb_new_get2cb (void);
751
752
758extern void
760
761
768extern void
770 boolean reuse);
771
772
782extern void
784 val_value_t *val);
785
786
793extern val_value_t *
795 obj_template_t *obj);
796
797
807extern val_value_t *
809 xmlns_id_t obj_nsid,
810 const xmlChar *obj_name);
811
812
825extern val_value_t *
827 xmlns_id_t obj_nsid,
828 const xmlChar *obj_name,
829 const xmlChar *valstr);
830
831
839extern val_value_t *
841 val_value_t *curval);
842
843
853extern val_value_t *
855 obj_template_t *obj);
856
857
868extern val_value_t *
870 const xmlChar *modname,
871 const xmlChar *objname);
872
873
886extern val_value_t *
888 const xmlChar *modname,
889 const xmlChar *objname,
890 uint32 keynum);
891
892
904extern val_value_t *
906 const xmlChar *modname,
907 const xmlChar *objname,
908 uint32 objlvl);
909
910
918extern val_value_t *
920 obj_template_t *obj);
921
922
932extern void
934 val_value_t *val);
935
936
945extern void
947 val_value_t *val);
948
949
960extern status_t
962 const xmlChar *modname,
963 const xmlChar *objname);
964
965
976extern void
978 val_value_t *val);
979
980
988extern val_value_t *
990 obj_template_t *obj);
991
992
1002extern val_value_t *
1004 xmlns_id_t obj_nsid,
1005 const xmlChar *obj_name);
1006
1007
1014extern void
1016
1017
1023extern void
1025
1026
1032extern void
1034
1035
1049extern val_value_t *
1051 obj_template_t *get_request_obj,
1052 boolean preserve_data,
1053 xml_msg_hdr_t *msg,
1054 status_t *res);
1055
1056
1068extern getcb_get2_t *
1069 getcb_request_val_to_get2cb (val_value_t *get_request_val,
1070 boolean preserve_data,
1071 status_t *res);
1072
1073
1086extern val_value_t *
1088 obj_template_t *response_obj,
1089 boolean preserve_data,
1090 status_t *res);
1091
1092
1104extern getcb_get2_t *
1106 boolean preserve_data,
1107 status_t *res);
1108
1109
1117extern void
1119 getcb_get2_t *return_get2cb);
1120
1121
1129extern status_t
1130 getcb_move_response_get2cb (getcb_get2_t *response_get2cb,
1131 getcb_get2_t *get2cb);
1132
1133
1144extern status_t
1146 getcb_get2_t *get2cb,
1147 boolean replace_mode);
1148
1149
1171extern status_t
1173 xml_msg_hdr_t *msg,
1174 val_value_t *parentval,
1175 getcb_get2_t *parent_get2cb,
1176 obj_template_t *obj,
1177 boolean with_defaults,
1178 getcb_get2_walker_fn_t walkerfn,
1179 void *cookie);
1180
1181
1210extern status_t
1212 xml_msg_hdr_t *msg,
1213 val_value_t *parentval,
1214 getcb_get2_t *parent_get2cb,
1215 obj_template_t *obj,
1216 boolean with_defaults,
1217 getcb_get2_walker_fn_t walkerfn,
1218 void *cookie,
1219 getcb_get2_t *force_get2cb,
1220 getcb_api_mode_t api_mode);
1221
1222
1234extern status_t
1236 xml_msg_hdr_t *msg,
1237 val_nodetest_fn_t testfn,
1238 getcb_get2_t *get2cb);
1239
1240
1247extern getcb_keyval_t *
1248 getcb_new_keyval (const xmlChar *keyval);
1249
1250
1259extern getcb_keyval_t *
1261 obj_template_t *keyobj,
1262 boolean fixed_value);
1263
1264
1273extern getcb_keyval_t *
1274 getcb_new_keyval3 (const xmlChar *keyval,
1275 obj_template_t *keyobj,
1276 boolean fixed_value);
1277
1278
1279
1285extern void
1287
1288
1289
1295extern void
1296 getcb_clean_keyvalQ (dlq_hdr_t *que);
1297
1298
1306extern getcb_get2_lookup_t *
1308 dlq_hdr_t *keyvalQ);
1309
1310
1316extern void
1318
1319
1325extern void
1326 getcb_clean_get2_lookupQ (dlq_hdr_t *lookupQ);
1327
1328
1336extern getcb_get2_lookup_t *
1338 dlq_hdr_t *lookupQ);
1339
1340
1348extern getcb_get2_select_t *
1349 getcb_new_get2_select (const xmlChar *modname,
1350 const xmlChar *objname);
1351
1352
1358extern void
1360
1361
1370extern boolean
1372 const xmlChar *modname,
1373 const xmlChar *objname);
1374
1375
1381extern void
1383
1384
1394extern boolean
1396 obj_template_t *reqobj);
1397
1398
1412extern boolean
1414 obj_template_t *reqobj,
1415 uint32 *choicecnt,
1416 obj_template_t **top_choice);
1417
1418
1440extern obj_template_t *
1442 obj_template_t *parent_obj);
1443
1444
1465extern obj_template_t *
1467 obj_template_t *curchild);
1468
1469
1478extern status_t
1480 const xmlChar *active_case_modname,
1481 const xmlChar *active_case);
1482
1483
1489extern getcb_get2_getbulk_t *
1491
1492
1498extern void
1500
1501
1512extern status_t
1514
1515
1545extern status_t
1547 ses_cb_t *scb,
1548 getcb_get2_t *parent_get2cb,
1549 obj_template_t *targobj,
1550 val_value_t *curval,
1551 uint32 choice_cnt,
1552 obj_template_t *top_choice,
1553 boolean *force_remove,
1554 getcb_get2_t **ret_get2cb);
1555
1556
1557
1566extern void
1567 getcb_log_walker (const xmlChar *caller,
1568 getcb_walker_mode_t walker_mode,
1569 const xmlChar *objname,
1570 const xmlChar *valname);
1571
1572
1580extern status_t
1581 getcb_clone_keyQ (dlq_hdr_t *srcQ,
1582 dlq_hdr_t *destQ);
1583
1584
1592extern boolean
1594
1595
1601extern void
1603
1604
1611extern void
1613 val_value_t *val);
1614
1615
1621extern void
1623
1624
1634extern boolean
1636 obj_template_t *chobj);
1637
1638
1647extern getcb_get2_t *
1649 dlq_hdr_t *keyQ);
1650
1651
1662extern boolean
1664 val_value_t *useval,
1665 getcb_get2_lookup_t *lookup);
1666
1667
1678extern boolean
1680 val_value_t *useval,
1681 getcb_get2_t *get2cb);
1682
1683
1694extern boolean
1696 val_value_t *useval,
1697 dlq_hdr_t *srcQ);
1698
1699
1707extern status_t
1709 const xmlChar *buffer);
1710
1711
1717extern void
1719
1720
1730extern val_value_t *
1732 status_t *retres);
1733
1737#ifdef __cplusplus
1738} /* end extern 'C' */
1739#endif
1740
1741#endif /* _H_getcb */
status_t getcb_pre_get2_choices(xml_msg_hdr_t *msg, ses_cb_t *scb, getcb_get2_t *parent_get2cb, obj_template_t *targobj, val_value_t *curval, uint32 choice_cnt, obj_template_t *top_choice, boolean *force_remove, getcb_get2_t **ret_get2cb)
Invoke the get2 callbacks for each of the implied choice-stmt nodes in a subtree or REST resource req...
Definition: getcb.c:9191
void getcb_clean_return_data(getcb_get2_t *get2cb)
Clean the return data in the return_val and return_valQ.
Definition: getcb.c:6864
val_value_t * getcb_find_key(getcb_get2_t *get2cb, obj_template_t *obj)
Find an input keyval in the get2cb keyQ.
Definition: getcb.c:6466
getcb_get2_t * getcb_response_val_to_get2cb(val_value_t *response_val, boolean preserve_data, status_t *res)
Convert a <get-response> value to a get2cb struct.
Definition: getcb.c:7778
void getcb_add_return_key(getcb_get2_t *get2cb, val_value_t *val)
Add a return keyval to a get2cb return_keyQ.
Definition: getcb.c:6441
getcb_get2_getbulk_t * getcb_new_get2_getbulk(void)
Create a new getcb_get2_getbulk struct.
Definition: getcb.c:9067
void getcb_free_get2_getbulk(getcb_get2_getbulk_t *getbulk)
Free a getcb_get2_getbulk struct.
Definition: getcb.c:9091
val_value_t * getcb_get2cb_to_request_val(getcb_get2_t *get2cb, obj_template_t *get_request_obj, boolean preserve_data, xml_msg_hdr_t *msg, status_t *res)
Convert a get2cb struct to a <get-request> value tree.
Definition: getcb.c:6900
void getcb_free_get2cb(getcb_get2_t *get2cb)
Clean and free a malloced GET2 control block.
Definition: getcb.c:6157
val_value_t * getcb_find_return_val2(getcb_get2_t *get2cb, xmlns_id_t obj_nsid, const xmlChar *obj_name)
Find a return val in the get2cb return_valQ use { NSID, NAME } instead of object pointer.
Definition: getcb.c:6341
getcb_walker_status_t(* getcb_get2_walker_fn_t)(getcb_walker_mode_t walker_mode, getcb_get2_t *get2cb, obj_template_t *obj, val_value_t *val, void *cookie)
GET2 CONSUMER FUNCTION.
Definition: getcb.h:725
getcb_get2_select_t * getcb_new_get2_select(const xmlChar *modname, const xmlChar *objname)
Create a new getcb_select_t struct.
Definition: getcb.c:8567
status_t(* getcb_fn2_t)(ses_cb_t *scb, xml_msg_hdr_t *msg, getcb_get2_t *get2cb)
GET2 PRODUCER FUNCTION.
Definition: getcb.h:683
void getcb_add_key(getcb_get2_t *get2cb, val_value_t *val)
Add a keyval to a get2cb keyQ.
Definition: getcb.c:6639
val_value_t * getcb_find_next_return_val(getcb_get2_t *get2cb, val_value_t *curval)
Find the next matching return val in the get2cb return_valQ.
Definition: getcb.c:6404
getcb_get2_lookup_t * getcb_new_get2_lookup(obj_template_t *obj, dlq_hdr_t *keyvalQ)
Create a new getcb_get2_lookup struct.
Definition: getcb.c:8410
void getcb_free_get2_select(getcb_get2_select_t *select_node)
Free a getcb_get2_select struct.
Definition: getcb.c:8597
getcb_keyval_t * getcb_new_keyval(const xmlChar *keyval)
Create a new GET2 keyval holder.
Definition: getcb.c:8273
getcb_get2_t * getcb_request_val_to_get2cb(val_value_t *get_request_val, boolean preserve_data, status_t *res)
Convert a <get-request> value tree into a get2cb struct.
Definition: getcb.c:7315
status_t getcb_add_select(getcb_get2_t *get2cb, const xmlChar *modname, const xmlChar *objname)
Add a select node to a get2cb matchQ.
Definition: getcb.c:6692
boolean getcb_need_get2(obj_template_t *curobj, obj_template_t *reqobj)
check if the node has a get2 callback or in a choice/case subtree that has get2 callback
Definition: getcb.c:8801
val_value_t * getcb_find_key_lvl(getcb_get2_t *get2cb, const xmlChar *modname, const xmlChar *objname, uint32 objlvl)
Find an input keyval in the get2cb keyQ.
Definition: getcb.c:6570
void getcb_clean_get2cb(getcb_get2_t *get2cb, boolean reuse)
Clean a get2 control block.
Definition: getcb.c:6179
getcb_walker_mode_t
get2 walker callback modes
Definition: getcb.h:280
void getcb_clean_return_aioQ(getcb_get2_t *get2cb)
Clean the return data return_aioQ.
Definition: getcb.c:9490
boolean getcb_match_keys_keyQ(obj_template_t *useobj, val_value_t *useval, dlq_hdr_t *srcQ)
Match the requested list entry.
Definition: getcb.c:9750
void getcb_log_walker(const xmlChar *caller, getcb_walker_mode_t walker_mode, const xmlChar *objname, const xmlChar *valname)
Print some logging info for a GET2 walker consumer callback.
Definition: getcb.c:9305
boolean getcb_match_keys_lookup(obj_template_t *useobj, val_value_t *useval, getcb_get2_lookup_t *lookup)
Match the requested list entry.
Definition: getcb.c:9599
void getcb_clean_get2_lookupQ(dlq_hdr_t *lookupQ)
Clean a queue of getcb_get2_lookup_t.
Definition: getcb.c:8481
void getcb_clean_keyvalQ(dlq_hdr_t *que)
Free all the Get2 keyvals from a dlq_hdr.
Definition: getcb.c:8388
status_t getcb_move_response_get2cb(getcb_get2_t *response_get2cb, getcb_get2_t *get2cb)
Move the return fields from the return get2cb to the target get2cb.
Definition: getcb.c:7939
getcb_get2_t * getcb_new_parent_get2cb(obj_template_t *obj, dlq_hdr_t *keyQ)
Create a new get2 control block for the parent Used for XGET operation to fill the list's parent get2...
Definition: getcb.c:9558
void getcb_add_return_get2cb(getcb_get2_t *get2cb, getcb_get2_t *return_get2cb)
Add a return get2cb to a get2cb responseQ Used for get-bulk support.
Definition: getcb.c:7915
getcb_keyval_t * getcb_new_keyval3(const xmlChar *keyval, obj_template_t *keyobj, boolean fixed_value)
Create a new Get2 keyval holder using value string.
Definition: getcb.c:8331
status_t getcb_get2_child_obj_ex(ses_cb_t *scb, xml_msg_hdr_t *msg, val_value_t *parentval, getcb_get2_t *parent_get2cb, obj_template_t *obj, boolean with_defaults, getcb_get2_walker_fn_t walkerfn, void *cookie, getcb_get2_t *force_get2cb, getcb_api_mode_t api_mode)
Process the instances of an object for the object itself and 0 or more nest levels of descendant node...
Definition: getcb.c:8147
void getcb_move_return_keys(getcb_get2_t *get2cb)
Move the return keys to the keyQ replacing the nodes in the keyQ if already there.
Definition: getcb.c:6779
getcb_get2_t * getcb_new_get2cb(void)
Malloc and init a new get2 control block.
Definition: getcb.c:6135
status_t getcb_finish_getbulk_entry(getcb_get2_t *get2cb)
Gather the current response in a getbulk entry and save it in the getcb->getbulkQ; The getcb is ready...
Definition: getcb.c:9130
void getcb_init_get2cb(getcb_get2_t *get2cb)
Init a GET2 control block.
Definition: getcb.c:6107
boolean getcb_match_keys_getcb(obj_template_t *useobj, val_value_t *useval, getcb_get2_t *get2cb)
Match the requested list entry.
Definition: getcb.c:9687
status_t getcb_set_active_case(getcb_get2_t *get2cb, const xmlChar *active_case_modname, const xmlChar *active_case)
Set the active case to the specified object.
Definition: getcb.c:9031
void getcb_clean_return_aio_buff(getcb_get2_t *get2cb)
Clean the return AIO buffer, XML or JSON buffer.
Definition: getcb.c:9849
status_t getcb_add_return_aio_buff(getcb_get2_t *get2cb, const xmlChar *buffer)
Add a return buffer to a get2cb control block and set encoding type.
Definition: getcb.c:9807
status_t getcb_get2_child_obj(ses_cb_t *scb, xml_msg_hdr_t *msg, val_value_t *parentval, getcb_get2_t *parent_get2cb, obj_template_t *obj, boolean with_defaults, getcb_get2_walker_fn_t walkerfn, void *cookie)
Process the instances of an object for the object itself and 0 or more nest levels of descendant node...
Definition: getcb.c:8086
boolean getcb_is_get_exact(getcb_get2_t *get2cb)
Check if the getcb represents a response that is for a get-exact or a getnext.
Definition: getcb.c:9393
val_value_t * getcb_get2cb_to_val(getcb_get2_t *get2cb, status_t *retres)
Convert a GET2 CB to the equivalent val_value_t tree only container and list are supported.
Definition: getcb.c:9883
val_value_t * getcb_find_return_key2(getcb_get2_t *get2cb, xmlns_id_t obj_nsid, const xmlChar *obj_name)
Find a return keyval in the get2cb return_keyQ Use { NSID, NAME } instead of object pointer.
Definition: getcb.c:6752
boolean getcb_get2_allowed(xml_msg_hdr_t *msg, obj_template_t *chobj)
Check if the current node and operation are allowed to use the GET2 callback if there is one; Used to...
Definition: getcb.c:9516
status_t getcb_replace_response_get2cb(getcb_get2_t *response_get2cb, getcb_get2_t *get2cb, boolean replace_mode)
Move the return fields from the return get2cb to the target get2cb Can clean out old data first.
Definition: getcb.c:7962
val_value_t * getcb_find_key_num(getcb_get2_t *get2cb, const xmlChar *modname, const xmlChar *objname, uint32 keynum)
Find an input keyval in the get2cb keyQ.
Definition: getcb.c:6521
void getcb_add_return_val(getcb_get2_t *get2cb, val_value_t *val)
Add a return val to a get2cb return_valQ.
Definition: getcb.c:6281
val_value_t * getcb_find_match(getcb_get2_t *get2cb, obj_template_t *obj)
Find an input keyval in the get2cb matchQ.
Definition: getcb.c:6614
val_value_t * getcb_get2cb_to_response_val(getcb_get2_t *get2cb, obj_template_t *response_obj, boolean preserve_data, status_t *res)
Convert a get2cb struct to a <get-response> value tree.
Definition: getcb.c:7551
getcb_mode_t
get callback retrieval types; only get2 supports getnext
Definition: getcb.h:260
void getcb_add_match(getcb_get2_t *get2cb, val_value_t *val)
Add a match node to a get2cb matchQ.
Definition: getcb.c:6664
void getcb_dump_get2cb(getcb_get2_t *get2cb)
Print the interesting fields in a get2cb.
Definition: getcb.c:8674
boolean getcb_need_get2_ex(obj_template_t *curobj, obj_template_t *reqobj, uint32 *choicecnt, obj_template_t **top_choice)
check if the node has a get2 callback or in a choice/case subtree that has get2 callback
Definition: getcb.c:8834
obj_template_t * getcb_next_requested_child(getcb_get2_t *get2cb, obj_template_t *curchild)
Check if the specified object has any more terminal nodes that need to be returned for a get2 request...
Definition: getcb.c:8984
getcb_walker_status_t
get2 walker callback return status values
Definition: getcb.h:297
status_t(* getcb_fn_t)(ses_cb_t *scb, getcb_mode_t cbmode, const val_value_t *virval, val_value_t *dstval)
GET1 Callback function for agent node get handler.
Definition: getcb.h:657
void getcb_clean_responseQ(getcb_get2_t *get2cb)
Clean the response Q within a get2cb.
Definition: getcb.c:9437
void getcb_undo_move_return_keys(getcb_get2_t *get2cb)
Move back the return keys from the keyQ.
Definition: getcb.c:6836
status_t getcb_handle_acmtest(ses_cb_t *scb, xml_msg_hdr_t *msg, val_nodetest_fn_t testfn, getcb_get2_t *get2cb)
check the access control and testfn callback for a node that would have it skipped because the write_...
Definition: getcb.c:8206
val_value_t * getcb_find_return_val_str(getcb_get2_t *get2cb, xmlns_id_t obj_nsid, const xmlChar *obj_name, const xmlChar *valstr)
Find a return val in the get2cb return_valQ use { NSID, NAME } instead of object pointer.
Definition: getcb.c:6376
val_value_t * getcb_find_return_val(getcb_get2_t *get2cb, obj_template_t *obj)
Find a return val in the get2cb return_valQ.
Definition: getcb.c:6310
void getcb_free_keyval(getcb_keyval_t *keyval)
Free a GET2 keyval.
Definition: getcb.c:8363
val_value_t * getcb_find_key_str(getcb_get2_t *get2cb, const xmlChar *modname, const xmlChar *objname)
Find an input keyval in the get2cb keyQ with a string.
Definition: getcb.c:6492
obj_template_t * getcb_first_requested_child(getcb_get2_t *get2cb, obj_template_t *parent_obj)
Check if the specified object has any terminal nodes that need to be returned for a get2 request.
Definition: getcb.c:8921
status_t getcb_clone_keyQ(dlq_hdr_t *srcQ, dlq_hdr_t *destQ)
Copy all the key val_value_t structs to the other queue.
Definition: getcb.c:9359
getcb_keyval_t * getcb_new_keyval2(val_value_t *keynode, obj_template_t *keyobj, boolean fixed_value)
Create a new Get2 keyval holder using val backptr.
Definition: getcb.c:8302
val_value_t * getcb_find_return_key(getcb_get2_t *get2cb, obj_template_t *obj)
Find a return keyval in the get2cb return_keyQ.
Definition: getcb.c:6726
void getcb_free_get2_lookup(getcb_get2_lookup_t *lookup)
Free a getcb_get2_lookup struct.
Definition: getcb.c:8455
boolean getcb_find_get2_select(getcb_get2_t *get2cb, const xmlChar *modname, const xmlChar *objname)
Find a getcb_get2_select struct.
Definition: getcb.c:8621
void getcb_add_return_aioQ(getcb_get2_t *get2cb, val_value_t *val)
Add a return val to a get2cb return_aioQ.
Definition: getcb.c:9463
getcb_get2_lookup_t * getcb_find_get2_lookup(obj_template_t *obj, dlq_hdr_t *lookupQ)
Find a getcb_get2_lookup struct.
Definition: getcb.c:8515
@ GETCB_NONE
not set
Definition: getcb.h:261
@ GETCB_GETNEXT_VALUE
GETNEXT request.
Definition: getcb.h:263
@ GETCB_GET_VALUE
GET request.
Definition: getcb.h:262
boolean(* val_nodetest_fn_t)(xml_msg_hdr_t *mhdr, ncx_withdefaults_t withdef, boolean realtest, val_value_t *node)
user function callback template to test output of a specified node.
Definition: val_util.h:132
status_t
global error return code
Definition: status_enum.h:210
uint16 xmlns_id_t
integer handle for registered namespaces
Definition: xmlns.h:89
ncx_msg_encoding_t
enumeration for message encoding formats
Definition: ncxtypes.h:647
ncx_nmda_ds_t
internal enumerations for standard NMDA datastores
Definition: ncxtypes.h:1631
ncx_nmda_origin_t
internal enumerations for standard NMDA origins
Definition: ncxtypes.h:1642
Contains NCX constants.
Data Object Support.
NETCONF protocol remote procedure call common definitions.
NETCONF Session Common definitions module.
global error status code enumerations
GET2 getbulk struct This is only used for YANG list objects to produce N getnext entries at a time.
Definition: getcb.h:346
dlq_hdr_t return_keyQ
Q of malloced val_value_t.
Definition: getcb.h:350
dlq_hdr_t return_valQ
Q of malloced val_value_t.
Definition: getcb.h:353
dlq_hdr_t qhdr
will be added to a queue
Definition: getcb.h:347
GET2 lookup struct.
Definition: getcb.h:320
obj_template_t * obj
request_target_obj to get
Definition: getcb.h:322
boolean full_lookup
T: all keys present;.
Definition: getcb.h:324
dlq_hdr_t qhdr
in case added to a queue
Definition: getcb.h:321
dlq_hdr_t keyvalQ
Q of getcb_keyval_t.
Definition: getcb.h:323
GET2 select struct.
Definition: getcb.h:329
dlq_hdr_t qhdr
will be added to a queue
Definition: getcb.h:330
const xmlChar * objname
object name to select
Definition: getcb.h:332
const xmlChar * modname
module name to select
Definition: getcb.h:331
GET2 control block.
Definition: getcb.h:358
xmlChar * txid_str
transaction ID string
Definition: getcb.h:364
boolean keys_only
keys-only: TRUE if only the key leafs are desired from list objects; FALSE if normal retrieval
Definition: getcb.h:431
obj_template_t * obj
object template containing this callback
Definition: getcb.h:367
getcb_mode_t cbmode
reason for the callback (get or getnext)
Definition: getcb.h:402
dlq_hdr_t responseQ
if this is a request that causes multiple responses then the responseQ will have each response get2cb
Definition: getcb.h:542
dlq_hdr_t return_keyQ
Q of malloced val_value_t.
Definition: getcb.h:524
boolean oper_data
TRUE to get operational data.
Definition: getcb.h:415
xmlChar * active_case_modname
set by a choice test_mode callback to return the name of the active case; If the active_case_modname ...
Definition: getcb.h:520
boolean wrote_some_lists
If TRUE then Last list failed BUT some of the entries were written successfully.
Definition: getcb.h:556
dlq_hdr_t return_valQ
Q of malloced val_value_t.
Definition: getcb.h:527
ncx_nmda_ds_t nmda_ds
save NMDA datastore for GET operational
Definition: getcb.h:573
boolean force_array_obj
force JSON array output
Definition: getcb.h:495
void * user_data_ref
User Data Reference Can be used by GET2 callbacks to store and reference a pointer during the GET2 ca...
Definition: getcb.h:615
boolean isfirst_nokey
flag to track JSON state
Definition: getcb.h:481
boolean pre_process
YPW-2273: pre_process_mode is TRUE if Subtree filter is doing Pre process Selection nodes to see if t...
Definition: getcb.h:634
boolean with_defaults
with_defaults: TRUE if default nodes should be returned this is needed for operational data because t...
Definition: getcb.h:443
boolean last_sibling
flag to track JSON state
Definition: getcb.h:478
boolean first_llsibling
leaf-list siblings
Definition: getcb.h:482
boolean isfirst
also used for JSON subtree proc
Definition: getcb.h:487
xmlChar * aio_return_buff
AIO XML or JSON malloced buffer from callback to use.
Definition: getcb.h:586
boolean sm_mpid_malloced
The MPID will be malloced on the SIL-SA side (TRUE) otherwise set to FALSE if the sm_mpid is a backpt...
Definition: getcb.h:598
uint32 max_entries
max instances to get 0 for all entries, 1 .
Definition: getcb.h:407
val_nodetest_fn_t testfn
value node test function (may be obsolete for get2)
Definition: getcb.h:370
dlq_hdr_t qhdr
queue header
Definition: getcb.h:359
val_value_t * parent_val
save parent backtrs for when-stmt processing of GET2 data
Definition: getcb.h:559
struct getcb_get2_t_ * parent_cb
backptr to parent CB
Definition: getcb.h:561
ncx_msg_encoding_t aio_encoding
In AIO GET2 callback is used with JSON/XML buffers the encoding will represent corresponding encoding...
Definition: getcb.h:581
boolean aio_done
AIO processing is completed.
Definition: getcb.h:488
uint32 user_data_index
User Data Index Can be used by GET2 callbacks to store and reference an index during the GET2 callbac...
Definition: getcb.h:627
boolean match_test_done
content-match done flag ignored unless the matchQ is non-empty If TRUE.
Definition: getcb.h:550
xmlChar * active_case
name of the active case
Definition: getcb.h:521
ses_cb_t * scb
YPW-2375: session control block for SIL access (available since 23.10-19), used by SIL GET2 callbacks...
Definition: getcb.h:640
uint32 max_levels
0 for all levels, 1 .
Definition: getcb.h:412
boolean islast
Used only for AIO RESTCONF processing.
Definition: getcb.h:486
dlq_hdr_t return_aioQ
Q of malloced val_value_t.
Definition: getcb.h:570
dlq_hdr_t selectQ
Q of malloced getcb_get2_select_t; 1 entry for each child select node of the object in this get2cb th...
Definition: getcb.h:399
boolean expand_varexpr
variable expressions: TRUE if a varexpr node should be expanded; FALSE if printed as an expression
Definition: getcb.h:426
dlq_hdr_t matchQ
Q of malloced val_value_t; 1 entry for each content-match leaf in the subtree or XPath filter; these ...
Definition: getcb.h:384
boolean more_data
set by the callback function if there are more instances that follow the specified instance; this is ...
Definition: getcb.h:508
dlq_hdr_t keyQ
Q of malloced val_value_t; 1 entry for each key leaf includes the ancestor keys and keys for the curr...
Definition: getcb.h:378
boolean force_lastsib_value
force JSON state
Definition: getcb.h:494
boolean select_only
select: TRUE if only the selectQ child nodes are desired from the parent for this callback; FALSE if ...
Definition: getcb.h:436
boolean finish_list
Used for CBOR processing to know if the special finish-list callback mode is needed.
Definition: getcb.h:500
ncx_sm_mpid_t * sm_mpid
If schema-mount is in use then the MPID is set for GET2 callbacks that have a ancestor that is a root...
Definition: getcb.h:593
boolean last_llsibling
leaf-list siblings
Definition: getcb.h:483
val_value_t return_val
if just 1 instance is returned, then the return_val will be used; if the btyp is set to something oth...
Definition: getcb.h:537
boolean first_sibling
first sibling done
Definition: getcb.h:492
getcb_api_mode_t api_mode
api_mode: consumer API callback mode
Definition: getcb.h:461
boolean acmtest_result
acmtest result used for NACM check
Definition: getcb.h:475
boolean force_lastsibling
force JSON state
Definition: getcb.h:493
boolean with_origin
get-request with-origin flag
Definition: getcb.h:464
val_value_t * start_add_key
first key val node that was moved from the return_keyQ to the keyQ for nested nodes to process; needs...
Definition: getcb.h:472
dlq_hdr_t getbulkQ
set by the callback function if this is a list callback and multiple entries are returned; this is a ...
Definition: getcb.h:514
ncx_nmda_origin_t nmda_origin
caller will set the return nmda_origin
Definition: getcb.h:576
boolean first_child
Used for JSON subtree proccessing.
Definition: getcb.h:491
boolean config_data
TBD: TRUE to get configuration data not supported yet! All config must be in the cfg->root val_value_...
Definition: getcb.h:421
Key value holder, temp Q of ordered key leaf values used while parsing a path to store the keys until...
Definition: getcb.h:310
xmlChar * value
malloced, if set by agt_yangapi
Definition: getcb.h:312
obj_template_t * objnode
if set by agt_tree
Definition: getcb.h:314
val_value_t * valnode
if set by agt_tree
Definition: getcb.h:313
dlq_hdr_t qhdr
queue header
Definition: getcb.h:311
boolean fixed_value
if partial keys
Definition: getcb.h:315
Moint Point Instance This struct lives in a val_value_t.val_extra struct.
Definition: ncxtypes.h:1815
One YANG data-def-stmt.
Definition: obj.h:1230
Session Control Block.
Definition: ses.h:573
one value to match one type
Definition: val.h:912
Common Encoding Message Header No longer XML specific!! Used by JSON and CBOR parsing as well!...
Definition: xml_msg.h:404
Value Node Basic Support.
Value Node Utilities.