Esempio n. 1
0
void kr_index_table_drop(T_KRIndexTable *ptIndexTable)
{
    T_KRTable *ptTable = ptIndexTable->ptTable;
    T_KRIndex *ptIndex = ptIndexTable->ptIndex;

    kr_list_remove(ptIndex->pIndexTableList, ptIndexTable);
    kr_list_remove(ptTable->pIndexTableList, ptIndexTable);

    kr_free(ptIndexTable);
}
Esempio n. 2
0
int kr_coordi_handle_clioff(T_KREventLoop *el, int fd, T_KRMessage *krmsg)
{
    KR_LOG(KR_LOGDEBUG, "Client [%s] Offline [%d]!", krmsg->clientid, fd);

    /* Check this client whether exists */
    T_KRListNode *node = kr_list_search(krcoordi.clients, krmsg->clientid);
    if (node == NULL) {
        KR_LOG(KR_LOGDEBUG, "Client %s not exists!", krmsg->clientid);
        return 0;
    }
   
    /*remove from list*/
    T_KRCoordiConnector *ptClient = (T_KRCoordiConnector *)node->value;
    kr_list_remove(krcoordi.clients, ptClient->id);

    /* remove from fdtable */
    kr_hashtable_remove(krcoordi.fdtable, &fd);
    
    /* Free this client */
    kr_event_file_delete(el, fd, KR_EVENT_READABLE);
    close(fd);
    
    kr_free(ptClient);
    
    return 0;
}
Esempio n. 3
0
static void kr_rebuild_index_del(T_KRIndexTable *ptIndextable, T_KRRecord *ptRecord)
{
    void *key = kr_field_get_value(ptRecord, ptIndextable->iIndexFieldId);
    T_KRHashTable *pHashTable = ptIndextable->ptIndex->pHashTable;

    T_KRIndexSolt *ptIndexSlot = kr_hashtable_lookup(pHashTable, key);
    if (ptIndexSlot != NULL) {
        /*modify statistical fields of external*/
        if (kr_get_proctime(ptRecord) > ptIndexSlot->tExtMaxProcTime) {
            ptIndexSlot->tExtMaxProcTime = kr_get_proctime(ptRecord);
        }
        if (kr_get_transtime(ptRecord) > ptIndexSlot->tExtMaxTransTime) {
            ptIndexSlot->tExtMaxTransTime = kr_get_transtime(ptRecord);
        }
        /*remove record from list*/
        kr_list_remove(ptIndexSlot->pRecList, ptRecord);

        /*free this slot if there is no records*/
        if (kr_list_length(ptIndexSlot->pRecList) == 0 ) {
            kr_hashtable_remove(pHashTable, ptIndexSlot->pKeyValue);
            kr_list_destroy(ptIndexSlot->pRecList);
            kr_free(ptIndexSlot->pKeyValue);
            kr_free(ptIndexSlot);
        }
    }
}
Esempio n. 4
0
void kr_index_drop(T_KRIndex *ptIndex)
{
    kr_list_remove(ptIndex->ptDB->pIndexList, ptIndex);
    kr_hashtable_destroy(ptIndex->pHashTable);
    kr_list_destroy(ptIndex->pIndexTableList);
    kr_free(ptIndex);
}
Esempio n. 5
0
void kr_table_drop(T_KRTable *ptTable)
{
    kr_list_remove(ptTable->ptDB->pTableList, ptTable);
    pthread_mutex_destroy(&ptTable->tLock);
    kr_list_destroy(ptTable->pIndexTableList);
    kr_free(ptTable->pRecordBuff);
    kr_free(ptTable->ptFieldDef);
    kr_free(ptTable);
}
Esempio n. 6
0
void kr_drop_table_index(T_KRIndex *krindex, T_KRTable *krtable)
{
    /* here we just destroy the hashtable of table-index, 
     * since the hashtable of db-index cross tables, 
     * we will destroy that in function kr_drop_db_index 
     */
    kr_list_remove(krtable->pIndexList, krindex); 
    if (krindex->eIndexType == KR_INDEXTYPE_TABLE) {
        kr_hashtable_destroy(krindex->pHashTable);
        kr_free(krindex);
    }
}
Esempio n. 7
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);
}
Esempio n. 8
0
static void kr_rebuild_index_del(T_KRIndex *krindex, T_KRRecord *krrecord)
{
    void *key = kr_get_field_value(krrecord, krindex->iIndexFieldId);

    T_KRList *pRecList = kr_hashtable_lookup(krindex->pHashTable, key);
    if (pRecList != NULL) kr_list_remove(pRecList, krrecord);
            
    if (kr_list_length(pRecList) != 0 ) {
        T_KRRecord *ptRecord = kr_list_value(kr_list_last(pRecList));
        T_KRIndex *newIndex = krindex;
        /* the dropped record and the last record of current list 
         * belongs to different tables 
         */
        if (krrecord->ptTable != ptRecord->ptTable) {
            newIndex = kr_get_table_index(ptRecord->ptTable, krindex->iIndexId);
        }
        key = kr_get_field_value(ptRecord, newIndex->iIndexFieldId);
        kr_hashtable_replace(newIndex->pHashTable, key, pRecList);
    } else {
        kr_list_destroy(pRecList);
        kr_hashtable_remove(krindex->pHashTable, key);
    }
}
Esempio n. 9
0
void kr_drop_db_index(T_KRIndex *krindex, T_KRDB *krdb)
{
    kr_list_remove(krdb->pIndexList, krindex);
    kr_hashtable_destroy(krindex->pHashTable);
    kr_free(krindex);
}