mirror of
https://github.com/overte-org/overte.git
synced 2025-08-08 00:10:52 +02:00
Add SendAssetTask
This commit is contained in:
parent
b865a3f8fb
commit
0352782e46
1 changed files with 4 additions and 36 deletions
|
@ -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) {
|
||||
|
|
Loading…
Reference in a new issue