示例#1
0
bool SyncEchoClient::sendAndRecv(const std::string& message)
		throw (mxcore::IOException&)
{
	MX_ASSERT(!message.empty());
	std::string recvMsg;
	socket_.writeN(message.c_str(), message.size());
	bool ret = readN(socket_, recvMsg, (int) message.size());
	return ret && (message == recvMsg);
}
示例#2
0
void SoundFile::jumpToChunk(int chunk)
{
    //if(chunk == currentChunk()) return;
    int c;
    lock();
    int pos = chunk * framesPerChunk() - offset();
    if(pos < 0) {
        stream->jump_to_frame(0);
        if(equalLoudness()) filteredStream->jump_to_frame(0);
        for(c=0; c<numChannels(); c++)
            channels(c)->reset();
        //readN(stream, bufferSize() + pos);
        readN(bufferSize() + pos);
    } else {
        stream->jump_to_frame(pos);
        if(equalLoudness()) filteredStream->jump_to_frame(pos);
        //readN(stream, bufferSize());
        readN(bufferSize());
    }
    /*  int n = bufferSize() / framesPerChunk();
      if(chunk+offset() < n) {
        stream->jump_to_frame(0);
        for(c=0; c<numChannels(); c++)
          channels(c)->reset();
        if(chunk+offset() >= 0) {
          for(int j=0; j<chunk+offset(); j++)
            readChunk();
        }
      } else {
        //if(chunk == currentChunk()+1) { readChunk(); return; }
        stream->jump_to_frame((chunk+offset()-n) * framesPerChunk());
        for(int j=0; j<n; j++)
          readChunk();
      }
    */
    setCurrentChunk(chunk);

    //for(c=0; c<numChannels(); c++) {
    //  if(channels(c) == gdata->getActiveChannel()) channels(c)->processChunk(currentChunk());
    //}
    unlock();
}
    RunLengthBitVectorStream(std::istream & rin, uint64_t const rbaseoffset = 0)
        : in(rin),
          blocksize(readBlockSize(in)),
          n(readN(in)),
          indexpos(readIndexPos(in)),
          blocks(readBlocks(in,indexpos)),
          pointerarrayoffset(indexpos + 1*sizeof(uint64_t)), baseoffset(rbaseoffset),
          rankaccbits(libmaus::rank::RunLengthBitVectorBase::getRankAccBits())
    {
#if 0
        std::cerr << "indexpos=" << indexpos << std::endl;
        std::cerr << "blocksize=" << blocksize << std::endl;
        std::cerr << "blocks=" << blocks << std::endl;
        std::cerr << "n=" << n << std::endl;
#endif
    }