mirror of
https://github.com/overte-org/overte.git
synced 2025-08-12 13:34:02 +02:00
Add MappingRequest superclass and mapping specific errors
This commit is contained in:
parent
e06c1591fb
commit
c9bd67bc3e
2 changed files with 110 additions and 36 deletions
|
@ -30,14 +30,18 @@
|
|||
|
||||
MessageID AssetClient::_currentID = 0;
|
||||
|
||||
GetMappingRequest::GetMappingRequest(AssetPath path) : _path(path) {
|
||||
};
|
||||
|
||||
void GetMappingRequest::start() {
|
||||
void MappingRequest::start() {
|
||||
if (QThread::currentThread() != thread()) {
|
||||
QMetaObject::invokeMethod(this, "start", Qt::AutoConnection);
|
||||
return;
|
||||
}
|
||||
doStart();
|
||||
};
|
||||
|
||||
GetMappingRequest::GetMappingRequest(AssetPath path) : _path(path) {
|
||||
};
|
||||
|
||||
void GetMappingRequest::doStart() {
|
||||
|
||||
auto assetClient = DependencyManager::get<AssetClient>();
|
||||
|
||||
|
@ -50,9 +54,23 @@ void GetMappingRequest::start() {
|
|||
}
|
||||
|
||||
assetClient->getAssetMapping(_path, [this, assetClient](bool responseReceived, AssetServerError error, QSharedPointer<ReceivedMessage> message) {
|
||||
// read message
|
||||
_error = error;
|
||||
if (!error) {
|
||||
if (!responseReceived) {
|
||||
_error = NetworkError;
|
||||
} else {
|
||||
switch (error) {
|
||||
case AssetServerError::NoError:
|
||||
_error = NoError;
|
||||
break;
|
||||
case AssetServerError::AssetNotFound:
|
||||
_error = NotFound;
|
||||
break;
|
||||
default:
|
||||
_error = UnknownError;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (!_error) {
|
||||
//_hash = message->read(SHA256_HASH_HEX_LENGTH);
|
||||
_hash = message->readString();
|
||||
assetClient->_mappingCache[_path] = _hash;
|
||||
|
@ -64,7 +82,7 @@ void GetMappingRequest::start() {
|
|||
GetAllMappingsRequest::GetAllMappingsRequest() {
|
||||
};
|
||||
|
||||
void GetAllMappingsRequest::start() {
|
||||
void GetAllMappingsRequest::doStart() {
|
||||
if (QThread::currentThread() != thread()) {
|
||||
QMetaObject::invokeMethod(this, "start", Qt::AutoConnection);
|
||||
return;
|
||||
|
@ -72,8 +90,20 @@ void GetAllMappingsRequest::start() {
|
|||
|
||||
auto assetClient = DependencyManager::get<AssetClient>();
|
||||
assetClient->getAllAssetMappings([this, assetClient](bool responseReceived, AssetServerError error, QSharedPointer<ReceivedMessage> message) {
|
||||
// read message
|
||||
_error = error;
|
||||
if (!responseReceived) {
|
||||
_error = NetworkError;
|
||||
} else {
|
||||
switch (error) {
|
||||
case AssetServerError::NoError:
|
||||
_error = NoError;
|
||||
break;
|
||||
default:
|
||||
_error = UnknownError;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (!error) {
|
||||
size_t numberOfMappings;
|
||||
message->readPrimitive(&numberOfMappings);
|
||||
|
@ -92,7 +122,7 @@ void GetAllMappingsRequest::start() {
|
|||
SetMappingRequest::SetMappingRequest(AssetPath path, AssetHash hash) : _path(path), _hash(hash) {
|
||||
};
|
||||
|
||||
void SetMappingRequest::start() {
|
||||
void SetMappingRequest::doStart() {
|
||||
if (QThread::currentThread() != thread()) {
|
||||
QMetaObject::invokeMethod(this, "start", Qt::AutoConnection);
|
||||
return;
|
||||
|
@ -100,8 +130,22 @@ void SetMappingRequest::start() {
|
|||
|
||||
auto assetClient = DependencyManager::get<AssetClient>();
|
||||
assetClient->setAssetMapping(_path, _hash, [this, assetClient](bool responseReceived, AssetServerError error, QSharedPointer<ReceivedMessage> message) {
|
||||
// read message
|
||||
_error = error;
|
||||
if (!responseReceived) {
|
||||
_error = NetworkError;
|
||||
} else {
|
||||
switch (error) {
|
||||
case AssetServerError::NoError:
|
||||
_error = NoError;
|
||||
break;
|
||||
case AssetServerError::PermissionDenied:
|
||||
_error = PermissionDenied;
|
||||
break;
|
||||
default:
|
||||
_error = UnknownError;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (!error) {
|
||||
assetClient->_mappingCache[_path] = _hash;
|
||||
}
|
||||
|
@ -112,7 +156,7 @@ void SetMappingRequest::start() {
|
|||
DeleteMappingRequest::DeleteMappingRequest(AssetPath path) : _path(path) {
|
||||
};
|
||||
|
||||
void DeleteMappingRequest::start() {
|
||||
void DeleteMappingRequest::doStart() {
|
||||
if (QThread::currentThread() != thread()) {
|
||||
QMetaObject::invokeMethod(this, "start", Qt::AutoConnection);
|
||||
return;
|
||||
|
@ -120,8 +164,22 @@ void DeleteMappingRequest::start() {
|
|||
|
||||
auto assetClient = DependencyManager::get<AssetClient>();
|
||||
assetClient->deleteAssetMapping(_path, [this, assetClient](bool responseReceived, AssetServerError error, QSharedPointer<ReceivedMessage> message) {
|
||||
// read message
|
||||
_error = error;
|
||||
if (!responseReceived) {
|
||||
_error = NetworkError;
|
||||
} else {
|
||||
switch (error) {
|
||||
case AssetServerError::NoError:
|
||||
_error = NoError;
|
||||
break;
|
||||
case AssetServerError::PermissionDenied:
|
||||
_error = PermissionDenied;
|
||||
break;
|
||||
default:
|
||||
_error = UnknownError;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (!error) {
|
||||
assetClient->_mappingCache.remove(_path);
|
||||
}
|
||||
|
|
|
@ -43,78 +43,94 @@ using GetInfoCallback = std::function<void(bool responseReceived, AssetServerErr
|
|||
using UploadResultCallback = std::function<void(bool responseReceived, AssetServerError serverError, const QString& hash)>;
|
||||
using ProgressCallback = std::function<void(qint64 totalReceived, qint64 total)>;
|
||||
|
||||
class MappingRequest : public QObject {
|
||||
Q_OBJECT
|
||||
public:
|
||||
enum Error {
|
||||
NoError,
|
||||
NotFound,
|
||||
NetworkError,
|
||||
PermissionDenied,
|
||||
UnknownError
|
||||
};
|
||||
|
||||
class GetMappingRequest : public QObject {
|
||||
Q_INVOKABLE void start();
|
||||
Error getError() const { return _error; }
|
||||
|
||||
protected:
|
||||
Error _error { NoError };
|
||||
|
||||
private:
|
||||
virtual void doStart() = 0;
|
||||
};
|
||||
|
||||
|
||||
class GetMappingRequest : public MappingRequest {
|
||||
Q_OBJECT
|
||||
public:
|
||||
GetMappingRequest(AssetPath path);
|
||||
|
||||
Q_INVOKABLE void start();
|
||||
|
||||
AssetHash getHash() { return _hash; }
|
||||
AssetServerError getError() { return _error; }
|
||||
AssetHash getHash() const { return _hash; }
|
||||
|
||||
signals:
|
||||
void finished(GetMappingRequest* thisRequest);
|
||||
|
||||
private:
|
||||
virtual void doStart() override;
|
||||
|
||||
AssetPath _path;
|
||||
AssetHash _hash;
|
||||
AssetServerError _error { AssetServerError::NoError };
|
||||
};
|
||||
|
||||
class SetMappingRequest : public QObject {
|
||||
class SetMappingRequest : public MappingRequest {
|
||||
Q_OBJECT
|
||||
public:
|
||||
SetMappingRequest(AssetPath path, AssetHash hash);
|
||||
|
||||
Q_INVOKABLE void start();
|
||||
|
||||
AssetHash getHash() { return _hash; }
|
||||
AssetServerError getError() { return _error; }
|
||||
AssetHash getHash() const { return _hash; }
|
||||
|
||||
signals:
|
||||
void finished(SetMappingRequest* thisRequest);
|
||||
|
||||
private:
|
||||
virtual void doStart() override;
|
||||
|
||||
AssetPath _path;
|
||||
AssetHash _hash;
|
||||
AssetServerError _error { AssetServerError::NoError };
|
||||
};
|
||||
|
||||
class DeleteMappingRequest : public QObject {
|
||||
class DeleteMappingRequest : public MappingRequest {
|
||||
Q_OBJECT
|
||||
public:
|
||||
DeleteMappingRequest(AssetPath path);
|
||||
|
||||
Q_INVOKABLE void start();
|
||||
|
||||
AssetServerError getError() { return _error; }
|
||||
|
||||
signals:
|
||||
void finished(DeleteMappingRequest* thisRequest);
|
||||
|
||||
private:
|
||||
virtual void doStart() override;
|
||||
|
||||
AssetPath _path;
|
||||
AssetServerError _error { AssetServerError::NoError };
|
||||
};
|
||||
|
||||
class GetAllMappingsRequest : public QObject {
|
||||
class GetAllMappingsRequest : public MappingRequest {
|
||||
Q_OBJECT
|
||||
public:
|
||||
GetAllMappingsRequest();
|
||||
|
||||
Q_INVOKABLE void start();
|
||||
|
||||
AssetServerError getError() { return _error; }
|
||||
AssetMapping getMappings() { return _mappings; }
|
||||
AssetMapping getMappings() const { return _mappings; }
|
||||
|
||||
signals:
|
||||
void finished(GetAllMappingsRequest* thisRequest);
|
||||
|
||||
private:
|
||||
virtual void doStart() override;
|
||||
|
||||
std::map<AssetPath, AssetHash> _mappings;
|
||||
AssetServerError _error { AssetServerError::NoError };
|
||||
};
|
||||
|
||||
|
||||
|
|
Loading…
Reference in a new issue