connect.rs 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. use crate::ws_service::ClientMessage;
  2. use actix::{Message, Recipient};
  3. use flowy_net::response::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 {
  9. pub id: String,
  10. }
  11. pub struct Session {
  12. pub id: SessionId,
  13. pub socket: Socket,
  14. }
  15. impl std::convert::From<Connect> for Session {
  16. fn from(c: Connect) -> Self {
  17. Self {
  18. id: c.sid,
  19. socket: c.socket,
  20. }
  21. }
  22. }
  23. impl SessionId {
  24. pub fn new(id: String) -> Self { SessionId { id } }
  25. }
  26. impl std::fmt::Display for SessionId {
  27. fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
  28. let desc = format!("{}", &self.id);
  29. f.write_str(&desc)
  30. }
  31. }
  32. #[derive(Debug, Message, Clone)]
  33. #[rtype(result = "Result<(), ServerError>")]
  34. pub struct Connect {
  35. pub socket: Socket,
  36. pub sid: SessionId,
  37. }
  38. #[derive(Debug, Message, Clone)]
  39. #[rtype(result = "Result<(), ServerError>")]
  40. pub struct Disconnect {
  41. pub sid: SessionId,
  42. }