2023-05-21 18:53:59 +08:00
|
|
|
use std::sync::Arc;
|
|
|
|
|
2023-05-23 23:55:21 +08:00
|
|
|
use flowy_folder2::deps::FolderCloudService;
|
2023-05-21 18:53:59 +08:00
|
|
|
use parking_lot::RwLock;
|
|
|
|
use tokio::sync::mpsc;
|
|
|
|
|
|
|
|
use flowy_user::event_map::UserAuthService;
|
|
|
|
|
2023-05-23 23:55:21 +08:00
|
|
|
use crate::local_server::impls::{
|
|
|
|
LocalServerFolderCloudServiceImpl, LocalServerUserAuthServiceImpl,
|
|
|
|
};
|
2023-05-21 18:53:59 +08:00
|
|
|
use crate::AppFlowyServer;
|
|
|
|
|
|
|
|
#[derive(Default)]
|
|
|
|
pub struct LocalServer {
|
|
|
|
stop_tx: RwLock<Option<mpsc::Sender<()>>>,
|
|
|
|
}
|
|
|
|
|
|
|
|
impl LocalServer {
|
|
|
|
pub fn new() -> Self {
|
|
|
|
// let _config = self_host_server_configuration().unwrap();
|
|
|
|
Self::default()
|
|
|
|
}
|
|
|
|
|
|
|
|
pub async fn stop(&self) {
|
|
|
|
let sender = self.stop_tx.read().clone();
|
|
|
|
if let Some(stop_tx) = sender {
|
|
|
|
let _ = stop_tx.send(()).await;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
impl AppFlowyServer for LocalServer {
|
|
|
|
fn user_service(&self) -> Arc<dyn UserAuthService> {
|
|
|
|
Arc::new(LocalServerUserAuthServiceImpl())
|
|
|
|
}
|
2023-05-23 23:55:21 +08:00
|
|
|
|
|
|
|
fn folder_service(&self) -> Arc<dyn FolderCloudService> {
|
|
|
|
Arc::new(LocalServerFolderCloudServiceImpl())
|
|
|
|
}
|
2023-05-21 18:53:59 +08:00
|
|
|
}
|