mirror of
https://github.com/denoland/deno.git
synced 2025-09-27 20:59:10 +00:00
Revert json ops (#2814)
* Revert "port more ops to JSON (#2809)" This reverts commit137f33733d. * Revert "port ops to JSON: compiler, errors, fetch, files (#2804)" This reverts commit79f82cf10e. * Revert "Port rest of os ops to JSON (#2802)" This reverts commit5b2baa5c99.
This commit is contained in:
parent
bdc0a13261
commit
2235dd795d
45 changed files with 1968 additions and 1045 deletions
|
|
@ -1,8 +1,7 @@
|
|||
// Copyright 2018-2019 the Deno authors. All rights reserved. MIT license.
|
||||
/* eslint-disable @typescript-eslint/no-explicit-any */
|
||||
import * as dispatch from "./dispatch";
|
||||
import { sendAsync, sendSync } from "./dispatch_json";
|
||||
import { log } from "./util";
|
||||
import { sendAsync, sendSync, msg, flatbuffers } from "./dispatch_flatbuffers";
|
||||
import { assert, log } from "./util";
|
||||
import { TextDecoder, TextEncoder } from "./text_encoding";
|
||||
import { window } from "./window";
|
||||
import { blobURLMap } from "./url";
|
||||
|
|
@ -27,28 +26,61 @@ function createWorker(
|
|||
hasSourceCode: boolean,
|
||||
sourceCode: Uint8Array
|
||||
): number {
|
||||
return sendSync(dispatch.OP_CREATE_WORKER, {
|
||||
specifier,
|
||||
const builder = flatbuffers.createBuilder();
|
||||
const specifier_ = builder.createString(specifier);
|
||||
const sourceCode_ = builder.createString(sourceCode);
|
||||
const inner = msg.CreateWorker.createCreateWorker(
|
||||
builder,
|
||||
specifier_,
|
||||
includeDenoNamespace,
|
||||
hasSourceCode,
|
||||
sourceCode: new TextDecoder().decode(sourceCode)
|
||||
});
|
||||
sourceCode_
|
||||
);
|
||||
const baseRes = sendSync(builder, msg.Any.CreateWorker, inner);
|
||||
assert(baseRes != null);
|
||||
assert(
|
||||
msg.Any.CreateWorkerRes === baseRes!.innerType(),
|
||||
`base.innerType() unexpectedly is ${baseRes!.innerType()}`
|
||||
);
|
||||
const res = new msg.CreateWorkerRes();
|
||||
assert(baseRes!.inner(res) != null);
|
||||
return res.rid();
|
||||
}
|
||||
|
||||
async function hostGetWorkerClosed(rid: number): Promise<void> {
|
||||
await sendAsync(dispatch.OP_HOST_GET_WORKER_CLOSED, { rid });
|
||||
const builder = flatbuffers.createBuilder();
|
||||
const inner = msg.HostGetWorkerClosed.createHostGetWorkerClosed(builder, rid);
|
||||
await sendAsync(builder, msg.Any.HostGetWorkerClosed, inner);
|
||||
}
|
||||
|
||||
function hostPostMessage(rid: number, data: any): void {
|
||||
const dataIntArray = encodeMessage(data);
|
||||
sendSync(dispatch.OP_HOST_POST_MESSAGE, { rid }, dataIntArray);
|
||||
const builder = flatbuffers.createBuilder();
|
||||
const inner = msg.HostPostMessage.createHostPostMessage(builder, rid);
|
||||
const baseRes = sendSync(
|
||||
builder,
|
||||
msg.Any.HostPostMessage,
|
||||
inner,
|
||||
dataIntArray
|
||||
);
|
||||
assert(baseRes != null);
|
||||
}
|
||||
|
||||
async function hostGetMessage(rid: number): Promise<any> {
|
||||
const res = await sendAsync(dispatch.OP_HOST_GET_MESSAGE, { rid });
|
||||
const builder = flatbuffers.createBuilder();
|
||||
const inner = msg.HostGetMessage.createHostGetMessage(builder, rid);
|
||||
const baseRes = await sendAsync(builder, msg.Any.HostGetMessage, inner);
|
||||
assert(baseRes != null);
|
||||
assert(
|
||||
msg.Any.HostGetMessageRes === baseRes!.innerType(),
|
||||
`base.innerType() unexpectedly is ${baseRes!.innerType()}`
|
||||
);
|
||||
const res = new msg.HostGetMessageRes();
|
||||
assert(baseRes!.inner(res) != null);
|
||||
|
||||
if (res.data != null) {
|
||||
return decodeMessage(new Uint8Array(res.data));
|
||||
const dataArray = res.dataArray();
|
||||
if (dataArray != null) {
|
||||
return decodeMessage(dataArray);
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
|
|
@ -59,15 +91,36 @@ export let onmessage: (e: { data: any }) => void = (): void => {};
|
|||
|
||||
export function postMessage(data: any): void {
|
||||
const dataIntArray = encodeMessage(data);
|
||||
sendSync(dispatch.OP_WORKER_POST_MESSAGE, {}, dataIntArray);
|
||||
const builder = flatbuffers.createBuilder();
|
||||
const inner = msg.WorkerPostMessage.createWorkerPostMessage(builder);
|
||||
const baseRes = sendSync(
|
||||
builder,
|
||||
msg.Any.WorkerPostMessage,
|
||||
inner,
|
||||
dataIntArray
|
||||
);
|
||||
assert(baseRes != null);
|
||||
}
|
||||
|
||||
export async function getMessage(): Promise<any> {
|
||||
log("getMessage");
|
||||
const res = await sendAsync(dispatch.OP_WORKER_GET_MESSAGE);
|
||||
const builder = flatbuffers.createBuilder();
|
||||
const inner = msg.WorkerGetMessage.createWorkerGetMessage(
|
||||
builder,
|
||||
0 /* unused */
|
||||
);
|
||||
const baseRes = await sendAsync(builder, msg.Any.WorkerGetMessage, inner);
|
||||
assert(baseRes != null);
|
||||
assert(
|
||||
msg.Any.WorkerGetMessageRes === baseRes!.innerType(),
|
||||
`base.innerType() unexpectedly is ${baseRes!.innerType()}`
|
||||
);
|
||||
const res = new msg.WorkerGetMessageRes();
|
||||
assert(baseRes!.inner(res) != null);
|
||||
|
||||
if (res.data != null) {
|
||||
return decodeMessage(new Uint8Array(res.data));
|
||||
const dataArray = res.dataArray();
|
||||
if (dataArray != null) {
|
||||
return decodeMessage(dataArray);
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue