void FileNameHandler::onReadFinished(std::tr1::shared_ptr<DenseData> fileContents, std::tr1::shared_ptr<MetadataRequest> request, NameCallback callback) { mStats.resolved++; std::tr1::shared_ptr<RemoteFileMetadata> bad; if (!fileContents) { SILOG(transfer, error, "FileNameHandler couldn't find file '" << request->getURI() << "'"); callback(bad); return; } FileHeaders emptyHeaders; Fingerprint fp = SparseData(fileContents).computeFingerprint(); //Just treat everything as a single chunk for now Range::length_type file_size = fileContents->length(); Range whole(0, file_size, LENGTH, true); Chunk chunk(fp, whole); ChunkList chunkList; chunkList.push_back(chunk); SharedChunkCache::getSingleton().getCache()->addToCache(fp, fileContents); std::tr1::shared_ptr<RemoteFileMetadata> met(new RemoteFileMetadata(fp, request->getURI(), file_size, chunkList, emptyHeaders)); callback(met); }
/// Constructor: fileId may be RemoteFileId() if unknown, data may be NULL. DownloadEvent(Status stat, const RemoteFileId &fileId, const SparseData *data) : Task::Event(getIdPair(fileId)), mFileId(fileId), mData(data?(*data):SparseData()), mStatus(stat) { }