diff options
Diffstat (limited to 'js/files.ts')
-rw-r--r-- | js/files.ts | 52 |
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. */ |