////////////////////////////////////////////////////////////////////////// // internalWrite //virtual void BcLogFile::internalWrite( const BcChar* pText ) { BcLog::internalWrite( pText ); if( OutputFile_.isOpen() ) { OutputFile_.write( pText, BcStrLength( pText ) ); internalFlush(); } }
void write(const char* data, size_t len) { if ((len + buffer_used) > buffer_size) { internalFlush(); } if (len > buffer_size) { directWrite(data, len); } else { memcpy(buffer_ptr, data, len); buffer_used += len; buffer_ptr += len; } }
void put(libmaus::fastx::FastQReader::pattern_type const & pattern) { uint64_t const patlen = getFastQLength(pattern); while ( (C.end() - pc) < static_cast<ptrdiff_t>(patlen) ) { uint64_t const off = pc-C.begin(); uint64_t const newclen = std::max(2*C.size(),static_cast<uint64_t>(1ull)); C.resize(newclen); pc = C.begin()+off; } *(pc)++ = '@'; std::copy(pattern.sid.begin(),pattern.sid.end(),pc); pc += pattern.sid.size(); *(pc++) = '\n'; std::copy(pattern.spattern.begin(), pattern.spattern.end(),pc); pc += pattern.spattern.size(); *(pc++) = '\n'; *(pc)++ = '+'; std::copy(pattern.plus.begin(), pattern.plus.end(),pc); pc += pattern.plus.size(); *(pc++) = '\n'; std::copy(pattern.quality.begin(), pattern.quality.end(),pc); pc += pattern.quality.size(); *(pc++) = '\n'; assert ( pc <= C.end() ); lnumsyms += pattern.spattern.size(); minlen = std::min(minlen,static_cast<uint64_t>(pattern.spattern.size())); maxlen = std::max(maxlen,static_cast<uint64_t>(pattern.spattern.size())); pathigh++; if ( pathigh - patlow == patperblock ) internalFlush(); }
void flush() { internalFlush(); directFlush(); }
void flush() { if ( bgzfenc ) { internalFlush(); bgzfenc->flush(); bgzfenc->addEOFBlock(); bgzfenc.reset(); fioutstr->flush(); fioutstr.reset(); libmaus::aio::CheckedOutputStream indexCOS(indexfilename); ::libmaus::util::NumberSerialisation::serialiseNumber(indexCOS,blockcnt); libmaus::aio::CheckedInputStream fiCIS(fifilename); #if defined(LIBMAUS_FASTX_FASTQBGZFWRITER_PARALLEL) bgzfidoutstr->flush(); bgzfidoutstr.reset(); bgzfidxcntoutstr->flush(); bgzfidxcntoutstr.reset(); libmaus::aio::CheckedInputStream bgzfidxCIS(bgzfidxfilename); libmaus::aio::CheckedInputStream bgzfidxcntCIS(bgzfidxcntfilename); uint64_t uncompacc = 0; uint64_t compacc = 0; for ( uint64_t i = 0; i < blockcnt; ++i ) { uint64_t const bgzfblocks = libmaus::util::UTF8::decodeUTF8(bgzfidxcntCIS); uint64_t uncomp = 0; uint64_t comp = 0; for ( uint64_t j = 0; j < bgzfblocks; ++j ) { uncomp += libmaus::util::UTF8::decodeUTF8(bgzfidxCIS); comp += libmaus::util::UTF8::decodeUTF8(bgzfidxCIS); } libmaus::fastx::FastInterval FI = libmaus::fastx::FastInterval::deserialise(fiCIS); FI.fileoffset = compacc; FI.fileoffsethigh = compacc + comp; uncompacc += uncomp; compacc += comp; indexCOS << FI.serialise(); } #else for ( uint64_t i = 0; i < blockcnt; ++i ) { libmaus::fastx::FastInterval FI = libmaus::fastx::FastInterval::deserialise(fiCIS); indexCOS << FI.serialise(); } #endif indexCOS.flush(); } }