refactor: Move bin ops to deno_core and unify logic with json ops (#9457)

This commit moves implementation of bin ops to "deno_core" crates
as well as unifying logic between bin ops and json ops to reuse
as much code as possible (both in Rust and JavaScript).
This commit is contained in:
Inteon 2021-03-20 17:51:08 +01:00 committed by GitHub
parent 0d26a82ea9
commit 1251c89321
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
16 changed files with 410 additions and 606 deletions

View file

@ -6,8 +6,8 @@
"use strict";
((window) => {
const core = window.Deno.core;
const DEFAULT_BUFFER_SIZE = 32 * 1024;
const { bufferOpSync, bufferOpAsync } = window.__bootstrap.dispatchBuffer;
// Seek whence values.
// https://golang.org/pkg/io/#pkg-constants
const SeekMode = {
@ -81,7 +81,7 @@
return 0;
}
const nread = bufferOpSync("op_read_sync", rid, buffer);
const nread = core.binOpSync("op_read_sync", rid, buffer);
if (nread < 0) {
throw new Error("read error");
}
@ -97,7 +97,7 @@
return 0;
}
const nread = await bufferOpAsync("op_read_async", rid, buffer);
const nread = await core.binOpAsync("op_read_async", rid, buffer);
if (nread < 0) {
throw new Error("read error");
}
@ -106,7 +106,7 @@
}
function writeSync(rid, data) {
const result = bufferOpSync("op_write_sync", rid, data);
const result = core.binOpSync("op_write_sync", rid, data);
if (result < 0) {
throw new Error("write error");
}
@ -115,7 +115,7 @@
}
async function write(rid, data) {
const result = await bufferOpAsync("op_write_async", rid, data);
const result = await core.binOpAsync("op_write_async", rid, data);
if (result < 0) {
throw new Error("write error");
}