forked from blasthavers/blastmud
31 lines
813 B
Rust
31 lines
813 B
Rust
use tokio::{task, time};
|
|
use crate::DResult;
|
|
use crate::db;
|
|
use log::warn;
|
|
|
|
async fn cleanup_session_once(pool: db::DBPool) -> DResult<()> {
|
|
for listener in db::get_dead_listeners(pool.clone()).await? {
|
|
db::cleanup_listener(pool.clone(), listener).await?;
|
|
}
|
|
Ok(())
|
|
}
|
|
|
|
fn start_session_cleanup_task(pool: db::DBPool) -> DResult<()> {
|
|
task::spawn(async move {
|
|
loop {
|
|
match cleanup_session_once(pool.clone()).await {
|
|
Ok(()) => {}
|
|
Err(e) => {
|
|
warn!("Error cleaning up sessions: {}", e);
|
|
time::sleep(time::Duration::from_secs(1)).await;
|
|
}
|
|
}
|
|
}
|
|
});
|
|
Ok(())
|
|
}
|
|
|
|
pub fn start_regular_tasks(pool: db::DBPool) -> DResult<()> {
|
|
start_session_cleanup_task(pool)
|
|
}
|