Example #1
0
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);
}
Example #2
0
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;
}
Example #3
0
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;
}
Example #4
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;
}
Example #5
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;
    }
}
Example #6
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;
    }
}
Example #7
0
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);
}
Example #8
0
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);
}
Example #9
0
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;
}