void testRead(ObjStoreContext* pContext,uint16_t maxid,uint16_t mask,size_t datasize) { uint32_t* pdata = (uint32_t*) malloc(datasize); for(int i=0;i<maxid;++i) { uint64_t readlen = datasize; if(ReadObjData(pContext,i,pdata,&readlen) != 0) { printf("obj %d test failed.readlen error\n",i); continue; } if(readlen == datasize) { int testok = 1; for(uint32_t j=0;j<datasize/4;++j) { if(pdata[j] != (((uint32_t)mask<<16) | i)) { testok = 0; printf("obj %d test failed. %d byte error. %x\n",i,j,pdata[j]); break; } } if(testok) { printf("obj %d test ok.\n",i); } } } free(pdata); }
void testCheck(ObjStoreContext* pContext, uint16_t maxid, size_t datasize) { uint32_t* pdata = (uint32_t*)malloc(datasize+16);//作业,这是一次性能相关的权衡->解决方案:ReadFileContent要加一个带seek的实现 for (int i = 0; i < maxid; ++i) { uint64_t readlen = datasize; if (ReadObjData(pContext, i, pdata, &readlen) != 0) { printf("obj %d test failed.readlen error\n", i); continue; } if (readlen == datasize) { for (uint32_t j = 0; j < datasize / 4; ++j) { if (j > 0) { if (pdata[j] != pdata[j - 1]) { printf("obj %d check failed. %d byte error. %x\n", i, j, pdata[j]); break; } } } printf("obj %d check ok.\n", i); } } free(pdata); }
BOOL objrdr( LPSTR lpFileName, int outDepth, LPINT lpDataType, LPOBJECTLIST lpObjList) /************************************************************************/ { return(ReadObjData(lpFileName, lpObjList, outDepth, lpDataType, NULL/*lpScaleRect*/,NULL /*lpFullFileX*/, NULL /*lpFullFileY*/, NULL /*lpFullResolution*/)); }
int devtest() { ObjStoreContext* pContext = (ObjStoreContext*)malloc(sizeof(ObjStoreContext)); InitObjStore(pContext, "d:/tmp/objstore/"); uint8_t buffer[256]; uint64_t bufferlen = 256; UpdateObjData(pContext, 100, "123456", 6); ReadObjData(pContext, 100, buffer, &bufferlen); printf("%s\n", buffer); if (IsObjExist(pContext, 100) == 0) { printf("exist\n"); } //RemoveObj(pContext,100); if (IsObjExist(pContext, 100) == 0) { printf("exist\n"); } return 0; }