Esempio n. 1
0
//////////////////////////////////////////////////////////////////////////
// internalWrite
//virtual
void BcLogFile::internalWrite( const BcChar* pText )
{
	BcLog::internalWrite( pText );

	if( OutputFile_.isOpen() )
	{
		OutputFile_.write( pText, BcStrLength( pText ) );
		internalFlush();
	}
}
Esempio n. 2
0
 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;
   }
 }
Esempio n. 3
0
			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();
			}
Esempio n. 4
0
 void flush() {
   internalFlush();
   directFlush();
 }
Esempio n. 5
0
			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();
				}
			}