derefmut for confighandle
This commit is contained in:
parent
fc3f7103d1
commit
84c999a662
|
@ -1,4 +1,5 @@
|
||||||
use std::{
|
use std::{
|
||||||
|
ops::DerefMut,
|
||||||
path::PathBuf,
|
path::PathBuf,
|
||||||
sync::{OnceLock, RwLock, RwLockReadGuard, RwLockWriteGuard},
|
sync::{OnceLock, RwLock, RwLockReadGuard, RwLockWriteGuard},
|
||||||
};
|
};
|
||||||
|
@ -21,13 +22,27 @@ pub fn access_config<'a>() -> RwLockReadGuard<'a, Config> {
|
||||||
}
|
}
|
||||||
|
|
||||||
pub struct ConfigHandle<'a> {
|
pub struct ConfigHandle<'a> {
|
||||||
pub handle: RwLockWriteGuard<'a, Config>,
|
handle: RwLockWriteGuard<'a, Config>,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl<'a> core::ops::Deref for ConfigHandle<'a> {
|
||||||
|
type Target = RwLockWriteGuard<'a, Config>;
|
||||||
|
|
||||||
|
fn deref(&self) -> &Self::Target {
|
||||||
|
&self.handle
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl<'a> DerefMut for ConfigHandle<'a> {
|
||||||
|
fn deref_mut(&mut self) -> &mut Self::Target {
|
||||||
|
&mut self.handle
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<'a> Drop for ConfigHandle<'a> {
|
impl<'a> Drop for ConfigHandle<'a> {
|
||||||
fn drop(&mut self) {
|
fn drop(&mut self) {
|
||||||
log::warn!("saving config...");
|
log::warn!("saving config...");
|
||||||
let _ = self.handle.save().some_or_print_with("saving config");
|
let _ = self.save().some_or_print_with("saving config");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -143,14 +143,14 @@ async fn enable_control(state: &State<ServerState>) {
|
||||||
#[post("/set-max/<limit>")]
|
#[post("/set-max/<limit>")]
|
||||||
async fn set_max(limit: i64) -> String {
|
async fn set_max(limit: i64) -> String {
|
||||||
let limit = limit.clamp(access_config().min_rate, 15);
|
let limit = limit.clamp(access_config().min_rate, 15);
|
||||||
write_to_config().handle.max_rate = limit;
|
write_to_config().max_rate = limit;
|
||||||
format!("set upper limit to {limit}")
|
format!("set upper limit to {limit}")
|
||||||
}
|
}
|
||||||
|
|
||||||
#[post("/set-min/<limit>")]
|
#[post("/set-min/<limit>")]
|
||||||
async fn set_min(limit: i64) -> String {
|
async fn set_min(limit: i64) -> String {
|
||||||
let limit = limit.clamp(3, access_config().max_rate);
|
let limit = limit.clamp(3, access_config().max_rate);
|
||||||
write_to_config().handle.min_rate = limit;
|
write_to_config().min_rate = limit;
|
||||||
format!("set lower limit to {limit}")
|
format!("set lower limit to {limit}")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue