@fdm-monster/server
Version:
FDM Monster is a bulk OctoPrint manager to set up, configure and monitor 3D printers. Our aim is to provide extremely optimized websocket performance and reliability.
78 lines (77 loc) • 2.99 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
Object.defineProperty(exports, "FileUploadTrackerCache", {
enumerable: true,
get: function() {
return FileUploadTrackerCache;
}
});
const _correlationtokenutil = require("../utils/correlation-token.util");
const _eventconstants = require("../constants/event.constants");
class FileUploadTrackerCache {
eventEmitter2;
currentUploads;
logger;
constructor(loggerFactory, eventEmitter2){
this.eventEmitter2 = eventEmitter2;
this.currentUploads = [];
this.logger = loggerFactory(FileUploadTrackerCache.name);
this.eventEmitter2.on((0, _eventconstants.uploadProgressEvent)("*"), (token, progress)=>this.handleUploadProgress(token, progress));
this.eventEmitter2.on((0, _eventconstants.uploadDoneEvent)("*"), (token)=>this.handleUploadDone(token));
this.eventEmitter2.on((0, _eventconstants.uploadFailedEvent)("*"), (token, reason)=>this.handleUploadFailed(token, reason));
}
getUploads() {
return {
current: this.currentUploads
};
}
getUpload(correlationToken) {
return this.currentUploads.find((cu)=>cu.correlationToken === correlationToken);
}
addUploadTracker(multerFile, printerId) {
const correlationToken = (0, _correlationtokenutil.generateCorrelationToken)();
this.logger.log(`Starting upload session with token ${correlationToken}`);
this.currentUploads.push({
correlationToken,
printerId,
startedAt: Date.now(),
multerFile,
progress: 0,
completed: false,
completedAt: null,
success: null,
reason: null
});
return correlationToken;
}
handleUploadProgress(token, event) {
const upload = this.getUpload(token);
if (!upload) {
return;
}
upload.progress = event.progress ?? null;
}
handleUploadFailed(token, reason) {
this.logger.log(`Upload tracker ${token} completed with failure`);
this.markUploadDone(token, false, reason);
}
handleUploadDone(token) {
this.logger.log(`Upload tracker ${token} completed with success`);
this.markUploadDone(token, true);
}
markUploadDone(token, success, reason) {
const trackedUploadIndex = this.currentUploads.findIndex((cu)=>cu.correlationToken === token);
if (trackedUploadIndex === -1) {
this.logger.warn(`Could not mark upload tracker with correlation token '${token}' as done as it was not found.`);
return;
}
const trackedUpload = this.currentUploads[trackedUploadIndex];
trackedUpload.completed = true;
trackedUpload.success = success;
trackedUpload.completedAt = Date.now();
trackedUpload.reason = reason ?? null;
}
}
//# sourceMappingURL=file-upload-tracker.cache.js.map