mirror of
https://github.com/Astatin3/unshell.git
synced 2026-06-08 22:38:01 -06:00
31 lines
617 B
Rust
31 lines
617 B
Rust
|
|
mod database;
|
||
|
|
mod manager;
|
||
|
|
|
||
|
|
use std::sync::{Arc, Mutex};
|
||
|
|
|
||
|
|
use unshell_lib::module::Manager;
|
||
|
|
|
||
|
|
use crate::SERVER_CONFIG;
|
||
|
|
|
||
|
|
#[derive(Clone)]
|
||
|
|
pub struct Server {
|
||
|
|
pub manager: Arc<Mutex<Manager>>,
|
||
|
|
pub db: sled::Db,
|
||
|
|
}
|
||
|
|
|
||
|
|
impl Server {
|
||
|
|
pub fn new(database: String) -> Self {
|
||
|
|
Self {
|
||
|
|
manager: Manager::start(&SERVER_CONFIG, Vec::new()),
|
||
|
|
db: sled::open(database).expect("Failed to open database"),
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
impl Drop for Server {
|
||
|
|
fn drop(&mut self) {
|
||
|
|
self.db.flush().expect("Failed to flush database on drop");
|
||
|
|
Manager::join(self.manager.clone());
|
||
|
|
}
|
||
|
|
}
|