feat(restriction): Avoid re-creating a config reload notifier each time
This commit is contained in:
parent
862d1dc9e2
commit
421a5a230c
2 changed files with 6 additions and 2 deletions
|
@ -94,7 +94,7 @@ impl RestrictionsRulesReloader {
|
||||||
&self.restrictions
|
&self.restrictions
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn wait_for_reload(&self) -> Notified {
|
pub fn reload_notifier(&self) -> Notified {
|
||||||
match &self.state {
|
match &self.state {
|
||||||
Static(st) => st.notified(),
|
Static(st) => st.notified(),
|
||||||
Config(st) => st.should_reload_config.notified(),
|
Config(st) => st.should_reload_config.notified(),
|
||||||
|
|
|
@ -728,12 +728,16 @@ pub async fn run_server(server_config: Arc<WsServerConfig>, restrictions: Restri
|
||||||
// Bind server and run forever to serve incoming connections.
|
// Bind server and run forever to serve incoming connections.
|
||||||
let mut restrictions = RestrictionsRulesReloader::new(restrictions, server_config.restriction_config.clone())?;
|
let mut restrictions = RestrictionsRulesReloader::new(restrictions, server_config.restriction_config.clone())?;
|
||||||
let listener = TcpListener::bind(&server_config.bind).await?;
|
let listener = TcpListener::bind(&server_config.bind).await?;
|
||||||
|
let mut await_config_reload = Box::pin(restrictions.reload_notifier());
|
||||||
|
|
||||||
loop {
|
loop {
|
||||||
let cnx = select! {
|
let cnx = select! {
|
||||||
biased;
|
biased;
|
||||||
|
|
||||||
_ = restrictions.wait_for_reload() => {
|
_ = &mut await_config_reload => {
|
||||||
|
drop(await_config_reload);
|
||||||
restrictions.reload_restrictions_config();
|
restrictions.reload_restrictions_config();
|
||||||
|
await_config_reload = Box::pin(restrictions.reload_notifier());
|
||||||
continue;
|
continue;
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue