mirror of
https://github.com/szymon-jozef/checkers.git
synced 2026-10-27 19:20:44 +01:00
feat: add routing text messages
This commit is contained in:
@@ -124,8 +124,8 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> {
|
|||||||
|
|
||||||
Some(ClientData::AvailableMoves(move_paths)) => todo!(),
|
Some(ClientData::AvailableMoves(move_paths)) => todo!(),
|
||||||
|
|
||||||
Some(ClientData::TextMessage(content)) => {
|
Some(ClientData::TextMessage {sender, content}) => {
|
||||||
info!("Got message from the server: {}", content);
|
info!("[{}] - {}", sender, content);
|
||||||
}
|
}
|
||||||
|
|
||||||
Some(ClientData::GameEnd(game_result)) => {
|
Some(ClientData::GameEnd(game_result)) => {
|
||||||
|
|||||||
@@ -48,7 +48,7 @@ pub enum ClientData {
|
|||||||
BoardView(BoardView),
|
BoardView(BoardView),
|
||||||
CurrentTurn(Uuid),
|
CurrentTurn(Uuid),
|
||||||
|
|
||||||
TextMessage(String),
|
TextMessage { sender: String, content: String },
|
||||||
}
|
}
|
||||||
|
|
||||||
pub struct Client {
|
pub struct Client {
|
||||||
@@ -66,7 +66,7 @@ impl Client {
|
|||||||
pub async fn new() -> Option<Client> {
|
pub async fn new() -> Option<Client> {
|
||||||
let settings = ClientSettings {
|
let settings = ClientSettings {
|
||||||
server_url: SocketAddr::new(IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1)), 6767),
|
server_url: SocketAddr::new(IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1)), 6767),
|
||||||
name: "Szymon".into(),
|
name: "Morbius".into(),
|
||||||
};
|
};
|
||||||
|
|
||||||
let (conn_sender, conn_reciever) =
|
let (conn_sender, conn_reciever) =
|
||||||
@@ -169,14 +169,20 @@ impl Client {
|
|||||||
let _ = update_sender.send(ClientData::GameStart { identity }).await;
|
let _ = update_sender.send(ClientData::GameStart { identity }).await;
|
||||||
}
|
}
|
||||||
|
|
||||||
ServerMessage::AvailableCaptures { captures } => todo!(),
|
|
||||||
ServerMessage::AvailableMoves { moves } => todo!(),
|
|
||||||
ServerMessage::BroadcastBoardState { board } => {
|
|
||||||
let _ = update_sender.send(ClientData::BoardView(board)).await;
|
|
||||||
},
|
|
||||||
ServerMessage::BroadcastCurrentTurn { active_player } => {
|
ServerMessage::BroadcastCurrentTurn { active_player } => {
|
||||||
let _ = update_sender.send(ClientData::CurrentTurn(active_player)).await;
|
let _ = update_sender.send(ClientData::CurrentTurn(active_player)).await;
|
||||||
},
|
},
|
||||||
|
ServerMessage::BroadcastBoardState { board } => {
|
||||||
|
let _ = update_sender.send(ClientData::BoardView(board)).await;
|
||||||
|
},
|
||||||
|
|
||||||
|
ServerMessage::BroadCastTextMessage {sender, content} => {
|
||||||
|
let _ = update_sender.send(ClientData::TextMessage {sender, content}).await;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
ServerMessage::AvailableCaptures { captures } => todo!(),
|
||||||
|
ServerMessage::AvailableMoves { moves } => todo!(),
|
||||||
ServerMessage::GameEnd { result } => todo!(),
|
ServerMessage::GameEnd { result } => todo!(),
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -50,9 +50,10 @@ pub enum ServerMessage {
|
|||||||
AvailableMoves { moves: Vec<MovePath> },
|
AvailableMoves { moves: Vec<MovePath> },
|
||||||
|
|
||||||
BroadcastBoardState { board: BoardView },
|
BroadcastBoardState { board: BoardView },
|
||||||
|
|
||||||
BroadcastCurrentTurn { active_player: Uuid },
|
BroadcastCurrentTurn { active_player: Uuid },
|
||||||
|
|
||||||
|
BroadCastTextMessage { sender: String, content: String },
|
||||||
|
|
||||||
GameEnd { result: GameResult },
|
GameEnd { result: GameResult },
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -204,6 +204,8 @@ impl Server {
|
|||||||
|
|
||||||
ClientMessage::TextMessage (content) => {
|
ClientMessage::TextMessage (content) => {
|
||||||
info!("{} sent us a message: {}", addr, content);
|
info!("{} sent us a message: {}", addr, content);
|
||||||
|
let sender = self.connections[&addr].identity.name.clone();
|
||||||
|
self.broadcast_text_message(sender, content).await;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@@ -362,6 +364,11 @@ impl Server {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async fn broadcast_text_message(&mut self, sender: String, content: String) {
|
||||||
|
let msg = Message::new(ServerMessage::BroadCastTextMessage { sender, content });
|
||||||
|
self.broadcast_message(msg).await;
|
||||||
|
}
|
||||||
|
|
||||||
/* === Helper methods === */
|
/* === Helper methods === */
|
||||||
|
|
||||||
async fn send_message(
|
async fn send_message(
|
||||||
|
|||||||
Reference in New Issue
Block a user