connect.rs 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. use crate::service::ws::ClientMessage;
  2. use actix::{Message, Recipient};
  3. use flowy_net::errors::ServerError;
  4. use serde::{Deserialize, Serialize};
  5. use std::fmt::Formatter;
  6. pub type Socket = Recipient<ClientMessage>;
  7. #[derive(Serialize, Deserialize, Debug, Clone, Hash, PartialEq, Eq)]
  8. pub struct SessionId(pub String);
  9. impl<T: AsRef<str>> std::convert::From<T> for SessionId {
  10. fn from(s: T) -> Self { SessionId(s.as_ref().to_owned()) }
  11. }
  12. impl std::fmt::Display for SessionId {
  13. fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
  14. let desc = format!("{}", &self.0);
  15. f.write_str(&desc)
  16. }
  17. }
  18. pub struct Session {
  19. pub id: SessionId,
  20. pub socket: Socket,
  21. }
  22. impl std::convert::From<Connect> for Session {
  23. fn from(c: Connect) -> Self {
  24. Self {
  25. id: c.sid,
  26. socket: c.socket,
  27. }
  28. }
  29. }
  30. #[derive(Debug, Message, Clone)]
  31. #[rtype(result = "Result<(), ServerError>")]
  32. pub struct Connect {
  33. pub socket: Socket,
  34. pub sid: SessionId,
  35. }
  36. #[derive(Debug, Message, Clone)]
  37. #[rtype(result = "Result<(), ServerError>")]
  38. pub struct Disconnect {
  39. pub sid: SessionId,
  40. }