Add types for parser worker
This commit is contained in:
parent
c7dbc7d382
commit
598f77f73f
|
@ -63,6 +63,7 @@ import useServerStorage from '../hooks/useServerStorage';
|
|||
import { Routes } from '../routes';
|
||||
import { removeFilenameSuffix } from '../pocketbase';
|
||||
import { isAbortedRequest } from '../utils/error';
|
||||
import { WorkerOutput } from '../workers/mlgParser';
|
||||
|
||||
const { Content } = Layout;
|
||||
const { Step } = Steps;
|
||||
|
@ -96,7 +97,7 @@ const Logs = ({
|
|||
const [progress, setProgress] = useState(0);
|
||||
const [fileSize, setFileSize] = useState<string>();
|
||||
const [parseElapsed, setParseElapsed] = useState<string>();
|
||||
const [samplesCount, setSamplesCount] = useState();
|
||||
const [samplesCount, setSamplesCount] = useState<number>();
|
||||
const [fetchError, setFetchError] = useState<Error>();
|
||||
const [parseError, setParseError] = useState<Error>();
|
||||
const [step, setStep] = useState(0);
|
||||
|
@ -197,26 +198,26 @@ const Logs = ({
|
|||
|
||||
worker.postMessage(raw);
|
||||
|
||||
worker.onmessage = ({ data }) => {
|
||||
worker.onmessage = ({ data }: { data: WorkerOutput }) => {
|
||||
switch (data.type) {
|
||||
case 'progress':
|
||||
setStep(1);
|
||||
setProgress(data.progress);
|
||||
setParseElapsed(msToTime(data.elapsed));
|
||||
setProgress(data.progress!);
|
||||
setParseElapsed(msToTime(data.elapsed!));
|
||||
break;
|
||||
case 'result':
|
||||
setLogs(data.result);
|
||||
store.dispatch({
|
||||
type: 'logs/load', payload: {
|
||||
fileName: logFileName,
|
||||
logs: data.result.records,
|
||||
logs: data.result!.records,
|
||||
},
|
||||
});
|
||||
break;
|
||||
case 'metrics':
|
||||
console.info(`Log parsed in ${data.elapsed}ms`);
|
||||
setParseElapsed(msToTime(data.elapsed));
|
||||
setSamplesCount(data.records);
|
||||
setParseElapsed(msToTime(data.elapsed!));
|
||||
setSamplesCount(data.records!);
|
||||
setStep(2);
|
||||
break;
|
||||
case 'error':
|
||||
|
|
|
@ -1,11 +1,21 @@
|
|||
/* eslint-disable no-bitwise */
|
||||
|
||||
import { Parser } from 'mlg-converter';
|
||||
import { Result } from 'mlg-converter/dist/types';
|
||||
import Pako from 'pako';
|
||||
|
||||
// eslint-disable-next-line no-restricted-globals
|
||||
const ctx: Worker = self as any;
|
||||
|
||||
export interface WorkerOutput {
|
||||
type: 'progress' | 'metrics' | 'result' | 'error' ;
|
||||
progress?: number;
|
||||
result?: Result;
|
||||
error?: Error;
|
||||
elapsed?: number;
|
||||
records?: number;
|
||||
}
|
||||
|
||||
ctx.addEventListener('message', ({ data }: { data: ArrayBuffer }) => {
|
||||
try {
|
||||
const t0 = performance.now();
|
||||
|
@ -14,16 +24,16 @@ ctx.addEventListener('message', ({ data }: { data: ArrayBuffer }) => {
|
|||
type: 'progress',
|
||||
progress,
|
||||
elapsed: ~~(performance.now() - t0),
|
||||
});
|
||||
} as WorkerOutput);
|
||||
});
|
||||
ctx.postMessage({
|
||||
type: 'metrics',
|
||||
elapsed: ~~(performance.now() - t0),
|
||||
records: result.records.length,
|
||||
});
|
||||
ctx.postMessage({ type: 'result', result });
|
||||
} as WorkerOutput);
|
||||
ctx.postMessage({ type: 'result', result } as WorkerOutput);
|
||||
} catch (error) {
|
||||
ctx.postMessage({ type: 'error', error });
|
||||
ctx.postMessage({ type: 'error', error } as WorkerOutput);
|
||||
throw error;
|
||||
}
|
||||
});
|
||||
|
|
Loading…
Reference in New Issue