Skip to content

Commit d6a620d

Browse files
committed
in progress file manager updates
1 parent 79aba1b commit d6a620d

3 files changed

Lines changed: 25 additions & 31 deletions

File tree

lib/js/src/manager/file/_FileManagerBase.js

Lines changed: 4 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,6 @@ class _FileManagerBase extends _SubManagerBase {
151151
this._bytesAvailable = bytesAvailable;
152152
this._remoteFiles = _ArrayTools.arrayRemove(this._remoteFiles, fileName);
153153
this._uploadedEphemeralFileNames = _ArrayTools.arrayRemove(this._uploadedEphemeralFileNames, fileName);
154-
this._updatePendingOperationsWithNewRemoteFiles();
155154
}
156155
listener(success, bytesAvailable, fileNames, errorMessage);
157156
});
@@ -237,12 +236,6 @@ class _FileManagerBase extends _SubManagerBase {
237236
return;
238237
}
239238

240-
const msgVersion = this._lifecycleManager.getSdlMsgVersion();
241-
const rpcVersion = new Version(msgVersion.getMajorVersion(), msgVersion.getMinorVersion(), msgVersion.getPatchVersion());
242-
if (!file.isPersistent() && !this.hasUploadedFile(file) && new Version(4, 0, 0).isNewerThan(rpcVersion) === 1) {
243-
file.setOverwrite(true);
244-
}
245-
246239
this._sdlUploadFilePrivate(file, listener);
247240
}
248241

@@ -252,16 +245,16 @@ class _FileManagerBase extends _SubManagerBase {
252245
* @param {Function} listener - listener called when the upload has finished
253246
*/
254247
_sdlUploadFilePrivate (file, listener) {
255-
const fileName = file.getName();
248+
const fileClone = file.clone();
249+
const fileName = fileClone.getName();
256250

257-
const fileWrapper = new _SdlFileWrapper(file, (success, bytesAvailable, fileNames, errorMessage) => {
251+
const fileWrapper = new _SdlFileWrapper(fileClone, (success, bytesAvailable, fileNames, errorMessage) => {
258252
if (success) {
259253
this._bytesAvailable = bytesAvailable;
260254
this._remoteFiles.push(fileName);
261255
if (!file.isPersistent()) {
262256
this._uploadedEphemeralFileNames.push(fileName);
263257
}
264-
this._updatePendingOperationsWithNewRemoteFiles();
265258
} else if (errorMessage !== 'File is already on the head unit, aborting upload operation') {
266259
this._incrementFailedUploadCountForFileName(fileName, this._failedFileUploadsCount);
267260

@@ -278,7 +271,7 @@ class _FileManagerBase extends _SubManagerBase {
278271
}
279272
});
280273

281-
const operation = new _UploadFileOperation(this._lifecycleManager, this, fileWrapper, this._remoteFiles);
274+
const operation = new _UploadFileOperation(this._lifecycleManager, this, fileWrapper);
282275
this._addTask(operation);
283276
}
284277

@@ -416,17 +409,6 @@ class _FileManagerBase extends _SubManagerBase {
416409
}
417410
return false;
418411
}
419-
420-
_updatePendingOperationsWithNewRemoteFiles () {
421-
for (const op of this._getTasks()) {
422-
if (op.getState() === _Task.IN_PROGRESS || op.getState() === _Task.CANCELED) {
423-
continue;
424-
}
425-
if (op instanceof _UploadFileOperation || op instanceof _DeleteFileOperation) {
426-
op.setRemoteFiles(this._remoteFiles);
427-
}
428-
}
429-
}
430412
}
431413

432414
const SPACE_AVAILABLE_MAX_VALUE = _FileManagerBase.SPACE_AVAILABLE_MAX_VALUE = 2000000000;

lib/js/src/manager/file/_UploadFileOperation.js

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import { PutFile } from '../../rpc/messages/PutFile';
44
import { _Task } from '../_Task';
55
import { _FileManagerBase } from './_FileManagerBase';
66
import { _FileUtils } from '../../util/_FileUtils';
7+
import { Version } from '../../util/Version';
78

89
class _UploadFileOperation extends _Task {
910
/**
@@ -12,14 +13,12 @@ class _UploadFileOperation extends _Task {
1213
* @param {_LifecycleManager} lifecycleManager - An instance of _LifecycleManager.
1314
* @param {FileManager} fileManager - An instance of FileManager.
1415
* @param {_SdlFileWrapper} fileWrapper - An instance of _SdlFileWrapper.
15-
* @param {String[]} remoteFileNames - A list of file names uploaded to the system.
1616
*/
17-
constructor (lifecycleManager = null, fileManager = null, fileWrapper = null, remoteFileNames = []) {
17+
constructor (lifecycleManager = null, fileManager = null, fileWrapper = null) {
1818
super('UploadFileOperation');
1919
this._lifecycleManager = lifecycleManager;
2020
this._fileManager = fileManager;
2121
this._fileWrapper = fileWrapper;
22-
this._remoteFileNames = remoteFileNames;
2322
}
2423

2524
/**
@@ -40,7 +39,14 @@ class _UploadFileOperation extends _Task {
4039
return;
4140
}
4241

43-
if (!this._fileWrapper.getFile().getOverwrite() && this._remoteFileNames.includes(this._fileWrapper.getFile().getName())) {
42+
const file = this._fileWrapper.getFile();
43+
const msgVersion = this._lifecycleManager.getSdlMsgVersion();
44+
const rpcVersion = new Version(msgVersion.getMajorVersion(), msgVersion.getMinorVersion(), msgVersion.getPatchVersion());
45+
if (!file.isPersistent() && !this.hasUploadedFile(file) && new Version(4, 4, 0).isNewerThan(rpcVersion) === 1) {
46+
file.setOverwrite(true);
47+
}
48+
49+
if (!this._fileManager.fileNeedsUpload(file)) {
4450
const errorMessage = 'File is already on the head unit, aborting upload operation';
4551
console.log(errorMessage);
4652
this._fileWrapper.getCompletionListener(false, null, null, errorMessage);
@@ -51,7 +57,7 @@ class _UploadFileOperation extends _Task {
5157
if (this._lifecycleManager !== null) {
5258
mtuSize = this._lifecycleManager.getMtu(_ServiceType.RPC);
5359
}
54-
await this._sendFile(this._fileWrapper.getFile(), mtuSize, this._fileWrapper.getCompletionListener());
60+
await this._sendFile(file, mtuSize, this._fileWrapper.getCompletionListener());
5561
}
5662

5763
/**
@@ -249,10 +255,6 @@ class _UploadFileOperation extends _Task {
249255
const maxJSONSize = this._getMaxJSONSize(file, fileSize);
250256
return mtuSize - (frameHeaderSize + binaryHeaderSize + maxJSONSize);
251257
}
252-
253-
setRemoteFiles (remoteFiles) {
254-
this._remoteFileNames = remoteFiles;
255-
}
256258
}
257259

258260
export { _UploadFileOperation };

lib/js/src/manager/file/filetypes/SdlFile.js

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -215,6 +215,16 @@ class SdlFile {
215215
}
216216
return true;
217217
}
218+
219+
/**
220+
* Creates a deep copy of the object
221+
* @returns {ChoiceCell} - A deep copy of the object
222+
*/
223+
clone () {
224+
const clonedParams = Object.assign({}, this); // shallow copy
225+
226+
return Object.assign(new SdlFile(this.getName(), this.getType(), this.getFileData(), this.isPersistent()), clonedParams);
227+
}
218228
}
219229

220230

0 commit comments

Comments
 (0)