summaryrefslogtreecommitdiff
path: root/js/io.ts
diff options
context:
space:
mode:
authorKevin (Kun) "Kassimo" Qian <kevinkassimo@gmail.com>2019-02-18 15:26:41 -0800
committerRyan Dahl <ry@tinyclouds.org>2019-02-18 18:26:41 -0500
commit077af20ceb0869ddff9e08f5db1055138450fe2e (patch)
tree6bc51ad2112d7828b3dbc641050f1b098d836254 /js/io.ts
parent97e29e3dd068c938ec5f8346183f8f523dea23c0 (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.ts10
1 files changed, 9 insertions, 1 deletions
diff --git a/js/io.ts b/js/io.ts
index f7dbf3318..7f56187c1 100644
--- a/js/io.ts
+++ b/js/io.ts
@@ -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