/* * 将Footer字符串进行解析 * 验证magic值 * 读取metaIndexBlock和dataIndexBlock的句柄 */ int decodeFooter(Footer* pfooter,const Slice* input) { const unsigned char* magic_ptr = input->data_; const uint64_t magic = decodeFixed64(magic_ptr+40); if(magic != MAGICNUMBER){ printf("This is not a ldb file(bad magic).\n"); exit(-1); } printf("Success magic!\n"); varint varint; varint.value_ = magic_ptr; varint.size_ = 0; pfooter->metaIndexHandle.offset_ = varToint64(&varint); printf("vint offset = %zd\n",varint.size_); pfooter->metaIndexHandle.size_ = varToint64(&varint); printf("vint offset = %zd\n",varint.size_); pfooter->dataIndexHandle.offset_ = varToint64(&varint); printf("vint offset = %zd\n",varint.size_); pfooter->dataIndexHandle.size_ = varToint64(&varint); printf("vint offset = %zd\n",varint.size_); showFooter(pfooter); return 0; }
void CProgressWindow::Init(bool global_only) { global_progress = local_progress = 100; showFooter(false); shadow = true; int x_item = 10; int y_item = 10; setWidthP(75); int w_item = width-2*x_item; int h_item = 14; int h_pbar = 20; w_bar_frame = 0; //create status text object status_txt = new CComponentsLabel(); int h_txt = max(g_Font[SNeutrinoSettings::FONT_TYPE_MENU]->getHeight(), h_item); status_txt->setDimensionsAll(x_item, y_item, w_item, h_txt); status_txt->setColorBody(col_body); status_txt->doPaintTextBoxBg(true); addWindowItem(status_txt); y_item += h_txt + 10; //create local_bar object local_bar = new CProgressBar(); if (!global_only) { local_bar->allowPaint(false); local_bar->setDimensionsAll(x_item, y_item, w_item, h_pbar); local_bar->setColorBody(col_body); local_bar->setActiveColor(COL_MENUCONTENT_PLUS_7); local_bar->setFrameThickness(w_bar_frame); local_bar->setColorFrame(COL_MENUCONTENT_PLUS_7); addWindowItem(local_bar); y_item += 2*h_pbar; } //create global_bar object global_bar = new CProgressBar(); global_bar->allowPaint(false); global_bar->setDimensionsAll(x_item, y_item, w_item, h_pbar); global_bar->setColorBody(col_body); global_bar->setActiveColor(COL_MENUCONTENT_PLUS_7); global_bar->setFrameThickness(w_bar_frame); global_bar->setColorFrame(COL_MENUCONTENT_PLUS_7); addWindowItem(global_bar); y_item += 2*h_pbar; h_height = ccw_head->getHeight(); height = y_item + h_height; setCenterPos(); }
int main() { FILE* fp; size_t i = 0; size_t offset; fp = fopen("src.ldb","r"); if(fp == NULL){ printf("error!\n"); return 1; } unsigned char a[] = "src.ldb"; unsigned char b[] = "1-959-250-4279"; //"1-114-560-9305"; Slice filename; Slice lastKey;/* 用于存储最后一次读取到的key */ Slice srckey; /* 存储要查找、删除、修改、添加的key */ DBhandle dbhandle; Footer footer; Block dataIndexBlock; Block* blockArray; BlockEntry blockEntry; initSlice(&filename,10); initSlice(&lastKey,20); initBlockEntry(&blockEntry); initDBhandle(&dbhandle); setSlice(&dbhandle.key_,b,22); setSlice(&filename,a,strlen((char*)a)); sequentialFile* psFile = (sequentialFile*)malloc(sizeof(sequentialFile)); setSequentialFile(psFile,fp,&filename); readFooter(psFile,&footer); showFooter(&footer); /* 读取data index block,存储在dataBlock中 */ readBlock(psFile,&dataIndexBlock,footer.dataIndexHandle); blockArray = (Block*)malloc(sizeof(Block)*dataIndexBlock.restartNum); if(blockArray == NULL){ printf("error:blockArray is NULL.\n"); return 1; } readAllBlock(psFile,blockArray,&dataIndexBlock); /*设置操作为Read*/ dbhandle.type = 1; dbcmd(blockArray,&dataIndexBlock,&dbhandle); /* * 至此,所有的block都已经读取到内存中,data block的内容存储在blockarray中, * data block的索引信息存储在dataIndexBlock中 */ /* * */ //showBlokRestart(&dataIndexBlock); for(i = 0;i < dataIndexBlock.restartNum;i++){ //showBlockData(&(blockArray[i])); } freeBlockEntry(&blockEntry); freeDBhandle(&dbhandle); fclose(fp); printf("Hello World!\n"); return 0; }