merge develop into master #20
|
|
@ -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");
|
||||
|
|
|
|||
Loading…
Reference in New Issue