mirror of
https://github.com/overte-org/overte.git
synced 2025-08-08 23:17:02 +02:00
handle custom path in asset-server for assets
This commit is contained in:
parent
f455e404e3
commit
7c0b3953e4
2 changed files with 46 additions and 6 deletions
|
@ -45,25 +45,61 @@ AssetServer::AssetServer(ReceivedMessage& message) :
|
||||||
}
|
}
|
||||||
|
|
||||||
void AssetServer::run() {
|
void AssetServer::run() {
|
||||||
|
|
||||||
|
qDebug() << "Waiting for connection to domain to request settings from domain-server.";
|
||||||
|
|
||||||
|
// wait until we have the domain-server settings, otherwise we bail
|
||||||
|
DomainHandler& domainHandler = DependencyManager::get<NodeList>()->getDomainHandler();
|
||||||
|
connect(&domainHandler, &DomainHandler::settingsReceived, this, &AssetServer::completeSetup);
|
||||||
|
connect(&domainHandler, &DomainHandler::settingsReceiveFail, this, &AssetServer::domainSettingsRequestFailed);
|
||||||
|
|
||||||
ThreadedAssignment::commonInit(ASSET_SERVER_LOGGING_TARGET_NAME, NodeType::AssetServer);
|
ThreadedAssignment::commonInit(ASSET_SERVER_LOGGING_TARGET_NAME, NodeType::AssetServer);
|
||||||
|
}
|
||||||
|
|
||||||
|
void AssetServer::completeSetup() {
|
||||||
auto nodeList = DependencyManager::get<NodeList>();
|
auto nodeList = DependencyManager::get<NodeList>();
|
||||||
nodeList->addNodeTypeToInterestSet(NodeType::Agent);
|
|
||||||
|
|
||||||
const QString RESOURCES_PATH = "assets";
|
auto& domainHandler = nodeList->getDomainHandler();
|
||||||
|
const QJsonObject& settingsObject = domainHandler.getSettingsObject();
|
||||||
|
|
||||||
_resourcesDirectory = QDir(ServerPathUtils::getDataDirectory()).filePath(RESOURCES_PATH);
|
static const QString ASSET_SERVER_SETTINGS_KEY = "asset_server";
|
||||||
|
auto assetServerObject = settingsObject[ASSET_SERVER_SETTINGS_KEY];
|
||||||
|
|
||||||
|
// get the path to the asset folder from the domain server settings
|
||||||
|
static const QString ASSETS_PATH_OPTION = "assets_path";
|
||||||
|
auto assetsJSONValue = assetServerObject.toObject()[ASSETS_PATH_OPTION];
|
||||||
|
|
||||||
|
if (assetsJSONValue.type() != QJsonValue::String) {
|
||||||
|
qCritical() << "Received an assets path from the domain-server that could not be parsed. Stopping assignment.";
|
||||||
|
setFinished(true);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
auto assetsPathString = assetsJSONValue.toString();
|
||||||
|
QDir assetsPath { assetsPathString };
|
||||||
|
QString absoluteFilePath = assetsPath.absolutePath();
|
||||||
|
|
||||||
|
if (assetsPath.isRelative()) {
|
||||||
|
// if the domain settings passed us a relative path, make an absolute path that is relative to the
|
||||||
|
// default data directory
|
||||||
|
absoluteFilePath = ServerPathUtils::getDataFilePath(assetsPathString);
|
||||||
|
}
|
||||||
|
|
||||||
|
_resourcesDirectory = QDir(absoluteFilePath);
|
||||||
|
|
||||||
qDebug() << "Creating resources directory";
|
qDebug() << "Creating resources directory";
|
||||||
_resourcesDirectory.mkpath(".");
|
_resourcesDirectory.mkpath(".");
|
||||||
|
|
||||||
bool noExistingAssets = !_resourcesDirectory.exists() \
|
bool noExistingAssets = !_resourcesDirectory.exists() \
|
||||||
|| _resourcesDirectory.entryList(QDir::Files).size() == 0;
|
|| _resourcesDirectory.entryList(QDir::Files).size() == 0;
|
||||||
|
|
||||||
if (noExistingAssets) {
|
if (noExistingAssets) {
|
||||||
qDebug() << "Asset resources directory not found, searching for existing asset resources";
|
qDebug() << "Asset resources directory not found, searching for existing asset resources";
|
||||||
QString oldDataDirectory = QCoreApplication::applicationDirPath();
|
QString oldDataDirectory = QCoreApplication::applicationDirPath();
|
||||||
auto oldResourcesDirectory = QDir(oldDataDirectory).filePath("resources/" + RESOURCES_PATH);
|
|
||||||
|
const QString OLD_RESOURCES_PATH = "assets";
|
||||||
|
|
||||||
|
auto oldResourcesDirectory = QDir(oldDataDirectory).filePath("resources/" + OLD_RESOURCES_PATH);
|
||||||
|
|
||||||
|
|
||||||
if (QDir(oldResourcesDirectory).exists()) {
|
if (QDir(oldResourcesDirectory).exists()) {
|
||||||
|
@ -111,10 +147,12 @@ void AssetServer::run() {
|
||||||
auto hexHash = hash.toHex();
|
auto hexHash = hash.toHex();
|
||||||
|
|
||||||
qDebug() << "\tMoving " << filename << " to " << hexHash;
|
qDebug() << "\tMoving " << filename << " to " << hexHash;
|
||||||
|
|
||||||
file.rename(_resourcesDirectory.absoluteFilePath(hexHash) + "." + fileInfo.suffix());
|
file.rename(_resourcesDirectory.absoluteFilePath(hexHash) + "." + fileInfo.suffix());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
nodeList->addNodeTypeToInterestSet(NodeType::Agent);
|
||||||
}
|
}
|
||||||
|
|
||||||
void AssetServer::handleAssetGetInfo(QSharedPointer<ReceivedMessage> message, SharedNodePointer senderNode) {
|
void AssetServer::handleAssetGetInfo(QSharedPointer<ReceivedMessage> message, SharedNodePointer senderNode) {
|
||||||
|
|
|
@ -29,6 +29,8 @@ public slots:
|
||||||
void run();
|
void run();
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
|
void completeSetup();
|
||||||
|
|
||||||
void handleAssetGetInfo(QSharedPointer<ReceivedMessage> packet, SharedNodePointer senderNode);
|
void handleAssetGetInfo(QSharedPointer<ReceivedMessage> packet, SharedNodePointer senderNode);
|
||||||
void handleAssetGet(QSharedPointer<ReceivedMessage> packet, SharedNodePointer senderNode);
|
void handleAssetGet(QSharedPointer<ReceivedMessage> packet, SharedNodePointer senderNode);
|
||||||
void handleAssetUpload(QSharedPointer<ReceivedMessage> packetList, SharedNodePointer senderNode);
|
void handleAssetUpload(QSharedPointer<ReceivedMessage> packetList, SharedNodePointer senderNode);
|
||||||
|
|
Loading…
Reference in a new issue