Update AssetServer to use PacketList

This commit is contained in:
Ryan Huffman 2015-08-25 15:05:35 -07:00
parent c1b9613a30
commit 85f80ff6f9

View file

@ -221,38 +221,45 @@ void AssetServer::handleAssetGet(QSharedPointer<NLPacket> packet, SharedNodePoin
_taskPool.start(task); _taskPool.start(task);
} }
void AssetServer::handleAssetUpload(QSharedPointer<NLPacket> packet, SharedNodePointer senderNode) { void AssetServer::handleAssetUpload(QSharedPointer<NLPacketList> packetList, SharedNodePointer senderNode) {
auto data = packetList->getMessage();
QBuffer buffer { &data };
buffer.open(QIODevice::ReadOnly);
MessageID messageID; MessageID messageID;
packet->readPrimitive(&messageID); buffer.read(reinterpret_cast<char*>(&messageID), sizeof(messageID));
// buffer.readPrimitive(&messageID);
char extensionLength; uint8_t extensionLength;
packet->readPrimitive(&extensionLength); buffer.read(reinterpret_cast<char*>(&extensionLength), sizeof(extensionLength));
// buffer.readPrimitive(&extensionLength);
char extension[extensionLength]; QByteArray extension = buffer.read(extensionLength);
packet->read(extension, extensionLength);
qDebug() << "Got extension: " << extension; qDebug() << "Got extension: " << extension;
int fileSize; uint64_t fileSize;
packet->readPrimitive(&fileSize); buffer.read(reinterpret_cast<char*>(&fileSize), sizeof(fileSize));
// buffer.readPrimitive(&fileSize);
const int MAX_LENGTH = 1024; // const uint64_t MAX_LENGTH = 1024;
fileSize = std::min(MAX_LENGTH, fileSize); // fileSize = std::min(MAX_LENGTH, fileSize);
qDebug() << "Receiving a file of size " << fileSize; qDebug() << "Receiving a file of size " << fileSize;
QByteArray data = packet->read(fileSize); QByteArray fileData = buffer.read(fileSize);
QString hash = hashData(data); QString hash = hashData(fileData);
qDebug() << "Got data: (" << hash << ") " << data; qDebug() << "Got data: (" << hash << ") ";
QFile file { _resourcesDirectory.filePath(QString(hash)) }; QFile file { _resourcesDirectory.filePath(QString(hash)) }; //+ "." + QString(extension) };
if (file.exists()) { if (file.exists()) {
qDebug() << "[WARNING] This file already exists"; qDebug() << "[WARNING] This file already exists";
} else { } else {
file.open(QIODevice::WriteOnly); file.open(QIODevice::WriteOnly);
file.write(data); file.write(fileData);
file.close();
} }
auto replyPacket = NLPacket::create(PacketType::AssetUploadReply); auto replyPacket = NLPacket::create(PacketType::AssetUploadReply);