mirror of
https://github.com/nextcloud/desktop.git
synced 2024-12-18 03:41:50 +03:00
don't use member variable of the propagator
This commit is contained in:
parent
9ce47c9675
commit
07ce6cfa79
4 changed files with 29 additions and 19 deletions
|
@ -56,6 +56,7 @@ CSyncThread::CSyncThread(CSYNC *csync, const QString &localPath, const QString &
|
||||||
_csync_ctx = csync;
|
_csync_ctx = csync;
|
||||||
_mutex.unlock();
|
_mutex.unlock();
|
||||||
qRegisterMetaType<SyncFileItem>("SyncFileItem");
|
qRegisterMetaType<SyncFileItem>("SyncFileItem");
|
||||||
|
qRegisterMetaType<CSYNC_ERROR_CODE>("CSYNC_ERROR_CODE");
|
||||||
}
|
}
|
||||||
|
|
||||||
CSyncThread::~CSyncThread()
|
CSyncThread::~CSyncThread()
|
||||||
|
@ -350,8 +351,8 @@ void CSyncThread::startSync()
|
||||||
|
|
||||||
_progressDataBase.load(_localPath);
|
_progressDataBase.load(_localPath);
|
||||||
_propagator.reset(new OwncloudPropagator (session, _localPath, _remotePath, &_progressDataBase));
|
_propagator.reset(new OwncloudPropagator (session, _localPath, _remotePath, &_progressDataBase));
|
||||||
connect(_propagator.data(), SIGNAL(completed(SyncFileItem)),
|
connect(_propagator.data(), SIGNAL(completed(SyncFileItem, CSYNC_ERROR_CODE)),
|
||||||
this, SLOT(transferCompleted(SyncFileItem)), Qt::QueuedConnection);
|
this, SLOT(transferCompleted(SyncFileItem, CSYNC_ERROR_CODE)), Qt::QueuedConnection);
|
||||||
_iterator = 0;
|
_iterator = 0;
|
||||||
startNextTransfer();
|
startNextTransfer();
|
||||||
|
|
||||||
|
@ -361,24 +362,25 @@ void CSyncThread::startSync()
|
||||||
// }
|
// }
|
||||||
}
|
}
|
||||||
|
|
||||||
void CSyncThread::transferCompleted(const SyncFileItem &item)
|
void CSyncThread::transferCompleted(const SyncFileItem &item, CSYNC_ERROR_CODE error)
|
||||||
{
|
{
|
||||||
Action a;
|
Action a;
|
||||||
a.instruction = _propagator->_instruction;
|
a.instruction = item._instruction;
|
||||||
|
|
||||||
// if the propagator had an error for a file, put the error string into the synced item
|
// if the propagator had an error for a file, put the error string into the synced item
|
||||||
if( _propagator->_errorCode != CSYNC_ERR_NONE
|
if( error != CSYNC_ERR_NONE
|
||||||
|| a.instruction == CSYNC_INSTRUCTION_ERROR) {
|
|| a.instruction == CSYNC_INSTRUCTION_ERROR) {
|
||||||
|
|
||||||
// search for the item in the starting from _iterator because it should be a bit before it.
|
// Search for the item in the starting from _iterator because it should be a bit before it.
|
||||||
|
// This works because SyncFileItem::operator== only compare the file name;
|
||||||
int idx = _syncedItems.lastIndexOf(item, _iterator);
|
int idx = _syncedItems.lastIndexOf(item, _iterator);
|
||||||
if (idx >= 0) {
|
if (idx >= 0) {
|
||||||
_syncedItems[idx]._instruction = CSYNC_INSTRUCTION_ERROR;
|
_syncedItems[idx]._instruction = CSYNC_INSTRUCTION_ERROR;
|
||||||
_syncedItems[idx]._errorString = csyncErrorToString( _propagator->_errorCode );
|
_syncedItems[idx]._errorString = csyncErrorToString( error );
|
||||||
_syncedItems[idx]._errorDetail = _propagator->_errorString;
|
_syncedItems[idx]._errorDetail = item._errorString;
|
||||||
_syncedItems[idx]._httpCode = _propagator->_httpStatusCode;
|
_syncedItems[idx]._httpCode = item._httpCode;
|
||||||
qDebug() << "File " << item._file << " propagator error " << _syncedItems[idx]._errorString
|
qDebug() << "File " << item._file << " propagator error " << _syncedItems[idx]._errorString
|
||||||
<< "(" << _propagator->_errorString << ")";
|
<< "(" << item._errorString << ")";
|
||||||
}
|
}
|
||||||
|
|
||||||
if (item._isDirectory && item._instruction == CSYNC_INSTRUCTION_REMOVE
|
if (item._isDirectory && item._instruction == CSYNC_INSTRUCTION_REMOVE
|
||||||
|
@ -389,7 +391,7 @@ void CSyncThread::transferCompleted(const SyncFileItem &item)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
a.etag = _propagator->_etag;
|
a.etag = item._etag;
|
||||||
_performedActions.insert(item._originalFile, a);
|
_performedActions.insert(item._originalFile, a);
|
||||||
|
|
||||||
if (item._instruction == CSYNC_INSTRUCTION_RENAME) {
|
if (item._instruction == CSYNC_INSTRUCTION_RENAME) {
|
||||||
|
|
|
@ -31,6 +31,8 @@
|
||||||
|
|
||||||
class QProcess;
|
class QProcess;
|
||||||
|
|
||||||
|
Q_DECLARE_METATYPE(CSYNC_ERROR_CODE)
|
||||||
|
|
||||||
namespace Mirall {
|
namespace Mirall {
|
||||||
|
|
||||||
class OwncloudPropagator;
|
class OwncloudPropagator;
|
||||||
|
@ -70,7 +72,7 @@ signals:
|
||||||
void started();
|
void started();
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void transferCompleted(const SyncFileItem &);
|
void transferCompleted(const SyncFileItem& item, CSYNC_ERROR_CODE error);
|
||||||
void startNextTransfer();
|
void startNextTransfer();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
|
@ -85,7 +85,12 @@ void OwncloudPropagator::propagate(const SyncFileItem &item)
|
||||||
_instruction = item._instruction;
|
_instruction = item._instruction;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
emit completed(item);
|
SyncFileItem newItem = item;
|
||||||
|
newItem._instruction = _instruction;
|
||||||
|
newItem._errorDetail = _errorString;
|
||||||
|
newItem._httpCode = _httpStatusCode;
|
||||||
|
newItem._etag = _etag;
|
||||||
|
emit completed(newItem, _errorCode);
|
||||||
}
|
}
|
||||||
|
|
||||||
// compare two files with given filename and return true if they have the same content
|
// compare two files with given filename and return true if they have the same content
|
||||||
|
|
|
@ -36,6 +36,11 @@ class OwncloudPropagator : public QObject {
|
||||||
ne_session_s *_session;
|
ne_session_s *_session;
|
||||||
ProgressDatabase *_progressDb;
|
ProgressDatabase *_progressDb;
|
||||||
|
|
||||||
|
QString _errorString;
|
||||||
|
CSYNC_ERROR_CODE _errorCode;
|
||||||
|
int _httpStatusCode;
|
||||||
|
csync_instructions_e _instruction;
|
||||||
|
|
||||||
bool check_neon_session();
|
bool check_neon_session();
|
||||||
|
|
||||||
|
|
||||||
|
@ -68,15 +73,11 @@ public:
|
||||||
if (!remoteDir.endsWith(QChar('/'))) _remoteDir+='/';
|
if (!remoteDir.endsWith(QChar('/'))) _remoteDir+='/';
|
||||||
}
|
}
|
||||||
void propagate(const SyncFileItem &);
|
void propagate(const SyncFileItem &);
|
||||||
QString _errorString;
|
|
||||||
CSYNC_ERROR_CODE _errorCode;
|
|
||||||
int _httpStatusCode;
|
|
||||||
bool _hasFatalError;
|
|
||||||
QByteArray _etag;
|
QByteArray _etag;
|
||||||
csync_instructions_e _instruction;
|
bool _hasFatalError;
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void completed(const SyncFileItem &);
|
void completed(const SyncFileItem &, CSYNC_ERROR_CODE);
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue