diff options
author | Bartek IwaĆczuk <biwanczuk@gmail.com> | 2020-09-16 22:22:43 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-09-16 22:22:43 +0200 |
commit | 6c4da0e429eb47dae6a220c5576a39f137615bb8 (patch) | |
tree | a8715428caea00105acc9a10fcd0f356085d3fa7 /core/core.js | |
parent | 104aebdfb5d01f7482bacef6d58c2ce16da44334 (diff) |
refactor: remove dispatch_json.js from cli/rt and cli/tsc (#7521)
Instead use Deno.core.jsonOpSync and Deno.core.jsonOpAsync
Diffstat (limited to 'core/core.js')
-rw-r--r-- | core/core.js | 28 |
1 files changed, 14 insertions, 14 deletions
diff --git a/core/core.js b/core/core.js index b84cb2e99..b0de55b2c 100644 --- a/core/core.js +++ b/core/core.js @@ -208,14 +208,14 @@ SharedQueue Binary Layout } function decodeJson(ui8) { - const s = Deno.core.decode(ui8); + const s = core.decode(ui8); return JSON.parse(s); } let nextPromiseId = 1; const promiseTable = {}; - function jsonOpAsync(opName, args, ...zeroCopy) { + async function jsonOpAsync(opName, args = {}, ...zeroCopy) { setAsyncHandler(opsCache[opName], jsonOpAsyncHandler); args.promiseId = nextPromiseId++; @@ -229,31 +229,31 @@ SharedQueue Binary Layout promise.resolve = resolve; promise.reject = reject; promiseTable[args.promiseId] = promise; - return promise; + const res = await promise; + if ("ok" in res) { + return res.ok; + } else { + throw new (getErrorClass(res.err.className))(res.err.message); + } } - function jsonOpSync(opName, args, ...zeroCopy) { + function jsonOpSync(opName, args = {}, ...zeroCopy) { const argsBuf = encodeJson(args); const res = dispatch(opName, argsBuf, ...zeroCopy); const r = decodeJson(res); if ("ok" in r) { return r.ok; } else { - throw r.err; + throw new (getErrorClass(r.err.className))(r.err.message); } } function jsonOpAsyncHandler(buf) { // Json Op. - const msg = decodeJson(buf); - const { ok, err, promiseId } = msg; - const promise = promiseTable[promiseId]; - delete promiseTable[promiseId]; - if (ok) { - promise.resolve(ok); - } else { - promise.reject(err); - } + const res = decodeJson(buf); + const promise = promiseTable[res.promiseId]; + delete promiseTable[res.promiseId]; + promise.resolve(res); } Object.assign(window.Deno.core, { |