UNPKG

modern-netcdf

Version:
40 lines (37 loc) 1.16 kB
const { parentPort, workerData } = require('worker_threads'); const path = require('path'); const { NetCDFReader } = require('..'); let reader = null; async function handleMessage(msg) { const { id, cmd, payload } = msg; try { switch (cmd) { case 'open': { const { source, options } = payload; reader = await NetCDFReader.open(source, options); parentPort.postMessage({ id, result: 'ok' }); break; } case 'getData': { const { variable, slice } = payload; if (!reader) throw new Error('Reader not open'); const data = await reader.getData(variable, slice); parentPort.postMessage({ id, result: data }, [ ArrayBuffer.isView(data) ? data.buffer : undefined ].filter(Boolean)); break; } case 'close': { if (reader) reader.close(); reader = null; parentPort.postMessage({ id, result: 'closed' }); break; } default: throw new Error('Unknown command'); } } catch (err) { parentPort.postMessage({ id, error: err.message }); } } parentPort.on('message', handleMessage);