T_KRHDITable *kr_hdi_table_construct(T_KRParamHDI *ptParamHDI, T_KRModule *ptModule) { T_KRHDITable *ptHdiTable = kr_calloc(sizeof(T_KRHDITable)); if (ptHdiTable == NULL) { KR_LOG(KR_LOGERROR, "kr_calloc ptHdiTable failed!"); return NULL; } ptHdiTable->ptParamHDI = ptParamHDI; ptHdiTable->lHDICnt = ptParamHDI->lHDIDefCnt; ptHdiTable->ptHDITable = \ kr_hashtable_new_full(kr_long_hash, kr_long_equal, \ NULL, (KRDestroyNotify )kr_hdi_destruct); int i = 0; T_KRHDI *ptHDI = NULL; for (i=0; i<ptParamHDI->lHDIDefCnt; ++i) { ptHDI = kr_hdi_construct(&ptParamHDI->stParamHDIDef[i], ptModule); if (ptHDI == NULL) { KR_LOG(KR_LOGERROR, "kr_hdi_construct [%d] failed!", i); kr_hashtable_destroy(ptHdiTable->ptHDITable); kr_free(ptHdiTable); return NULL; } kr_hashtable_insert(ptHdiTable->ptHDITable, &ptHDI->lHDIId, ptHDI); } ptHdiTable->tConstructTime = ptParamHDI->tLastLoadTime; return ptHdiTable; }
T_KRHDITable *kr_hdi_table_construct(T_KRShmHDI *shm_hdi, T_KRModule *datamodule) { T_KRHDITable *krhditable = kr_calloc(sizeof(T_KRHDITable)); if (krhditable == NULL) { KR_LOG(KR_LOGERROR, "kr_calloc krhditable failed!"); return NULL; } krhditable->ptShmHDIs = shm_hdi; krhditable->lHDICnt = shm_hdi->lHDIDefCnt; krhditable->ptHDITable = \ kr_hashtable_new_full(kr_long_hash, kr_long_equal, \ NULL, (KRDestroyNotify )kr_hdi_destruct); int i = 0; T_KRHDI *krhdi = NULL; for (i=0; i<shm_hdi->lHDIDefCnt; ++i) { krhdi = kr_hdi_construct(&shm_hdi->stShmHDIDef[i], datamodule); if (krhdi == NULL) { KR_LOG(KR_LOGERROR, "kr_hdi_construct [%d] failed!", i); kr_hashtable_destroy(krhditable->ptHDITable); kr_free(krhditable); return NULL; } kr_hashtable_insert(krhditable->ptHDITable, &krhdi->lHDIId, krhdi); } krhditable->tConstructTime = shm_hdi->tLastLoadTime; return krhditable; }