summaryrefslogtreecommitdiff
path: root/cli/js
diff options
context:
space:
mode:
authorValentin Anger <syrupthinker@gryphno.de>2020-06-01 20:20:47 +0200
committerGitHub <noreply@github.com>2020-06-01 14:20:47 -0400
commitbecbb56b19e96e4dd72b861217a855fba953d290 (patch)
treed9e99771c537ef87a4a945f0120775c337ef90aa /cli/js
parent12d741c2fe453625d510313beaa2e1c282784c00 (diff)
feat(core): Ops can take several zero copy buffers (#4788)
Diffstat (limited to 'cli/js')
-rw-r--r--cli/js/globals.ts4
-rw-r--r--cli/js/ops/dispatch_json.ts8
-rw-r--r--cli/js/ops/fetch.ts2
3 files changed, 7 insertions, 7 deletions
diff --git a/cli/js/globals.ts b/cli/js/globals.ts
index 9908609be..09be63315 100644
--- a/cli/js/globals.ts
+++ b/cli/js/globals.ts
@@ -80,7 +80,7 @@ declare global {
dispatch(
opId: number,
control: Uint8Array,
- zeroCopy?: ArrayBufferView | null
+ ...zeroCopy: ArrayBufferView[]
): Uint8Array | null;
setAsyncHandler(opId: number, cb: (msg: Uint8Array) => void): void;
sharedQueue: {
@@ -99,7 +99,7 @@ declare global {
send(
opId: number,
control: null | ArrayBufferView,
- data?: ArrayBufferView
+ ...data: ArrayBufferView[]
): null | Uint8Array;
setMacrotaskCallback(cb: () => boolean): void;
diff --git a/cli/js/ops/dispatch_json.ts b/cli/js/ops/dispatch_json.ts
index 9ff0f13f5..6292c188a 100644
--- a/cli/js/ops/dispatch_json.ts
+++ b/cli/js/ops/dispatch_json.ts
@@ -59,12 +59,12 @@ export function asyncMsgFromRust(resUi8: Uint8Array): void {
export function sendSync(
opName: string,
args: object = {},
- zeroCopy?: Uint8Array
+ ...zeroCopy: Uint8Array[]
): Ok {
const opId = OPS_CACHE[opName];
util.log("sendSync", opName, opId);
const argsUi8 = encode(args);
- const resUi8 = core.dispatch(opId, argsUi8, zeroCopy);
+ const resUi8 = core.dispatch(opId, argsUi8, ...zeroCopy);
util.assert(resUi8 != null);
const res = decode(resUi8);
@@ -75,7 +75,7 @@ export function sendSync(
export async function sendAsync(
opName: string,
args: object = {},
- zeroCopy?: Uint8Array
+ ...zeroCopy: Uint8Array[]
): Promise<Ok> {
const opId = OPS_CACHE[opName];
util.log("sendAsync", opName, opId);
@@ -84,7 +84,7 @@ export async function sendAsync(
const promise = util.createResolvable<Ok>();
const argsUi8 = encode(args);
- const buf = core.dispatch(opId, argsUi8, zeroCopy);
+ const buf = core.dispatch(opId, argsUi8, ...zeroCopy);
if (buf) {
// Sync result.
const res = decode(buf);
diff --git a/cli/js/ops/fetch.ts b/cli/js/ops/fetch.ts
index 09b9ac1ec..290376c86 100644
--- a/cli/js/ops/fetch.ts
+++ b/cli/js/ops/fetch.ts
@@ -24,5 +24,5 @@ export function fetch(
zeroCopy = new Uint8Array(body.buffer, body.byteOffset, body.byteLength);
}
- return sendAsync("op_fetch", args, zeroCopy);
+ return sendAsync("op_fetch", args, ...(zeroCopy ? [zeroCopy] : []));
}