0001 
0002 
0003 
0004 
0005 
0006 
0007 
0008 
0009 
0010 
0011 
0012 
0013 
0014 
0015 
0016 
0017 
0018 
0019 
0020 
0021 
0022 
0023 
0024 
0025 
0026 
0027 
0028 
0029 
0030 
0031 
0032 
0033 
0034 #ifndef TYPED_BUF_H
0035 #define TYPED_BUF_H
0036 
0037 #ifdef  __cplusplus
0038 extern "C" {
0039 #endif
0040 
0041 
0042 #include <atmi_int.h> /* include ATMI internal structures       */
0043 #include <multibuf.h> /**< hash handling of pointers            */
0044 
0045 
0046 
0047 #define BUF_TYPE_MIN        0 
0048 #define BUF_TYPE_UBF        0
0049 #define BUF_TYPE_INIT       2 
0050 #define BUF_TYPE_NULL       3
0051 #define BUF_TYPE_STRING     4
0052 #define BUF_TYPE_CARRAY     5 
0053 #define BUF_TYPE_JSON       6
0054 #define BUF_TYPE_VIEW       7
0055 #define BUF_TYPE_MAX        7 
0056 
0057 #define BUF_TYPE_UBF_STR        "UBF"
0058 #define BUF_TYPE_INIT_STR       "INIT"
0059 #define BUF_TYPE_STRING_STR     "STRING"
0060 #define BUF_TYPE_CARRAY_STR     "CARRAY"
0061 #define BUF_TYPE_NULL_STR       "NULL"
0062 #define BUF_TYPE_JSON_STR       "JSON"
0063 #define BUF_TYPE_VIEW_STR       "VIEW"
0064 
0065 
0066 
0067 
0068 #define BUF_CVT_INCOMING_JSON2UBF_STR           "JSON2UBF"
0069 #define BUF_CVT_INCOMING_UBF2JSON_STR           "UBF2JSON"
0070 #define BUF_CVT_INCOMING_JSON2VIEW_STR          "JSON2VIEW"
0071 #define BUF_CVT_INCOMING_VIEW2JSON_STR          "VIEW2JSON"
0072     
0073 
0074 
0075 
0076 #define BUF_IS_TYPEID_VALID(X) (BUF_TYPE_MIN<=X && X <= BUF_TYPE_MAX)
0077 
0078 
0079 
0080 
0081 
0082 
0083 typedef struct
0084 {
0085     ndrx_mbuf_ptrs_t *ptrs_hash;    
0086     char *mainbuf;                  
0087 } ndrx_buf_free_lists_t;
0088 
0089 
0090 extern NDRX_API buffer_obj_t *ndrx_G_buffers;
0091 extern NDRX_API typed_buffer_descr_t G_buf_descr[];
0092 
0093 
0094 
0095 extern NDRX_API char * ndrx_tprealloc (char *buf, long len);
0096 extern NDRX_API char * ndrx_tpalloc (typed_buffer_descr_t *known_type,
0097                     char *type, char *subtype, long len);
0098 extern NDRX_API buffer_obj_t * ndrx_find_buffer(char *ptr);
0099 extern NDRX_API typed_buffer_descr_t * ndrx_get_buffer_descr(char *type, 
0100         char *subtype);
0101 
0102 extern NDRX_API int ndrx_buffer_list(ndrx_growlist_t *list);
0103 
0104 
0105 
0106 
0107 extern NDRX_API int UBF_prepare_outgoing (typed_buffer_descr_t *descr, 
0108         char *idata, long ilen, char *obuf, long *olen, long flags);
0109 extern NDRX_API int UBF_prepare_incoming (typed_buffer_descr_t *descr, 
0110         char *rcv_data, long rcv_len, char **odata, long *olen, long flags);
0111 extern NDRX_API char * UBF_tprealloc(typed_buffer_descr_t *descr, char *cur_ptr, long len);
0112 extern NDRX_API char    * UBF_tpalloc (typed_buffer_descr_t *descr, char *subtype, long *len);
0113 extern NDRX_API void UBF_tpfree(typed_buffer_descr_t *descr, char *buf);
0114 extern NDRX_API int UBF_test(typed_buffer_descr_t *descr, char *buf, BFLDLEN len, char *expr);
0115     
0116 
0117 extern NDRX_API char * TPINIT_tpalloc (typed_buffer_descr_t *descr, char *subtype, long *len);
0118 extern NDRX_API void TPINIT_tpfree(typed_buffer_descr_t *descr, char *buf);
0119 
0120 extern NDRX_API char * TPNULL_tpalloc (typed_buffer_descr_t *descr, char *subtype, long *len);
0121 extern NDRX_API void TPNULL_tpfree(typed_buffer_descr_t *descr, char *buf);
0122 extern NDRX_API int TPNULL_prepare_outgoing (typed_buffer_descr_t *descr, char *idata, long ilen, 
0123                     char *obuf, long *olen, long flags);
0124 
0125 extern NDRX_API int TPNULL_prepare_incoming (typed_buffer_descr_t *descr, char *rcv_data, 
0126                         long rcv_len, char **odata, long *olen, long flags);
0127 
0128 
0129 extern NDRX_API int typed_xcvt(buffer_obj_t **buffer, long xcvtflags, int is_reverse);
0130 
0131 extern NDRX_API int typed_xcvt_json2ubf(buffer_obj_t **buffer);
0132 extern NDRX_API int typed_xcvt_ubf2json(buffer_obj_t **buffer);
0133 
0134 extern NDRX_API int typed_xcvt_json2view(buffer_obj_t **buffer);
0135 extern NDRX_API int typed_xcvt_view2json(buffer_obj_t **buffer, long flags);
0136 extern NDRX_API void ndrx_tpfree_inner (char *buf, buffer_obj_t *known_buffer, ndrx_buf_free_lists_t *flist);
0137 
0138     
0139 #ifdef  __cplusplus
0140 }
0141 #endif
0142 
0143 #endif  
0144 
0145