merge develop into master #20

Merged
michael-bailey merged 181 commits from develop into master 2023-12-01 21:48:28 +00:00
1 changed files with 46 additions and 35 deletions
Showing only changes of commit 22fcdae11a - Show all commits

View File

@ -1,14 +1,20 @@
use actix::{Actor, Addr, AsyncContext, Context, Handler, Recipient};
use foundation::ClientDetails;
use foundation::messages::client::ClientStreamIn;
use std::net::SocketAddr;
use uuid::Uuid;
use crate::client_management::client::messages::{ClientDataMessage, ClientDataResponse, ClientMessage, ClientObservableMessage};
use crate::client_management::client::messages::ClientObservableMessage::{SendGlobalMessageRequest, SendMessageRequest, UpdateRequest};
use crate::client_management::client::messages::ClientObservableMessage::{
SendGlobalMessageRequest, SendMessageRequest, UpdateRequest,
};
use crate::client_management::client::messages::{
ClientDataMessage, ClientDataResponse, ClientMessage,
ClientObservableMessage,
};
use crate::network::{Connection, ConnectionOuput};
use crate::prelude::messages::ObservableMessage;
use actix::{Actor, Addr, AsyncContext, Context, Handler, Recipient};
use foundation::messages::client::ClientStreamIn;
use foundation::ClientDetails;
use std::net::SocketAddr;
use uuid::Uuid;
/// messages the client will send to itself
#[allow(dead_code)]
enum SelfMessage {
ReceivedMessage(ClientStreamIn),
}
@ -38,15 +44,12 @@ impl Client {
fn handle_request(
&mut self,
ctx: &mut Context<Client>,
sender: Addr<Connection>,
addr: SocketAddr,
_sender: Addr<Connection>,
_addr: SocketAddr,
data: String,
) {
use foundation::messages::client::ClientStreamIn::{
Disconnect,
SendGlobalMessage,
SendMessage,
Update,
Disconnect, SendGlobalMessage, SendMessage, Update,
};
use serde_json::from_str;
let msg = from_str::<ClientStreamIn>(data.as_str())
@ -90,7 +93,7 @@ impl Client {
}
#[inline]
fn handle_disconnect(&self, ctx: &mut Context<Client>) {
fn handle_disconnect(&self, _ctx: &mut Context<Client>) {
todo!()
}
@ -107,29 +110,31 @@ impl Actor for Client {
// tells the client that it has been connected.
fn started(&mut self, ctx: &mut Self::Context) {
use crate::network::ConnectionMessage::SendData;
use crate::prelude::messages::ObservableMessage::Subscribe;
use foundation::messages::client::ClientStreamOut;
use foundation::messages::client::ClientStreamOut::Connected;
use serde_json::to_string;
use foundation::messages::client::ClientStreamOut;
use crate::network::ConnectionMessage::SendData;
use crate::network::ConnectionOuput;
use crate::prelude::messages::ObservableMessage::Subscribe;
println!("[Client] started");
self.connection
.do_send::<ObservableMessage<ConnectionOuput>>(Subscribe(ctx.address().recipient()));
.do_send::<ObservableMessage<ConnectionOuput>>(Subscribe(
ctx.address().recipient(),
));
self.connection.do_send(SendData(
to_string::<ClientStreamOut>(&Connected).unwrap(),
));
}
fn stopped(&mut self, ctx: &mut Self::Context) {
use crate::network::ConnectionMessage::SendData;
use crate::prelude::messages::ObservableMessage::Unsubscribe;
use foundation::messages::client::ClientStreamOut;
use foundation::messages::client::ClientStreamOut::Disconnected;
use serde_json::to_string;
use foundation::messages::client::ClientStreamOut;
use crate::network::ConnectionMessage::SendData;
use crate::network::ConnectionOuput;
use crate::prelude::messages::ObservableMessage::Unsubscribe;
self.connection
.do_send::<ObservableMessage<ConnectionOuput>>(Unsubscribe(ctx.address().recipient()));
.do_send::<ObservableMessage<ConnectionOuput>>(Unsubscribe(
ctx.address().recipient(),
));
self.connection.do_send(SendData(
to_string::<ClientStreamOut>(&Disconnected).unwrap(),
));
@ -141,11 +146,13 @@ impl Handler<ClientDataMessage> for Client {
fn handle(
&mut self,
msg: ClientDataMessage,
ctx: &mut Self::Context,
_ctx: &mut Self::Context,
) -> Self::Result {
match msg {
ClientDataMessage::Details => ClientDataResponse::Details(self.details.clone()),
_ => todo!()
ClientDataMessage::Details => {
ClientDataResponse::Details(self.details.clone())
}
_ => todo!(),
}
}
}
@ -158,11 +165,15 @@ impl Handler<ClientMessage> for Client {
msg: ClientMessage,
_ctx: &mut Self::Context,
) -> Self::Result {
use crate::client_management::client::messages::ClientMessage::{SendGlobalMessage, SendMessage, SendUpdate};
use foundation::messages::client::ClientStreamOut::{ConnectedClients, GlobalMessage, UserMessage};
use serde_json::to_string;
use foundation::messages::client::ClientStreamOut;
use crate::client_management::client::messages::ClientMessage::{
SendGlobalMessage, SendMessage, SendUpdate,
};
use crate::network::ConnectionMessage::SendData;
use foundation::messages::client::ClientStreamOut;
use foundation::messages::client::ClientStreamOut::{
ConnectedClients, GlobalMessage, UserMessage,
};
use serde_json::to_string;
match msg {
SendUpdate(clients) => self.connection.do_send(SendData(
@ -182,7 +193,6 @@ impl Handler<ClientMessage> for Client {
.expect("[Client] Failed to encode string"),
))
}
_ => todo!(),
}
}
}
@ -201,7 +211,6 @@ impl Handler<ConnectionOuput> for Client {
RecvData(sender, addr, data) => {
self.handle_request(ctx, sender, addr, data)
}
_ => todo!(),
}
}
@ -213,9 +222,11 @@ impl Handler<ObservableMessage<ClientObservableMessage>> for Client {
fn handle(
&mut self,
msg: ObservableMessage<ClientObservableMessage>,
ctx: &mut Self::Context,
_ctx: &mut Self::Context,
) -> Self::Result {
use crate::prelude::messages::ObservableMessage::{Subscribe, Unsubscribe};
use crate::prelude::messages::ObservableMessage::{
Subscribe, Unsubscribe,
};
match msg {
Subscribe(r) => {
println!("[Client] adding subscriber");