From e438ac2c74c823882dc9c9ecde2a9e9ed7bcfb4b Mon Sep 17 00:00:00 2001 From: Ryan Dahl Date: Wed, 7 Aug 2019 14:02:29 -0400 Subject: Add op_id throughout op API (#2734) Removes the magic number hack to switch between flatbuffers and the minimal dispatcher. Adds machinery to pass the op_id through the shared_queue. --- js/dispatch_minimal.ts | 45 ++++++++++++++++++--------------------------- 1 file changed, 18 insertions(+), 27 deletions(-) (limited to 'js/dispatch_minimal.ts') diff --git a/js/dispatch_minimal.ts b/js/dispatch_minimal.ts index 17d328110..df0a290b2 100644 --- a/js/dispatch_minimal.ts +++ b/js/dispatch_minimal.ts @@ -3,7 +3,6 @@ import * as util from "./util"; import { core } from "./core"; -const DISPATCH_MINIMAL_TOKEN = 0xcafe; const promiseTableMin = new Map>(); let _nextPromiseId = 0; @@ -13,31 +12,27 @@ export function nextPromiseId(): number { export interface RecordMinimal { promiseId: number; - opId: number; + opId: number; // Maybe better called dispatchId arg: number; result: number; } -/** Determines if a message has the "minimal" serialization format. If false, it - * is flatbuffer encoded. - */ -export function hasMinimalToken(i32: Int32Array): boolean { - return i32[0] == DISPATCH_MINIMAL_TOKEN; -} - -export function recordFromBufMinimal(buf32: Int32Array): null | RecordMinimal { - if (hasMinimalToken(buf32)) { - return { - promiseId: buf32[1], - opId: buf32[2], - arg: buf32[3], - result: buf32[4] - }; +export function recordFromBufMinimal( + opId: number, + buf32: Int32Array +): RecordMinimal { + if (buf32.length != 3) { + throw Error("Bad message"); } - return null; + return { + promiseId: buf32[0], + opId, + arg: buf32[1], + result: buf32[2] + }; } -const scratch32 = new Int32Array(5); +const scratch32 = new Int32Array(3); const scratchBytes = new Uint8Array( scratch32.buffer, scratch32.byteOffset, @@ -63,15 +58,11 @@ export function sendAsyncMinimal( zeroCopy: Uint8Array ): Promise { const promiseId = nextPromiseId(); // AKA cmdId - - scratch32[0] = DISPATCH_MINIMAL_TOKEN; - scratch32[1] = promiseId; - scratch32[2] = opId; - scratch32[3] = arg; - + scratch32[0] = promiseId; + scratch32[1] = arg; + scratch32[2] = 0; // result const promise = util.createResolvable(); promiseTableMin.set(promiseId, promise); - - core.dispatch(scratchBytes, zeroCopy); + core.dispatch(opId, scratchBytes, zeroCopy); return promise; } -- cgit v1.2.3