src/worker/DataProcessor.js
- import { HermiteData } from "../volume/HermiteData";
-
- /**
- * An empty set of Hermite data.
- *
- * @type {HermiteData}
- * @private
- * @final
- */
-
- const data = new HermiteData(false);
-
- /**
- * A volume data processor.
- *
- * @implements {TransferableContainer}
- */
-
- export class DataProcessor {
-
- /**
- * Constructs a new data processor.
- */
-
- constructor() {
-
- /**
- * A set of Hermite data that will be used during processing.
- *
- * @type {HermiteData}
- * @protected
- */
-
- this.data = null;
-
- /**
- * A container for the data that will be returned to the main thread.
- *
- * @type {DataMessage}
- * @protected
- */
-
- this.response = null;
-
- }
-
- /**
- * Returns the data of this processor.
- *
- * @return {HermiteData} The data.
- */
-
- getData() {
-
- return this.data;
-
- }
-
- /**
- * Prepares a response that can be send back to the main thread.
- *
- * Should be used together with {@link DataProcessor#createTransferList}.
- *
- * @return {DataMessage} A response.
- */
-
- respond() {
-
- this.response.data = this.data.serialize();
-
- return this.response;
-
- }
-
- /**
- * Creates a list of transferable items.
- *
- * @param {Array} [transferList] - An optional target list. The transferable items will be added to this list.
- * @return {Transferable[]} The transfer list.
- */
-
- createTransferList(transferList = []) {
-
- if(this.data !== null) {
-
- this.data.createTransferList(transferList);
-
- }
-
- return transferList;
-
- }
-
- /**
- * Processes the given request.
- *
- * @param {DataMessage} request - A request.
- * @return {DataProcessor} This processor.
- */
-
- process(request) {
-
- this.data = data.deserialize(request.data);
-
- return this;
-
- }
-
- }