@jbrowse/core
Version:
JBrowse 2 core libraries used by plugins
41 lines (40 loc) • 2.28 kB
JavaScript
import { validateRendererType } from "./util.js";
import RpcMethodType, { convertFileHandleLocations, } from "../../pluggableElementTypes/RpcMethodType.js";
import { renameRegionsIfNeeded } from "../../util/index.js";
import { getBlobMap, setBlobMap } from "../../util/tracks.js";
export default class CoreRender extends RpcMethodType {
name = 'CoreRender';
async serializeArguments(args, rpcDriver) {
const { rootModel } = this.pluginManager;
const assemblyManager = rootModel.session.assemblyManager;
const renamedArgs = await renameRegionsIfNeeded(assemblyManager, args);
const superArgs = (await super.serializeArguments(renamedArgs, rpcDriver));
return validateRendererType(args.rendererType, this.pluginManager.getRendererType(args.rendererType)).serializeArgsInClient(superArgs);
}
async executeDirect(args) {
const { rootModel } = this.pluginManager;
const assemblyManager = rootModel.session.assemblyManager;
const renamedArgs = await renameRegionsIfNeeded(assemblyManager, args);
const { sessionId, rendererType } = renamedArgs;
if (!sessionId) {
throw new Error('must pass a unique session id');
}
const { renderingProps, ...rest } = renamedArgs;
const blobMap = getBlobMap();
convertFileHandleLocations(rest, blobMap);
setBlobMap(blobMap);
return validateRendererType(rendererType, this.pluginManager.getRendererType(rendererType)).renderDirect({ ...rest, renderingProps });
}
async execute(args, rpcDriver) {
const deserializedArgs = await this.deserializeArguments(args, rpcDriver);
const { sessionId, rendererType } = deserializedArgs;
if (!sessionId) {
throw new Error('must pass a unique session id');
}
return validateRendererType(rendererType, this.pluginManager.getRendererType(rendererType)).renderInWorker(deserializedArgs);
}
async deserializeReturn(serializedReturn, args, rpcDriver) {
const des = await super.deserializeReturn(serializedReturn, args, rpcDriver);
return validateRendererType(args.rendererType, this.pluginManager.getRendererType(args.rendererType)).deserializeResultsInClient(des, args);
}
}