server.rs 942 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. use std::sync::Arc;
  2. use flowy_folder2::deps::FolderCloudService;
  3. use parking_lot::RwLock;
  4. use tokio::sync::mpsc;
  5. use flowy_user::event_map::UserAuthService;
  6. use crate::local_server::impls::{
  7. LocalServerFolderCloudServiceImpl, LocalServerUserAuthServiceImpl,
  8. };
  9. use crate::AppFlowyServer;
  10. #[derive(Default)]
  11. pub struct LocalServer {
  12. stop_tx: RwLock<Option<mpsc::Sender<()>>>,
  13. }
  14. impl LocalServer {
  15. pub fn new() -> Self {
  16. // let _config = self_host_server_configuration().unwrap();
  17. Self::default()
  18. }
  19. pub async fn stop(&self) {
  20. let sender = self.stop_tx.read().clone();
  21. if let Some(stop_tx) = sender {
  22. let _ = stop_tx.send(()).await;
  23. }
  24. }
  25. }
  26. impl AppFlowyServer for LocalServer {
  27. fn user_service(&self) -> Arc<dyn UserAuthService> {
  28. Arc::new(LocalServerUserAuthServiceImpl())
  29. }
  30. fn folder_service(&self) -> Arc<dyn FolderCloudService> {
  31. Arc::new(LocalServerFolderCloudServiceImpl())
  32. }
  33. }