Add SendAssetTask

This commit is contained in:
Ryan Huffman 2015-08-25 12:46:44 -07:00
parent b865a3f8fb
commit 0352782e46

View file

@ -215,42 +215,10 @@ void AssetServer::handleAssetGet(QSharedPointer<NLPacket> packet, SharedNodePoin
qDebug() << "Received a request for the file: " << assetHash << " from " << start << " to " << end;
// We need to reply...
auto replyPacket = NLPacket::create(PacketType::AssetGetReply);
replyPacket->write(assetHash, HASH_HEX_LENGTH);
replyPacket->writePrimitive(messageID);
const int64_t MAX_LENGTH = 1024;
if (end <= start) {
writeError(replyPacket.get(), AssetServerError::INVALID_BYTE_RANGE);
} else if (end - start > MAX_LENGTH) {
writeError(replyPacket.get(), AssetServerError::INVALID_BYTE_RANGE);
} else {
QFile file { _resourcesDirectory.filePath(QString(assetHash)) };
qDebug() << "Opening file: " << QString(QFileInfo(assetHash).fileName());
if (file.open(QIODevice::ReadOnly)) {
if (file.size() < end) {
writeError(replyPacket.get(), AssetServerError::INVALID_BYTE_RANGE);
} else {
auto size = end - start;
file.seek(start);
QByteArray data = file.read(size);
replyPacket->writePrimitive(AssetServerError::NO_ERROR);
replyPacket->writePrimitive(size);
replyPacket->write(data, size);
}
} else {
qDebug() << "Asset not found";
writeError(replyPacket.get(), AssetServerError::ASSET_NOT_FOUND);
}
}
auto nodeList = DependencyManager::get<NodeList>();
nodeList->sendPacket(std::move(replyPacket), *senderNode);
// Queue task
QString filePath = _resourcesDirectory.filePath(QString(assetHash));
auto task = new SendAssetTask(messageID, assetHash, filePath, start, end, senderNode);
_taskPool.start(task);
}
void AssetServer::handleAssetUpload(QSharedPointer<NLPacket> packet, SharedNodePointer senderNode) {