summaryrefslogtreecommitdiff
path: root/js/dispatch.ts
diff options
context:
space:
mode:
authorRyan Dahl <ry@tinyclouds.org>2019-03-14 19:17:52 -0400
committerRyan Dahl <ry@tinyclouds.org>2019-03-18 17:17:08 -0400
commit44773c9b0fe4ae90089c87aa46d049a0a58cccce (patch)
tree34bd66dc66dd59b9acd4bb0a48ea576610187e05 /js/dispatch.ts
parent33438b83a2a2597c2b9918475dd5362faa5c1728 (diff)
Integrate //core into existing code base
This disables a few tests which are broken still: - tests/error_004_missing_module.test - tests/error_005_missing_dynamic_import.test - tests/error_006_import_ext_failure.test - repl_test test_set_timeout - repl_test test_async_op - repl_test test_set_timeout_interlaced - all of permission_prompt_test
Diffstat (limited to 'js/dispatch.ts')
-rw-r--r--js/dispatch.ts29
1 files changed, 18 insertions, 11 deletions
diff --git a/js/dispatch.ts b/js/dispatch.ts
index 9dcd2f420..2e6cbf10f 100644
--- a/js/dispatch.ts
+++ b/js/dispatch.ts
@@ -1,5 +1,5 @@
// Copyright 2018-2019 the Deno authors. All rights reserved. MIT license.
-import { libdeno } from "./libdeno";
+import { window } from "./window";
import * as flatbuffers from "./flatbuffers";
import * as msg from "gen/msg_generated";
import * as errors from "./errors";
@@ -9,7 +9,6 @@ let nextCmdId = 0;
const promiseTable = new Map<number, util.Resolvable<msg.Base>>();
export function handleAsyncMsgFromRust(ui8: Uint8Array): void {
- util.assert(ui8 != null && ui8.length > 0);
const bb = new flatbuffers.ByteBuffer(ui8);
const base = msg.Base.getRootAsBase(bb);
const cmdId = base.cmdId();
@@ -28,7 +27,7 @@ function sendInternal(
builder: flatbuffers.Builder,
innerType: msg.Any,
inner: flatbuffers.Offset,
- data: undefined | ArrayBufferView,
+ zeroCopy: undefined | ArrayBufferView,
sync = true
): [number, null | Uint8Array] {
const cmdId = nextCmdId++;
@@ -38,9 +37,12 @@ function sendInternal(
msg.Base.addSync(builder, sync);
msg.Base.addCmdId(builder, cmdId);
builder.finish(msg.Base.endBase(builder));
- const res = libdeno.send(builder.asUint8Array(), data);
+
+ const control = builder.asUint8Array();
+ const response = window.DenoCore.dispatch(control, zeroCopy);
+
builder.inUse = false;
- return [cmdId, res];
+ return [cmdId, response];
}
// @internal
@@ -50,8 +52,14 @@ export function sendAsync(
inner: flatbuffers.Offset,
data?: ArrayBufferView
): Promise<msg.Base> {
- const [cmdId, resBuf] = sendInternal(builder, innerType, inner, data, false);
- util.assert(resBuf == null);
+ const [cmdId, response] = sendInternal(
+ builder,
+ innerType,
+ inner,
+ data,
+ false
+ );
+ util.assert(response == null);
const promise = util.createResolvable<msg.Base>();
promiseTable.set(cmdId, promise);
return promise;
@@ -64,13 +72,12 @@ export function sendSync(
inner: flatbuffers.Offset,
data?: ArrayBufferView
): null | msg.Base {
- const [cmdId, resBuf] = sendInternal(builder, innerType, inner, data, true);
+ const [cmdId, response] = sendInternal(builder, innerType, inner, data, true);
util.assert(cmdId >= 0);
- if (resBuf == null) {
+ if (response == null || response.length === 0) {
return null;
} else {
- const u8 = new Uint8Array(resBuf!);
- const bb = new flatbuffers.ByteBuffer(u8);
+ const bb = new flatbuffers.ByteBuffer(response);
const baseRes = msg.Base.getRootAsBase(bb);
errors.maybeThrowError(baseRes);
return baseRes;