SocketOutputBufferTemplate( ::libmaus::network::SocketBase * rdst, int const rtag, uint64_t const bufsize) : dst(rdst), tag(rtag), B(bufsize), pa(B.get()), pc(pa), pe(pa+B.getN()) { }
/** * constructor * * @param rW output writer * @param bufsize size of buffer * @param rmetaid meta information for each written block **/ MetaOutputBuffer8( ::libmaus::aio::AsynchronousWriter & rW, uint64_t const bufsize, uint64_t const rmetaid) : B(bufsize), pa(B.get()), pc(pa), pe(pa+B.getN()), W(rW), metaid(rmetaid) { }
static void writeArray(::libmaus::autoarray::AutoArray<data_type> const & A, std::string const & outputfilename) { this_type out(outputfilename,64*1024); for ( uint64_t i = 0; i < A.getN(); ++i ) out.put(A[i]); out.flush(); }
void putTerm(uint64_t num) { uint8_t * p = termbuf.get() + termbuf.getN(); for ( unsigned int i = 0; i < expo; ++i ) { *(--p) = (num % base) + 1; num /= base; } assert ( p == termbuf.get() ); for ( unsigned int i = 0; i < expo; ++i ) put( *(p++) ); }
SynchronousOutputBuffer8Posix(std::string const & rfilename, uint64_t const bufsize, bool truncate = true) : filename(rfilename), B(bufsize), pa(B.get()), pc(pa), pe(pa+B.getN()), ptr(0) { if ( truncate ) { int const tres = ::truncate(filename.c_str(),0); if ( tres ) { ::libmaus::exception::LibMausException se; se.getStream() << "SynchronousOutputBuffer8Posix::SynchronousOutputBuffer8Posix(): truncate() failed: " << strerror(errno) << std::endl; se.finish(); throw se; } } }
SynchronousGenericOutputPosix( std::string const & rfilename, uint64_t const bufsize, bool const truncate, uint64_t const offset, bool const rmetasync = true ) : filename(rfilename), dirname(::libmaus::util::ArgInfo::getDirName(filename)), metasync(rmetasync), B(bufsize), pa(B.get()), pc(pa), pe(pa+B.getN()), fd ( -1 ), totalwrittenbytes(0), totalwrittenwords(0) { while ( (fd = ::open(filename.c_str(), truncate ? (O_WRONLY|O_TRUNC|O_CREAT) : O_WRONLY , 0755 )) < 0 ) { switch ( errno ) { case EINTR: { std::cerr << "Restarting open() system call interupted by signal." << std::endl; break; } default: { ::libmaus::exception::LibMausException se; se.getStream() << "Failed to open file "<< filename <<" in SynchronousGenericOutputPosix: " << strerror(errno); se.finish(); throw se; } } } if ( lseek ( fd, offset, SEEK_SET) == static_cast<off_t>(-1) ) { close(fd); ::libmaus::exception::LibMausException se; se.getStream() << "Failed to seek " << filename << " in SynchronousGenericOutputPosix: " << strerror(errno); se.finish(); throw se; } #if 0 std::cerr << "File " << filename << " opened for output in " << ::libmaus::util::Demangle::demangle<this_type>() << std::endl; #endif }
bool getNextTriple(TripleEdge & triple) { if ( ! curbufleft ) { istr.read ( reinterpret_cast<char *>(B.get()), B.getN() * sizeof(TripleEdge) ); if ( istr.gcount() == 0 ) return false; assert ( istr.gcount() % sizeof(TripleEdge) == 0 ); curbufleft = istr.gcount() / sizeof(TripleEdge); assert ( curbufleft ); curtrip = B.get(); } triple = *(curtrip++); curbufleft -= 1; return true; }
FileBunchLRU ( std::vector < std::string > const & rfilenames, uint64_t rlrusize = 1024) : LRU(rlrusize), lrusize(rlrusize), filenames ( rfilenames ), mapping(filenames.size()), rmapping(lrusize), files(lrusize) { std::fill ( mapping.get(), mapping.get() + mapping.getN(), lrusize ); }
SynchronousOutputBuffer8(std::string const & rfilename, uint64_t const bufsize, bool truncate = true) : filename(rfilename), B(bufsize), pa(B.get()), pc(pa), pe(pa+B.getN()) { if ( truncate ) { std::ofstream ostr(filename.c_str(), std::ios::binary); ostr.flush(); } }