Beispiel #1
0
/// This function verifies single page - buffer already loaded in memory
void TPgBlob::VerifyPage(char* Pg) {
    TPgHeader* Header = (TPgHeader*)Pg;    
    for (uint16 i = 0; i < Header->ItemCount; i++) {
        TPgBlobPageItem* Item = GetItemRec(Pg, i);
        if (Item->Len == 0) continue; // theoretically, this should not be needed, but there seems to be some scenario where it falls through
        if (Item->Offset < Header->OffsetFreeEnd) {
            PrintHeaderInfo(Pg);
            EAssertR(false, "Invalid position of item - starts inside free space of a page");
        }
        if (Item->Offset + Item->Len > PG_PAGE_SIZE) {
            PrintHeaderInfo(Pg);
            EAssertR(false, "Invalid position of item - stretches over page");
        }
    }
    for (uint16 i = 0; i < Header->ItemCount; i++) {
        TPgBlobPageItem* Item1 = GetItemRec(Pg, i);
        for (uint16 j = i + 1; j < Header->ItemCount; j++) {
            TPgBlobPageItem* Item2 = GetItemRec(Pg, j);
            if (Item1->Len == 0 || Item2->Len == 0) continue;
            if ((Item1->Offset < Item2->Offset) && (Item1->Offset + Item1->Len > Item2->Offset)) {
                PrintHeaderInfo(Pg);
                printf("--Len1 %d, Offset1 %d, Len2 %d, Offset2 %d\n", Item1->Len, Item1->Offset, Item2->Len, Item2->Offset);
                EAssertR(false, "Invalid position of item - items overlap");
            }
            if ((Item2->Offset < Item1->Offset) && (Item2->Offset + Item2->Len > Item1->Offset)) {
                PrintHeaderInfo(Pg);
                printf("-Len1 %d, Offset1 %d, Len2 %d, Offset2 %d\n", Item1->Len, Item1->Offset, Item2->Len, Item2->Offset);
                EAssertR(false, "Invalid position of item - items overlap");
            }
        }
    }
}
Beispiel #2
0
void TopListPrint(TopList_T* topList)
{
    while (topList->size > 0 && topList->List[0].value <= 0)
    {
        HeapPop(topList);
    }
    
    printf("    Get The Top %d List. \n\n", topList->size);
    
    PrintHeaderInfo(topList->size);  
    
    while (topList->size > 0 && topList->List[0].value >0)
    {
        PrintCombinStat(&topList->List[0]);        
        HeapPop(topList);
    } 
}