diff options
author | Kevin (Kun) "Kassimo" Qian <kevinkassimo@gmail.com> | 2019-02-18 15:26:41 -0800 |
---|---|---|
committer | Ryan Dahl <ry@tinyclouds.org> | 2019-02-18 18:26:41 -0500 |
commit | 077af20ceb0869ddff9e08f5db1055138450fe2e (patch) | |
tree | 6bc51ad2112d7828b3dbc641050f1b098d836254 /js/io.ts | |
parent | 97e29e3dd068c938ec5f8346183f8f523dea23c0 (diff) |
Add `seek` and implement `Seeker` on `File` (#1797)
This patch contains a special hack that circumvents the current tokio
seek problem.
tokio `seek` is implemented to take ownership of the original File and
emit a new one in its future, which conflicts with the design of
ResourceTable.
To avoid the problem, the current hack makes the FsFile resource
an Option which we could `take` the value ownership out of it. We then
convert the tokio File into a Rust std File, perform the seek, and then
put it back into the resource.
This might be able to drop this hack after
https://github.com/tokio-rs/tokio/pull/785 lands.
Diffstat (limited to 'js/io.ts')
-rw-r--r-- | js/io.ts | 10 |
1 files changed, 9 insertions, 1 deletions
@@ -9,6 +9,14 @@ export interface ReadResult { eof: boolean; } +// Seek whence values. +// https://golang.org/pkg/io/#pkg-constants +export enum SeekMode { + SEEK_START = 0, + SEEK_CURRENT = 1, + SEEK_END = 2 +} + // Reader is the interface that wraps the basic read() method. // https://golang.org/pkg/io/#Reader export interface Reader { @@ -74,7 +82,7 @@ export interface Seeker { * any positive offset is legal, but the behavior of subsequent I/O operations * on the underlying object is implementation-dependent. */ - seek(offset: number, whence: number): Promise<void>; + seek(offset: number, whence: SeekMode): Promise<void>; } // https://golang.org/pkg/io/#ReadCloser |