Esempio n. 1
0
/*
 * 将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;
}
Esempio n. 2
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();
}
Esempio n. 3
0
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;
}