51 lines
1.6 KiB
TypeScript
51 lines
1.6 KiB
TypeScript
import { get } from "svelte/store";
|
|
import { queue } from "$lib/state/queen-bee/queue";
|
|
|
|
import { runRemuxWorker } from "$lib/queen-bee/runners/remux";
|
|
import { runFetchWorker } from "$lib/queen-bee/runners/fetch";
|
|
|
|
import type { CobaltPipelineItem } from "$lib/types/workers";
|
|
import type { CobaltFileReference } from "$lib/types/storage";
|
|
|
|
export const killWorker = (worker: Worker, unsubscribe: () => void, interval?: NodeJS.Timeout) => {
|
|
unsubscribe();
|
|
worker.terminate();
|
|
if (interval) clearInterval(interval);
|
|
}
|
|
|
|
export const startWorker = async ({ worker, workerId, parentId, workerArgs }: CobaltPipelineItem) => {
|
|
let files: CobaltFileReference[] = [];
|
|
|
|
switch (worker) {
|
|
case "remux":
|
|
if (workerArgs?.files) {
|
|
files = workerArgs.files;
|
|
}
|
|
|
|
if (files?.length === 0) {
|
|
const parent = get(queue)[parentId];
|
|
if (parent.state === "running" && parent.pipelineResults) {
|
|
files = parent.pipelineResults;
|
|
}
|
|
}
|
|
|
|
if (files.length > 0 && workerArgs.ffargs && workerArgs.output) {
|
|
await runRemuxWorker(
|
|
workerId,
|
|
parentId,
|
|
files,
|
|
workerArgs.ffargs,
|
|
workerArgs.output,
|
|
true, // resetStartCounter
|
|
);
|
|
}
|
|
break;
|
|
|
|
case "fetch":
|
|
if (workerArgs?.url) {
|
|
await runFetchWorker(workerId, parentId, workerArgs.url)
|
|
}
|
|
break;
|
|
}
|
|
}
|