Skip to content

Commit d1072f3

Browse files
committed
Refactor getStyles and getEvents
Add new function fetchFromWorker with callback to allow fetch the response from worker Add callbacks to getStyles and getEvents functions
1 parent ed8d9a5 commit d1072f3

File tree

2 files changed

+48
-13
lines changed

2 files changed

+48
-13
lines changed

src/post-worker.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -594,6 +594,7 @@ function onMessageFromMainEmscriptenThread(message) {
594594
for (var i = 0; i < self.octObj.getEventCount(); i++) {
595595
var evnt_ptr = self.octObj.track.get_events(i);
596596
var event = {
597+
_index: i,
597598
Start: evnt_ptr.get_Start(),
598599
Duration: evnt_ptr.get_Duration(),
599600
ReadOrder: evnt_ptr.get_ReadOrder(),
@@ -636,6 +637,7 @@ function onMessageFromMainEmscriptenThread(message) {
636637
for (var i = 0; i < self.octObj.getStyleCount(); i++) {
637638
var styl_ptr = self.octObj.track.get_styles(i);
638639
var style = {
640+
_index: i,
639641
Name: styl_ptr.get_Name(),
640642
FontName: styl_ptr.get_FontName(),
641643
FontSize: styl_ptr.get_FontSize(),

src/subtitles-octopus.js

Lines changed: 46 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -91,8 +91,8 @@ var SubtitlesOctopus = function (options) {
9191
// Worker
9292
if (!self.worker) {
9393
self.worker = new Worker(self.workerUrl);
94-
self.worker.onmessage = self.onWorkerMessage;
95-
self.worker.onerror = self.workerError;
94+
self.worker.addEventListener('message', self.onWorkerMessage);
95+
self.worker.addEventListener('error', self.workerError);
9696
}
9797
self.workerActive = false;
9898
self.createCanvas();
@@ -390,13 +390,9 @@ var SubtitlesOctopus = function (options) {
390390
break;
391391
}
392392
case 'get-events': {
393-
console.log(data.target);
394-
console.log(data.events);
395393
break;
396394
}
397395
case 'get-styles': {
398-
console.log(data.target);
399-
console.log(data.styles);
400396
break;
401397
}
402398
case 'ready': {
@@ -558,17 +554,52 @@ var SubtitlesOctopus = function (options) {
558554
}
559555
};
560556

557+
self.fetchFromWorker = function (workerOptions, onSuccess, onError) {
558+
try {
559+
var target = workerOptions['target']
560+
561+
var timeout = setTimeout(function() {
562+
reject(Error('Error: Timeout while try to fetch ' + target))
563+
}, 5000)
564+
565+
var resolve = function (event) {
566+
if (event.data.target == target) {
567+
onSuccess(event.data)
568+
self.worker.removeEventListener('message', resolve)
569+
self.worker.removeEventListener('error', reject)
570+
clearTimeout(timeout)
571+
}
572+
}
573+
574+
var reject = function (event) {
575+
onError(event)
576+
self.worker.removeEventListener('message', resolve)
577+
self.worker.removeEventListener('error', reject)
578+
clearTimeout(timeout)
579+
}
580+
581+
self.worker.addEventListener('message', resolve)
582+
self.worker.addEventListener('error', reject)
583+
584+
self.worker.postMessage(workerOptions)
585+
} catch (error) {
586+
onError(error)
587+
}
588+
}
589+
561590
self.createEvent = function (event) {
562591
self.worker.postMessage({
563592
target: 'create-event',
564593
event: event
565594
});
566595
};
567596

568-
self.getEvents = function () {
569-
self.worker.postMessage({
597+
self.getEvents = function (onSuccess, onError) {
598+
self.fetchFromWorker({
570599
target: 'get-events'
571-
});
600+
}, function(data) {
601+
onSuccess(data.events)
602+
}, onError);
572603
};
573604

574605
self.setEvent = function (event, index) {
@@ -592,11 +623,13 @@ var SubtitlesOctopus = function (options) {
592623
style: style
593624
});
594625
};
595-
596-
self.getStyles = function () {
597-
self.worker.postMessage({
626+
627+
self.getStyles = function (onSuccess, onError) {
628+
self.fetchFromWorker({
598629
target: 'get-styles'
599-
});
630+
}, function(data) {
631+
onSuccess(data.styles)
632+
}, onError);
600633
};
601634

602635
self.setStyle = function (style, index) {

0 commit comments

Comments
 (0)