HBitmapDecoder CodecLibrary::createDecoder(std::istream& sourceStream){
		char str[100];
		sourceStream.getline(str, 100);
		std::string firstChunk(str);
		for(auto pair : myDecoders)
		{
			if (pair.second->isSupported(firstChunk))
			{
				sourceStream.clear();
				sourceStream.seekg(0);
				return createDecoder(pair.first, sourceStream);
			}
		}
		
		throw std::runtime_error("No matching decder found");
	}
Exemplo n.º 2
0
vector<Chunk> combineUnmatchedChunks(vector<bool> chunkmatchstatus, vector<Chunk> chunkdetails){
    vector<Chunk>  combinedChunks;
    int unmatchcount=0;
    for(int i=0;i<chunkmatchstatus.size();i++){
        if(!chunkmatchstatus[i]){
            unmatchcount++;
            Chunk firstChunk(chunkdetails[i].getHash(),chunkdetails[i].getOffset(),chunkdetails[i].getLength(),chunkdetails[i].getPath());

            while(i+1<chunkmatchstatus.size() && !chunkmatchstatus[i+1]){
                firstChunk.setLength(chunkdetails[i+1].getLength()+firstChunk.getLength());
                unmatchcount++;
                i++;
            }
            combinedChunks.push_back(firstChunk);
        }


    }

    return combinedChunks;
}