per_oxo 0.1.1

A highly reactive chat_server
Documentation
use crate::actors::{message_router::RouterMessage, user_session::session::UserSession};
use axum::extract::ws::WebSocket;
use tokio::sync::mpsc;
use tracing::{error, info};

pub struct ConnectionManager {
    router_sender: mpsc::UnboundedSender<RouterMessage>,
}

impl ConnectionManager {
    pub fn new(router_sender: mpsc::UnboundedSender<RouterMessage>) -> Self {
        Self { router_sender }
    }

    pub async fn handle_connection(&self, socket: WebSocket, user_id: i32) {
        info!("New connection attempt for user: {}", user_id);

        match UserSession::new(user_id, socket, self.router_sender.clone()).await {
            Ok(session) => {
                info!("User session created for: {}", user_id);
                session.run().await;
            }
            Err(e) => {
                error!("Failed to create session for {}: {}", user_id, e);
            }
        }
    }
}