void kr_drop_db(T_KRDB *krdb) { kr_list_foreach(krdb->pTableList, (KRForEachFunc)kr_drop_table, krdb); kr_list_destroy(krdb->pTableList); kr_list_foreach(krdb->pIndexList, (KRForEachFunc)kr_drop_db_index, krdb); kr_list_destroy(krdb->pIndexList); kr_free(krdb); }
cJSON *kr_context_dump_json(T_KRContext *ptContext) { cJSON *alert = cJSON_CreateObject(); /*add group info*/ T_KRGroup *krgroup = ptContext->ptFlow->ptRoutedGroup; cJSON_AddNumberToObject(alert, "groupid", krgroup->lGroupId); /*add current record info*/ cJSON *currec = cJSON_CreateObject(); _set_cjson_record(ptContext->ptCurrRec, currec); cJSON_AddItemToObject(alert, "currec", currec); /*add rules info*/ cJSON *rules = cJSON_CreateArray(); kr_list_foreach(krgroup->ptRuleList->ptRuleList, (KRForEachFunc )_add_rule, rules); cJSON_AddItemToObject(alert, "rules", rules); /*add dataitems info*/ cJSON *datas = cJSON_CreateObject(); T_KRHashTable *ptSdiTable = ptContext->ptData->ptSdiTable->ptSDITable; _add_sdis_to_data(ptSdiTable, datas); T_KRHashTable *ptDdiTable = ptContext->ptData->ptDdiTable->ptDDITable; _add_ddis_to_data(ptDdiTable, datas); T_KRHashTable *ptHdiTable = ptContext->ptData->ptHdiTable->ptHDITable; _add_hdis_to_data(ptHdiTable, datas); cJSON_AddItemToObject(alert, "datas", datas); return alert; }
int main(int argc,char *argv[]) { int i = 0; T_KRList *ptList = kr_list_new(); kr_list_set_compare(ptList, (KRCompareDataFunc )record_compare); srandom((unsigned int)time(NULL)); for (i=0; i<10; i++) { gstRecord[i].i=random()%9; gstRecord[i].d = i; snprintf(gstRecord[i].s, 20, "record_%d", i); printf("kr_list_add_sorted[%d] [%d]\n", i, gstRecord[i].i); //kr_list_add_tail(ptList, &gstRecord[i]); kr_list_add_sorted(ptList, &gstRecord[i], NULL); } kr_list_foreach(ptList, print_record, NULL); T_KRListNode *ptNode = kr_list_search(ptList, &gstRecord[7]); if (ptNode != NULL) { print_record(kr_list_value(ptNode), NULL); } kr_list_destroy(ptList); return 0; }
int kr_group_func(T_KRGroup *krgroup, T_KRContext *krcontext) { /*add alert info*/ cJSON *alert = cJSON_CreateObject(); cJSON_AddNumberToObject(alert, "groupid", krgroup->lGroupId); /*add current record info*/ cJSON *currec = cJSON_CreateObject(); _set_cjson_record(krcontext->ptCurrRec, currec); cJSON_AddItemToObject(alert, "currec", currec); /*add rules info*/ cJSON *rules = cJSON_CreateArray(); kr_list_foreach(krgroup->ptRuleList->ptRuleList, (KRForEachFunc )_add_rule, rules); cJSON_AddItemToObject(alert, "rules", rules); /*add dataitems info*/ cJSON *datas = cJSON_CreateObject(); T_KRHashTable *sditable = krcontext->ptDym->sditable->ptSDITable; _add_sdis_to_data(sditable, datas); T_KRHashTable *dditable = krcontext->ptDym->dditable->ptDDITable; _add_ddis_to_data(dditable, datas); T_KRHashTable *hditable = krcontext->ptDym->hditable->ptHDITable; _add_hdis_to_data(hditable, datas); cJSON_AddItemToObject(alert, "datas", datas); krcontext->pcaResp = cJSON_PrintUnformatted(alert); cJSON_Delete(alert); /*Important: You need kr_free Response*/ printf("response: %s\n", krcontext->pcaResp); KR_LOG(KR_LOGDEBUG, "response : %s ", krcontext->pcaResp); return 0; }
void kr_record_delete(T_KRRecord *ptRecord) { T_KRTable *ptTable = ptRecord->ptTable; /*first:rebuild all hash-indexes of this table with delete*/ kr_list_foreach(ptTable->pIndexTableList, \ (KRForEachFunc )kr_rebuild_index_del, ptRecord); /*secord:decrease table records number*/ if (--ptTable->uiRecordNum < 0) { ptTable->uiRecordNum = 0; } }
void kr_record_insert(T_KRRecord *ptRecord) { T_KRTable *ptTable = ptRecord->ptTable; /*first:rebuild all hash-indexes of this table with insert*/ kr_list_foreach(ptTable->pIndexTableList, \ (KRForEachFunc )kr_rebuild_index_ins, ptRecord); /*secord:increase table records number*/ if (++ptTable->uiRecordNum > ptTable->lKeepValue) { ptTable->uiRecordNum = ptTable->lKeepValue; } }
void kr_delete_record(T_KRRecord *krrecord, T_KRTable *krtable) { /*first:rebuild all hash-indexes delete*/ kr_list_foreach(krtable->pIndexList, \ (KRForEachFunc )kr_rebuild_index_del, krrecord); /*secord:decrease table records number*/ if (--krtable->uiRecordNum < 0) { krtable->uiRecordNum = 0; } /*third:mmap file need sync*/ if (krtable->caMMapFile[0] != '\0') kr_db_mmap_sync(krtable); }
void kr_drop_table(T_KRTable *krtable, T_KRDB *krdb) { if (krtable->caMMapFile[0] == '\0') { kr_free(krtable->pRecordBuff); } else { kr_db_unmmap_table(krtable); } kr_list_remove(krdb->pTableList, krtable); kr_list_foreach(krtable->pIndexList, \ (KRForEachFunc )kr_drop_table_index, krtable); kr_list_destroy(krtable->pIndexList); kr_free(krtable->ptFieldDef); kr_free(krtable); }
int kr_insert_record(T_KRRecord *krrecord, T_KRTable *krtable) { /*first:rebuild all hash-indexes insert*/ kr_list_foreach(krtable->pIndexList, \ (KRForEachFunc )kr_rebuild_index_ins, krrecord); /*secord:increase table records number*/ if (++krtable->uiRecordNum > krtable->lSizeKeepValue) { krtable->uiRecordNum = krtable->lSizeKeepValue; } krtable->uiRecordLoc = (++krtable->uiRecordLoc) % krtable->lSizeKeepValue; /*third:mmap file need sync*/ if (krtable->caMMapFile[0] != '\0') kr_db_mmap_sync(krtable); return 0; }