// if (lastBufRemain < BLOCK_HEADER_LENGTH) { // 上次遗留的数据不够解析block 长度 // memcpy(&preBlock[lastBufRemain], curBuf, BLOCK_HEADER_LENGTH); // curReadPos += BLOCK_HEADER_LENGTH; // lastBufRemain += BLOCK_HEADER_LENGTH; // } // blockLen = unpackInt16(&preBlock[16]) + 1; // const int lenToRead = blockLen - lastBufRemain; // memcpy(&preBlock[lastBufRemain], &curBuf[curReadPos], lenToRead); // curReadPos += lenToRead; // curStartAddrArr->push_back(&preBlock[0]); // curStartAddrArr->push_back(&curBuf[0]); // spdlog::info("first blocklen: {}, remain: {}, toread: {}", blockLen, lastBufRemain, lenToRead); // uint8_t buf[65535]; // int block_length = unpackInt16(&preBlock[16]) + 1; // uint32_t crc = le_to_u32(preBlock + block_length - 8); // size_t dlen = 65535; // int ret = bgzf_uncompress(buf, &dlen, (Bytef *)preBlock + 18, block_length - 18, crc); // 开头是header,得跳过 // int bamLen = *(uint32_t *)(buf); // spdlog::info("ret: {}, bamLen: {}, dlen: {}, block_length: {}", ret, bamLen, dlen, block_length); // exit(0); // spdlog::info("read block len: {}", blockLen); // spdlog::info("cur block size: {}", curStartAddrArr->size()); PROF_G_BEG(read); readState = fread(fbuf[4], 1, READ_BUFSIZE, fpr); readState = fread(curBuf, 1, READ_BUFSIZE, fpr); PROF_G_BEG(mem_copy); memcpy(curBuf, fbuf[4], READ_BUFSIZE); PROF_G_END(mem_copy); PROF_G_END(read); // kt_for(nsgv::gSortArg.NUM_THREADS, mtUncompressBlock, &sortData, curStartAddrArr->size() / BATCH_SIZE); // if (uncommpressedDataSize(sortData) >= nsgv::gSortArg.MAX_MEM) { // kt_for(nsgv::gSortArg.NUM_THREADS, mtSortBlocks, &sortData, nsgv::gSortArg.NUM_THREADS); // mergeSortedBlocks(sortData); // } //setvbuf(fpr, (char*)fbuf[4], _IOFBF, 0); //setvbuf(fpr, (char *)fbuf[4], _IONBF, READ_BUFSIZE); // const size_t READ_BUFSIZE = 8L * 1024 * 1024;