mirror of
https://github.com/denoland/deno.git
synced 2024-12-13 11:02:19 -05:00
1b355d8a87
Introduces a `SyncReadAsyncWriteLock` to make it harder to write to the npm resolution without first waiting async in a queue. For the npm resolution, reading synchronously is fine, but when updating, someone should wait async, clone the data, then write the data at the end back.
20 lines
432 B
Rust
20 lines
432 B
Rust
// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.
|
|
|
|
use tokio_util::sync::CancellationToken;
|
|
|
|
#[derive(Debug, Default, Clone)]
|
|
pub struct AsyncFlag(CancellationToken);
|
|
|
|
impl AsyncFlag {
|
|
pub fn raise(&self) {
|
|
self.0.cancel();
|
|
}
|
|
|
|
pub fn is_raised(&self) -> bool {
|
|
self.0.is_cancelled()
|
|
}
|
|
|
|
pub fn wait_raised(&self) -> impl std::future::Future<Output = ()> + '_ {
|
|
self.0.cancelled()
|
|
}
|
|
}
|