implemented message sending between users

This commit is contained in:
michael-bailey 2022-03-01 21:06:55 +00:00
parent e0b65fb520
commit 2783c381e0
2 changed files with 16 additions and 1 deletions

View File

@ -81,6 +81,11 @@ impl<Out> Client<Out>
self.disconnect().await;
return;
}
Ok(ClientStreamIn::SendMessage { to, content }) => {
let _ = self.out_channel.send(
ClientMessage::IncomingMessage {from: self.details.uuid, to, content}.into()
).await;
}
Ok(ClientStreamIn::SendGlobalMessage { content }) => {
let _ = self.out_channel.send(
ClientMessage::IncomingGlobalMessage {from: self.details.uuid, content}.into()
@ -97,6 +102,11 @@ impl<Out> Client<Out>
Ok(())
}
pub async fn user_message(&self, from: Uuid, content: String) -> Result<(), Error> {
self.connection.write(ClientStreamOut::UserMessage { from, content }).await?;
Ok(())
}
async fn disconnect(&self) {
let _ = self.out_channel
.send(ClientMessage::Disconnect {

View File

@ -132,7 +132,7 @@ impl<Out> ClientManager<Out>
}
pub async fn handle_channel(&self, message: Option<ClientMgrMessage>) {
use ClientMgrMessage::{Remove, SendClients, BroadcastGlobalMessage};
use ClientMgrMessage::{Remove, SendClients, BroadcastGlobalMessage, SendMessage};
println!("Handling channel");
match message {
Some(Remove {id}) => {
@ -156,6 +156,11 @@ impl<Out> ClientManager<Out>
});
join_all(futures).await;
},
Some(SendMessage { from, to, content }) => {
let lock = self.clients.lock().await;
let client = lock.get(&to).unwrap();
let _ = client.user_message(from, content).await;
},
Some(Remove {id}) => {
self.clients.lock().await.remove(&id);
}