Switch to a fork of tokio::sync::watch that uses parking_lot's RwLock

This commit is contained in:
Mike Dilger 2024-08-31 11:29:43 +12:00
parent 4e2f97d012
commit 525508e663
5 changed files with 16 additions and 5 deletions

10
Cargo.lock generated
View File

@ -2318,6 +2318,7 @@ dependencies = [
"tungstenite",
"url",
"usvg 0.43.0",
"watcher",
"zeroize",
]
@ -6310,6 +6311,15 @@ version = "0.2.92"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96"
[[package]]
name = "watcher"
version = "0.1.0"
source = "git+https://github.com/mikedilger/watcher?rev=a4e7e70c396bca4630aa0ba0a15d54ea103cb0e9#a4e7e70c396bca4630aa0ba0a15d54ea103cb0e9"
dependencies = [
"parking_lot",
"tokio",
]
[[package]]
name = "wayland-backend"
version = "0.3.6"

View File

@ -77,6 +77,7 @@ tokio-tungstenite = { version = "0.23", default-features = false, features = [ "
tungstenite = { version = "0.23", default-features = false }
url = "2.5"
usvg = "0.43"
watcher = { git = "https://github.com/mikedilger/watcher", rev = "a4e7e70c396bca4630aa0ba0a15d54ea103cb0e9" }
zeroize = "1.8"
[target.'cfg(windows)'.dependencies]

View File

@ -25,8 +25,8 @@ use std::collections::HashSet;
use std::sync::atomic::{AtomicBool, AtomicU32, AtomicUsize};
use std::sync::{Arc, OnceLock};
use tokio::runtime::Runtime;
use tokio::sync::watch::Receiver as WatchReceiver;
use tokio::sync::watch::Sender as WatchSender;
use watcher::Receiver as WatchReceiver;
use watcher::Sender as WatchSender;
use tokio::sync::{broadcast, mpsc, Mutex, Notify, RwLock};
/// Global data shared between threads. Access via the static ref `GLOBALS`.
@ -192,7 +192,7 @@ lazy_static! {
// Setup a watch channel for going offline state change
// We start in the Offline state
let (write_runstate, read_runstate) = tokio::sync::watch::channel(RunState::Initializing);
let (write_runstate, read_runstate) = watcher::channel(RunState::Initializing);
let filter_engine = Engine::new();
let filter = crate::filter::load_script(&filter_engine);

View File

@ -28,9 +28,9 @@ use subscription_map::SubscriptionMap;
use tokio::net::TcpStream;
use tokio::sync::broadcast::Receiver;
use tokio::sync::mpsc::UnboundedSender;
use tokio::sync::watch::Receiver as WatchReceiver;
use tokio_tungstenite::{MaybeTlsStream, WebSocketStream};
use tungstenite::protocol::{Message as WsMessage, WebSocketConfig};
use watcher::Receiver as WatchReceiver;
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum AuthState {

View File

@ -34,8 +34,8 @@ use tokio::signal::unix::{signal, SignalKind};
use tokio::signal::windows::{ctrl_break, ctrl_c, ctrl_close};
use tokio::sync::broadcast::Sender;
use tokio::sync::mpsc::UnboundedReceiver;
use tokio::sync::watch::Receiver as WatchReceiver;
use tokio::task;
use watcher::Receiver as WatchReceiver;
use zeroize::Zeroize;
type MinionResult = Result<MinionExitReason, Error>;