summaryrefslogtreecommitdiff
path: root/js/files.ts
diff options
context:
space:
mode:
authorBartek IwaƄczuk <biwanczuk@gmail.com>2019-08-24 15:02:42 +0200
committerRyan Dahl <ry@tinyclouds.org>2019-08-24 06:02:42 -0700
commit79f82cf10ed1dbf91346994250d7311a4d74377a (patch)
treeb00755d666198b9c66264a3c240f849096951e2f /js/files.ts
parent5b2baa5c990fbeae747e952c5dcd7a5369e950b1 (diff)
port ops to JSON: compiler, errors, fetch, files (#2804)
Diffstat (limited to 'js/files.ts')
-rw-r--r--js/files.ts52
1 files changed, 13 insertions, 39 deletions
diff --git a/js/files.ts b/js/files.ts
index 6f0e523c9..4eff17aac 100644
--- a/js/files.ts
+++ b/js/files.ts
@@ -12,37 +12,22 @@ import {
} from "./io";
import { sendAsyncMinimal } from "./dispatch_minimal";
import { assert } from "./util";
-import { sendAsync, sendSync, msg, flatbuffers } from "./dispatch_flatbuffers";
+import * as dispatch from "./dispatch";
+import {
+ sendSync as sendSyncJson,
+ sendAsync as sendAsyncJson
+} from "./dispatch_json";
+import { sendSync, msg, flatbuffers } from "./dispatch_flatbuffers";
import { OP_READ, OP_WRITE } from "./dispatch";
-function reqOpen(
- filename: string,
- mode: OpenMode
-): [flatbuffers.Builder, msg.Any, flatbuffers.Offset] {
- const builder = flatbuffers.createBuilder();
- const filename_ = builder.createString(filename);
- const mode_ = builder.createString(mode);
- const inner = msg.Open.createOpen(builder, filename_, 0, mode_);
- return [builder, msg.Any.Open, inner];
-}
-
-function resOpen(baseRes: null | msg.Base): File {
- assert(baseRes != null);
- assert(msg.Any.OpenRes === baseRes!.innerType());
- const res = new msg.OpenRes();
- assert(baseRes!.inner(res) != null);
- const rid = res.rid();
- // eslint-disable-next-line @typescript-eslint/no-use-before-define
- return new File(rid);
-}
-
/** Open a file and return an instance of the `File` object
* synchronously.
*
* const file = Deno.openSync("/foo/bar.txt");
*/
export function openSync(filename: string, mode: OpenMode = "r"): File {
- return resOpen(sendSync(...reqOpen(filename, mode)));
+ const rid = sendSyncJson(dispatch.OP_OPEN, { filename, mode });
+ return new File(rid);
}
/** Open a file and return an instance of the `File` object.
@@ -55,7 +40,8 @@ export async function open(
filename: string,
mode: OpenMode = "r"
): Promise<File> {
- return resOpen(await sendAsync(...reqOpen(filename, mode)));
+ const rid = await sendAsyncJson(dispatch.OP_OPEN, { filename, mode });
+ return new File(rid);
}
function reqRead(
@@ -165,23 +151,13 @@ export async function write(rid: number, p: Uint8Array): Promise<number> {
}
}
-function reqSeek(
- rid: number,
- offset: number,
- whence: SeekMode
-): [flatbuffers.Builder, msg.Any, flatbuffers.Offset] {
- const builder = flatbuffers.createBuilder();
- const inner = msg.Seek.createSeek(builder, rid, offset, whence);
- return [builder, msg.Any.Seek, inner];
-}
-
/** Seek a file ID synchronously to the given offset under mode given by `whence`.
*
* const file = Deno.openSync("/foo/bar.txt");
* Deno.seekSync(file.rid, 0, 0);
*/
export function seekSync(rid: number, offset: number, whence: SeekMode): void {
- sendSync(...reqSeek(rid, offset, whence));
+ sendSyncJson(dispatch.OP_SEEK, { rid, offset, whence });
}
/** Seek a file ID to the given offset under mode given by `whence`.
@@ -196,14 +172,12 @@ export async function seek(
offset: number,
whence: SeekMode
): Promise<void> {
- await sendAsync(...reqSeek(rid, offset, whence));
+ await sendAsyncJson(dispatch.OP_SEEK, { rid, offset, whence });
}
/** Close the file ID. */
export function close(rid: number): void {
- const builder = flatbuffers.createBuilder();
- const inner = msg.Close.createClose(builder, rid);
- sendSync(builder, msg.Any.Close, inner);
+ sendSyncJson(dispatch.OP_CLOSE, { rid });
}
/** The Deno abstraction for reading and writing files. */