net_util.h 8.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  1. #ifndef __NET_UTIL_H__
  2. #define __NET_UTIL_H__
  3. #ifdef NET_UTIL_IMPLEMENTATION
  4. #define NET_UTIL_EXTERN
  5. #else
  6. #define NET_UTIL_EXTERN extern
  7. #endif
  8. #define MAX_TRANS_SIZE (1024*8) //16KB
  9. #define NET_URL_MAX_SIZE (256)
  10. typedef struct NetMemCtrlBlock_t_
  11. {
  12. GL_MEMPOOL_t MemPool; /*<! memory pool handle*/
  13. UINT8* pMemAdd; /*<! memory pool start address*/
  14. UINT32 dLock; /*<! memory pool lock, for monitor memory use flow*/
  15. } NetMemCtrlBlock_t;
  16. #define NETUTIL_IF_ERROR_FIND_LIST -7
  17. #define NETUTIL_IF_WARNING_ARRAY_OVERFLOW -6
  18. #define NETUTIL_IF_INITIALIZE_FAIL -5
  19. #define NETUTIL_IF_ERROR_COMBIN_LISTNODE -4
  20. #define NETUTIL_IF_INVALID_PARAMETER -3
  21. #define NETUTIL_IF_ERROR_SWITCH_NATIVE_UTF8 -2
  22. #define NETUTIL_IF_MEMORYALLOCFAIL -1
  23. #define NETUTIL_IF_SUCCESSFUL 0
  24. #define NETUTIL_IF_WARNING_NOT_COFIG_FUNC 1
  25. #define NETUTIL_IF_WARNING_DATA_NOT_READY 2
  26. #if 0
  27. typedef struct chain_head
  28. {
  29. UINT32 dIdenty;
  30. struct chain_head *pNext;
  31. struct chain_head *pPrev;
  32. } chain_head;
  33. #define CHAIN_HEAD(name) chain_head name = INIT_LIST_HEAD(name)
  34. #define INIT_CHAIN_HEAD(ptr) do{ \
  35. (ptr)->next = (ptr); (ptr)->prev = (ptr); \
  36. }while(0)
  37. #define chain_entry(ptr, type, member) \
  38. container_of(ptr, type, member)
  39. #define container_of(ptr, type, member) ({ \
  40. const typeof(((type*)0->member) *__mptr = (ptr); \
  41. (type *)((char *)__mptr) - offsetof(type, member));})
  42. #define offsetof(TYPE, MEMBER) ((size_t)&(TYPE *)0->MEMBER)
  43. #endif
  44. #define PARAM_MATCH_SUCCESS 1
  45. #define PARAM_MATCH_FAIL 0
  46. typedef int (*ListObjFreeFunction)(void *pMember, void *pParam);
  47. typedef int (*ListMatchFunction)(void *pMember, void *pParam); //if matched return 1,else return 0
  48. typedef int (*ListInsertCondFunc)(void *pMember, void *pInsertMember); //if satisfy return 1,others return 0
  49. typedef int (*MemberChkAttrFunc)(void *pMember); //if attribute satisfy return 1,else return 0
  50. typedef int (*MemberBuFunc)(void *pMember, void *pParam, void **ppMember); //backup member need attribute
  51. typedef int (*SortCompareFunc)(void *pMember1, void *pMember2); //if member1 > member2 return 1,else if pMember1 < pMember2 return -1, else return 0
  52. typedef int (*MemberChkRepeat)(void *pMember, void *pParam); //if attribute of pmember satify pParam return 1,others return 0;
  53. typedef struct ListCfg_t_
  54. {
  55. ListMatchFunction pfMatchFunc; //match funtion
  56. ListInsertCondFunc pfCondFunc; //instert condition,be used for insert obj to list.
  57. MemberChkAttrFunc pfChkAttrFunc; //attribute check funtion, be used for check some member whether marked.
  58. MemberBuFunc pfBuFunc; //backup member function, be used for backup be copyed obj.
  59. SortCompareFunc *pfCompFunc; //compare function,
  60. MemberChkRepeat pfChkReFunc; //repeat check function.
  61. ListObjFreeFunction pfMemFreeFunc; //memory Free Func,
  62. } ListCfg_t;
  63. typedef struct ListHead_struct ListHead_t;
  64. struct ListHead_struct
  65. {
  66. ListHead_t *pNext, *pPrev;
  67. };
  68. typedef struct DLink_st DLink;
  69. NET_UTIL_EXTERN void Net_Util_MemFree(NetMemCtrlBlock_t* pMemCB,void * pAddr);
  70. NET_UTIL_EXTERN void *Net_Util_MemCalloc(NetMemCtrlBlock_t* pMemCB,UINT32 dSize);
  71. NET_UTIL_EXTERN void *Net_Util_MemAlloc(NetMemCtrlBlock_t* pMemCB,UINT32 dSize);
  72. NET_UTIL_EXTERN void *Net_Util_MemRealloc(NetMemCtrlBlock_t* pMemCB,void *pAddr,UINT32 dSize);
  73. NET_UTIL_EXTERN INT32 Net_Util_MemInitialize(NetMemCtrlBlock_t* pMemCB, char *pszName, UINT32 dMEMPoolSize);
  74. NET_UTIL_EXTERN void Net_Util_MemFinalize(NetMemCtrlBlock_t* pMemCB);
  75. NET_UTIL_EXTERN INT32 Net_Util_Native2Utf8(char *pSrcStr, char *pDestStr, UINT32 dDstBuflen, int sdEncoding);
  76. NET_UTIL_EXTERN INT32 Net_Util_ConvertURLText(const char* pszScr, char* pszDes);
  77. NET_UTIL_EXTERN DLink *Net_Util_CreateList(ListCfg_t *pfCfg);
  78. NET_UTIL_EXTERN INT32 Net_Util_CheckDListInit(DLink *dl);
  79. NET_UTIL_EXTERN ListHead_t *Net_Util_GetDListHead(DLink *dl);
  80. NET_UTIL_EXTERN INT32 Net_Util_CheckMemberExist(DLink *dl, void *pParam, UINT32 *pdExist);
  81. NET_UTIL_EXTERN INT32 Net_Util_GetListMemberCnt(DLink *dl, UINT32 *pdCnt);
  82. NET_UTIL_EXTERN INT32 Net_Util_AddObj2ListHead(void *pMember, DLink *dl);
  83. NET_UTIL_EXTERN INT32 Net_Util_AddObj2ListTail(void *pMember, DLink *dl);
  84. NET_UTIL_EXTERN INT32 Net_Util_InsertObj2ListWithRepeatDetach(void *pMember, DLink *dl);
  85. NET_UTIL_EXTERN INT32 Net_Util_InsertObj2AscendSortedList(void *pMember, DLink *dl);
  86. NET_UTIL_EXTERN INT32 Net_Util_InsertObj2DescendSortedList(void *pMember, DLink *dl);
  87. NET_UTIL_EXTERN INT32 Net_Util_InsertObj2AscendSortedListWithRepeatDetach(void *pMember, DLink *dl);
  88. NET_UTIL_EXTERN INT32 Net_Util_InsertObj2DescendSortedListWithRepeatDetach(void *pMember, DLink *dl);
  89. NET_UTIL_EXTERN INT32 Net_Util_InsertObj2PosBefore(void *pMember, ListHead_t *pPosition);
  90. NET_UTIL_EXTERN INT32 Net_Util_InsertObj2PosAfter(void *pMember, ListHead_t *pPosition, ListHead_t *pHead);
  91. NET_UTIL_EXTERN INT32 Net_Util_InsertObj2CondBefore(DLink *dl, void *pInsertMember);
  92. NET_UTIL_EXTERN INT32 Net_Util_InsertObj2CondAfter(DLink *dl, void *pInsertMember);
  93. NET_UTIL_EXTERN INT32 Net_Util_InsertObj2ObjBefore(DLink *dl, void *pInsertMember, void *pParam);
  94. NET_UTIL_EXTERN INT32 Net_Util_InsertObj2ObjAfter(DLink * dl, void * pInsertMember, void * pParam);
  95. NET_UTIL_EXTERN void *Net_Util_GetMemberById(DLink *dl, void *pParam);
  96. NET_UTIL_EXTERN void *Net_Util_GetMemberByOffset(DLink *dl, UINT32 dOffset);
  97. NET_UTIL_EXTERN ListHead_t *Net_Util_GetMemberPos(DLink *dl, void *pMember);
  98. NET_UTIL_EXTERN INT32 Net_Util_GetMemberOffset(DLink *dl, void *pMember, UINT32 *pdOffset);
  99. NET_UTIL_EXTERN void *Net_Util_GetMemberByPos(DLink *dl, ListHead_t *pPosition);
  100. NET_UTIL_EXTERN ListHead_t *Net_Util_GetPosById(DLink *dl, void *pParam);
  101. NET_UTIL_EXTERN void *Net_Util_Get1stMember(DLink *dl);
  102. NET_UTIL_EXTERN DLink * Net_Util_SplitList(DLink *dl, ListHead_t *pPos);
  103. NET_UTIL_EXTERN INT32 Net_Util_MoveNode2ListHead(DLink *dl, void *pMember);
  104. NET_UTIL_EXTERN INT32 Net_Util_MoveNode2ListTail(DLink *dl, void *pMember);
  105. NET_UTIL_EXTERN INT32 Net_Util_RemoveNodeByOffset(DLink *dl, UINT32 dOffset, void *pParam);
  106. NET_UTIL_EXTERN INT32 Net_Util_Remove1stNode(DLink *dl, void *pParam);
  107. NET_UTIL_EXTERN INT32 Net_Util_RemoveTailNode(DLink *dl, void *pParam);
  108. NET_UTIL_EXTERN INT32 Net_Util_RemoveNodeByPos(DLink *dl, ListHead_t *pPosition, void *pParam);
  109. NET_UTIL_EXTERN INT32 Net_Util_RemoveObjFromList(DLink*dl, void *pId, void *pParam);
  110. NET_UTIL_EXTERN INT32 Net_Util_Remove1stObjFromListByCond(DLink *dl, void *pParam);
  111. NET_UTIL_EXTERN INT32 Net_Util_RemoveAllObjsFromList(DLink *dl, void *pParam);
  112. NET_UTIL_EXTERN INT32 Net_Util_RemoveObjsFromListByCond(DLink *dl, void *pParam);
  113. NET_UTIL_EXTERN INT32 Net_Util_DestroyList(DLink *dl, void *pParam);
  114. NET_UTIL_EXTERN INT32 Net_Util_BackUpList(DLink *pListA, DLink *pListB, void *pParam);
  115. NET_UTIL_EXTERN INT32 Net_Util_BackUpListByCond(DLink *pListA, DLink *pListB, void *pParam);
  116. NET_UTIL_EXTERN INT32 Net_Util_AddList2List(DLink *pSrcList, DLink *pDesList, void *pParam);
  117. NET_UTIL_EXTERN INT32 Net_Util_AddList2AscendSortedList(DLink *pSrcList, DLink *pDesList, void *pParam);
  118. NET_UTIL_EXTERN INT32 Net_Util_AddList2DescendSortedList(DLink *pSrcList, DLink *pDesList, void *pParam);
  119. NET_UTIL_EXTERN INT32 Net_Util_AddList2ListByCond(DLink *pSrcList, DLink *pDesList, void *pParam);
  120. NET_UTIL_EXTERN INT32 Net_Util_AddList2AscendSortedListWitchCondDetach(DLink * pSrcList, DLink * pDesList, void *pParam);
  121. NET_UTIL_EXTERN INT32 Net_Util_AddList2DescendSortedListWitchCondDetach(DLink * pSrcList, DLink * pDesList, void *pParam);
  122. NET_UTIL_EXTERN INT32 Net_Util_AddList2ListWithEqualDetach(DLink * pSrcList, DLink * pDesList, void *pParam);
  123. NET_UTIL_EXTERN INT32 Net_Util_AddList2ListWithEqualAndCondDetach(DLink * pSrcList, DLink * pDesList, void *pParam);
  124. NET_UTIL_EXTERN INT32 Net_Util_AddList2AscendSortedListWithEqualAndCondDetach(DLink * pSrcList, DLink * pDesList, void *pParam);
  125. NET_UTIL_EXTERN INT32 Net_Util_AddList2DescendSortedListWithEqualAndCondDetach(DLink * pSrcList, DLink * pDesList, void *pParam);
  126. NET_UTIL_EXTERN void *Net_Util_RandPlayMember(DLink *dl);
  127. NET_UTIL_EXTERN INT32 Net_Util_SortListByDescend(DLink *dl);
  128. NET_UTIL_EXTERN INT32 Net_Util_SortListByAscend(DLink *dl);
  129. //NET_UTIL_EXTERN INT32 Net_Util_DestroyBackupList(ListHead_t *pHead);
  130. NET_UTIL_EXTERN INT32 Net_Util_ReverseList(DLink *dl);
  131. #endif