Update LoaderWorker to not use messagechannels

This commit is contained in:
j433866 2019-05-01 14:13:40 +01:00
parent 55beb433f3
commit f6f60e8203

View File

@ -10,7 +10,7 @@ self.port = null;
self.id = null; self.id = null;
self.handlePortMessage = function(e) { self.handleMessage = function(e) {
const r = e.data; const r = e.data;
log.debug(`LoaderWorker receiving command '${r.action}'`); log.debug(`LoaderWorker receiving command '${r.action}'`);
@ -31,12 +31,8 @@ self.addEventListener("message", function(e) {
self.loadFile(r.file, r.inputNum); self.loadFile(r.file, r.inputNum);
} else if (r.hasOwnProperty("file")) { } else if (r.hasOwnProperty("file")) {
self.loadFile(r.file, ""); self.loadFile(r.file, "");
} else if (r.hasOwnProperty("port")) { } else if (r.hasOwnProperty("id")) {
self.port = r.port;
self.id = r.id; self.id = r.id;
self.port.onmessage = function(e) {
self.handlePortMessage(e);
};
} }
}); });
@ -50,7 +46,7 @@ self.addEventListener("message", function(e) {
self.loadFile = function(file, inputNum) { self.loadFile = function(file, inputNum) {
const reader = new FileReader(); const reader = new FileReader();
if (file.size >= 256*256*256*128) { if (file.size >= 256*256*256*128) {
self.port.postMessage({"error": "File size too large.", "inputNum": inputNum, "id": self.id}); self.postMessage({"error": "File size too large.", "inputNum": inputNum, "id": self.id});
return; return;
} }
const data = new Uint8Array(file.size); const data = new Uint8Array(file.size);
@ -59,10 +55,10 @@ self.loadFile = function(file, inputNum) {
const seek = function() { const seek = function() {
if (offset >= file.size) { if (offset >= file.size) {
self.port.postMessage({"fileBuffer": data.buffer, "inputNum": inputNum, "id": self.id}, [data.buffer]); self.postMessage({"fileBuffer": data.buffer, "inputNum": inputNum, "id": self.id}, [data.buffer]);
return; return;
} }
self.port.postMessage({"progress": Math.round(offset / file.size * 100), "inputNum": inputNum}); self.postMessage({"progress": Math.round(offset / file.size * 100), "inputNum": inputNum});
const slice = file.slice(offset, offset + CHUNK_SIZE); const slice = file.slice(offset, offset + CHUNK_SIZE);
reader.readAsArrayBuffer(slice); reader.readAsArrayBuffer(slice);
}; };
@ -74,7 +70,7 @@ self.loadFile = function(file, inputNum) {
}; };
reader.onerror = function(e) { reader.onerror = function(e) {
self.port.postMessage({"error": reader.error.message, "inputNum": inputNum}); self.postMessage({"error": reader.error.message, "inputNum": inputNum});
}; };
seek(); seek();