1
0
Fork 0
mirror of https://github.com/denoland/deno.git synced 2024-12-22 07:14:47 -05:00

feat: stabilize Deno.fsync and Deno.fdatasync (#8038)

This commit is contained in:
Casper Beyer 2020-10-20 21:52:10 +08:00 committed by GitHub
parent 070d99645f
commit dfe19c5c75
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 46 additions and 56 deletions

View file

@ -47,15 +47,11 @@ const UNSTABLE_DENO_PROPS: &[&str] = &[
"connect", "connect",
"consoleSize", "consoleSize",
"createHttpClient", "createHttpClient",
"fdatasync",
"fdatasyncSync",
"formatDiagnostics", "formatDiagnostics",
"futime", "futime",
"futimeSync", "futimeSync",
"fstat", "fstat",
"fstatSync", "fstatSync",
"fsync",
"fsyncSync",
"ftruncate", "ftruncate",
"ftruncateSync", "ftruncateSync",
"hostname", "hostname",

View file

@ -676,6 +676,52 @@ declare namespace Deno {
whence: SeekMode, whence: SeekMode,
): Promise<number>; ): Promise<number>;
/**
* Synchronously flushes any pending data and metadata operations of the given file stream to disk.
* ```ts
* const file = Deno.openSync("my_file.txt", { read: true, write: true, create: true });
* Deno.writeSync(file.rid, new TextEncoder().encode("Hello World"));
* Deno.ftruncateSync(file.rid, 1);
* Deno.fsyncSync(file.rid);
* console.log(new TextDecoder().decode(Deno.readFileSync("my_file.txt"))); // H
* ```
*/
export function fsyncSync(rid: number): void;
/**
* Flushes any pending data and metadata operations of the given file stream to disk.
* ```ts
* const file = await Deno.open("my_file.txt", { read: true, write: true, create: true });
* await Deno.write(file.rid, new TextEncoder().encode("Hello World"));
* await Deno.ftruncate(file.rid, 1);
* await Deno.fsync(file.rid);
* console.log(new TextDecoder().decode(await Deno.readFile("my_file.txt"))); // H
* ```
*/
export function fsync(rid: number): Promise<void>;
/*
* Synchronously flushes any pending data operations of the given file stream to disk.
* ```ts
* const file = Deno.openSync("my_file.txt", { read: true, write: true, create: true });
* Deno.writeSync(file.rid, new TextEncoder().encode("Hello World"));
* Deno.fdatasyncSync(file.rid);
* console.log(new TextDecoder().decode(Deno.readFileSync("my_file.txt"))); // Hello World
* ```
*/
export function fdatasyncSync(rid: number): void;
/**
* Flushes any pending data operations of the given file stream to disk.
* ```ts
* const file = await Deno.open("my_file.txt", { read: true, write: true, create: true });
* await Deno.write(file.rid, new TextEncoder().encode("Hello World"));
* await Deno.fdatasync(file.rid);
* console.log(new TextDecoder().decode(await Deno.readFile("my_file.txt"))); // Hello World
* ```
*/
export function fdatasync(rid: number): Promise<void>;
/** Close the given resource ID (rid) which has been previously opened, such /** Close the given resource ID (rid) which has been previously opened, such
* as via opening or creating a file. Closing a file when you are finished * as via opening or creating a file. Closing a file when you are finished
* with it is important to avoid leaking resources. * with it is important to avoid leaking resources.

View file

@ -1170,52 +1170,6 @@ declare namespace Deno {
*/ */
export function ftruncate(rid: number, len?: number): Promise<void>; export function ftruncate(rid: number, len?: number): Promise<void>;
/* **UNSTABLE**: New API, yet to be vetted.
* Synchronously flushes any pending data operations of the given file stream to disk.
* ```ts
* const file = Deno.openSync("my_file.txt", { read: true, write: true, create: true });
* Deno.writeSync(file.rid, new TextEncoder().encode("Hello World"));
* Deno.fdatasyncSync(file.rid);
* console.log(new TextDecoder().decode(Deno.readFileSync("my_file.txt"))); // Hello World
* ```
*/
export function fdatasyncSync(rid: number): void;
/** **UNSTABLE**: New API, yet to be vetted.
* Flushes any pending data operations of the given file stream to disk.
* ```ts
* const file = await Deno.open("my_file.txt", { read: true, write: true, create: true });
* await Deno.write(file.rid, new TextEncoder().encode("Hello World"));
* await Deno.fdatasync(file.rid);
* console.log(new TextDecoder().decode(await Deno.readFile("my_file.txt"))); // Hello World
* ```
*/
export function fdatasync(rid: number): Promise<void>;
/** **UNSTABLE**: New API, yet to be vetted.
* Synchronously flushes any pending data and metadata operations of the given file stream to disk.
* ```ts
* const file = Deno.openSync("my_file.txt", { read: true, write: true, create: true });
* Deno.writeSync(file.rid, new TextEncoder().encode("Hello World"));
* Deno.ftruncateSync(file.rid, 1);
* Deno.fsyncSync(file.rid);
* console.log(new TextDecoder().decode(Deno.readFileSync("my_file.txt"))); // H
* ```
*/
export function fsyncSync(rid: number): void;
/** **UNSTABLE**: New API, yet to be vetted.
* Flushes any pending data and metadata operations of the given file stream to disk.
* ```ts
* const file = await Deno.open("my_file.txt", { read: true, write: true, create: true });
* await Deno.write(file.rid, new TextEncoder().encode("Hello World"));
* await Deno.ftruncate(file.rid, 1);
* await Deno.fsync(file.rid);
* console.log(new TextDecoder().decode(await Deno.readFile("my_file.txt"))); // H
* ```
*/
export function fsync(rid: number): Promise<void>;
/** **UNSTABLE**: New API, yet to be vetted. /** **UNSTABLE**: New API, yet to be vetted.
* Synchronously returns a `Deno.FileInfo` for the given file stream. * Synchronously returns a `Deno.FileInfo` for the given file stream.
* *

View file

@ -282,7 +282,6 @@ fn op_fdatasync_sync(
args: Value, args: Value,
_zero_copy: &mut [ZeroCopyBuf], _zero_copy: &mut [ZeroCopyBuf],
) -> Result<Value, AnyError> { ) -> Result<Value, AnyError> {
super::check_unstable(state, "Deno.fdatasync");
let args: FdatasyncArgs = serde_json::from_value(args)?; let args: FdatasyncArgs = serde_json::from_value(args)?;
let rid = args.rid as u32; let rid = args.rid as u32;
std_file_resource(state, rid, |r| match r { std_file_resource(state, rid, |r| match r {
@ -297,8 +296,6 @@ async fn op_fdatasync_async(
args: Value, args: Value,
_zero_copy: BufVec, _zero_copy: BufVec,
) -> Result<Value, AnyError> { ) -> Result<Value, AnyError> {
super::check_unstable2(&state, "Deno.fdatasync");
let args: FdatasyncArgs = serde_json::from_value(args)?; let args: FdatasyncArgs = serde_json::from_value(args)?;
let rid = args.rid as u32; let rid = args.rid as u32;
std_file_resource(&mut state.borrow_mut(), rid, |r| match r { std_file_resource(&mut state.borrow_mut(), rid, |r| match r {
@ -319,7 +316,6 @@ fn op_fsync_sync(
args: Value, args: Value,
_zero_copy: &mut [ZeroCopyBuf], _zero_copy: &mut [ZeroCopyBuf],
) -> Result<Value, AnyError> { ) -> Result<Value, AnyError> {
super::check_unstable(state, "Deno.fsync");
let args: FsyncArgs = serde_json::from_value(args)?; let args: FsyncArgs = serde_json::from_value(args)?;
let rid = args.rid as u32; let rid = args.rid as u32;
std_file_resource(state, rid, |r| match r { std_file_resource(state, rid, |r| match r {
@ -334,8 +330,6 @@ async fn op_fsync_async(
args: Value, args: Value,
_zero_copy: BufVec, _zero_copy: BufVec,
) -> Result<Value, AnyError> { ) -> Result<Value, AnyError> {
super::check_unstable2(&state, "Deno.fsync");
let args: FsyncArgs = serde_json::from_value(args)?; let args: FsyncArgs = serde_json::from_value(args)?;
let rid = args.rid as u32; let rid = args.rid as u32;
std_file_resource(&mut state.borrow_mut(), rid, |r| match r { std_file_resource(&mut state.borrow_mut(), rid, |r| match r {