refactored
This commit is contained in:
parent
695ac6daa2
commit
4588a50d75
3 changed files with 81 additions and 69 deletions
|
@ -42,40 +42,21 @@ impl GatewayProc {
|
||||||
}
|
}
|
||||||
|
|
||||||
ClientRequest::MessageList(client::MessageList { channel_id }) => {
|
ClientRequest::MessageList(client::MessageList { channel_id }) => {
|
||||||
let (cmd, rec) = StorageCmd::new_message_list(channel_id.into());
|
self.on_message_list(channel_id, address).await;
|
||||||
self.storage.send(cmd).unwrap();
|
|
||||||
let messages = rec.await.unwrap().iter().map(Id::to_u64).collect();
|
|
||||||
let request = ServerRequest::new_message_list(channel_id, messages);
|
|
||||||
let command = SessionCmd::new_send(address, request);
|
|
||||||
self.sessions.send(command).unwrap();
|
|
||||||
}
|
}
|
||||||
ClientRequest::MessageCreate(client::MessageCreate {
|
ClientRequest::MessageCreate(client::MessageCreate {
|
||||||
channel_id,
|
channel_id,
|
||||||
content,
|
content,
|
||||||
}) => {
|
}) => {
|
||||||
let (cmd, rec) = StorageCmd::new_message_create(channel_id.into(), content.clone());
|
self.on_message_create(channel_id, content).await;
|
||||||
self.storage.send(cmd).unwrap();
|
|
||||||
let id = rec.await.unwrap();
|
|
||||||
let request = ServerRequest::new_message_create(channel_id, id.to_u64(), content);
|
|
||||||
let command = SessionCmd::new_broadcast(request);
|
|
||||||
self.sessions.send(command).unwrap();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ClientRequest::MessageDelete(client::MessageDelete { id, channel_id }) => {
|
ClientRequest::MessageDelete(client::MessageDelete { id, channel_id }) => {
|
||||||
let command = StorageCmd::new_message_delete(channel_id.into(), id.into());
|
self.on_message_delete(channel_id, id);
|
||||||
self.storage.send(command).unwrap();
|
|
||||||
let request = ServerRequest::new_message_delete(channel_id, id);
|
|
||||||
let command = SessionCmd::new_broadcast(request);
|
|
||||||
self.sessions.send(command).unwrap();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ClientRequest::MessageGetContent(client::MessageGetContent { id, channel_id }) => {
|
ClientRequest::MessageGetContent(client::MessageGetContent { id, channel_id }) => {
|
||||||
let (cmd, rec) = StorageCmd::new_message_get_content(channel_id.into(), id.into());
|
self.on_message_get_content(channel_id, id, address).await;
|
||||||
self.storage.send(cmd).unwrap();
|
|
||||||
let request =
|
|
||||||
ServerRequest::new_message_get_content(channel_id, id, rec.await.unwrap());
|
|
||||||
let command = SessionCmd::new_send(address, request);
|
|
||||||
self.sessions.send(command).unwrap();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ClientRequest::MessageSetContent(client::MessageSetContent {
|
ClientRequest::MessageSetContent(client::MessageSetContent {
|
||||||
|
@ -83,15 +64,7 @@ impl GatewayProc {
|
||||||
id,
|
id,
|
||||||
channel_id,
|
channel_id,
|
||||||
}) => {
|
}) => {
|
||||||
let command = StorageCmd::new_message_set_content(
|
self.on_message_set_content(channel_id, id, content);
|
||||||
channel_id.into(),
|
|
||||||
id.into(),
|
|
||||||
content.clone(),
|
|
||||||
);
|
|
||||||
self.storage.send(command).unwrap();
|
|
||||||
let request = ServerRequest::new_message_set_content(channel_id, id, content);
|
|
||||||
let command = SessionCmd::new_broadcast(request);
|
|
||||||
self.sessions.send(command).unwrap();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -149,6 +122,49 @@ impl GatewayProc {
|
||||||
let command = SessionCmd::new_broadcast(request);
|
let command = SessionCmd::new_broadcast(request);
|
||||||
self.sessions.send(command).unwrap();
|
self.sessions.send(command).unwrap();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async fn on_message_list(&mut self, channel_id: u64, address: Addr) {
|
||||||
|
let (cmd, rec) = StorageCmd::new_message_list(channel_id.into());
|
||||||
|
self.storage.send(cmd).unwrap();
|
||||||
|
let messages = rec.await.unwrap().iter().map(Id::to_u64).collect();
|
||||||
|
let request = ServerRequest::new_message_list(channel_id, messages);
|
||||||
|
let command = SessionCmd::new_send(address, request);
|
||||||
|
self.sessions.send(command).unwrap();
|
||||||
|
}
|
||||||
|
|
||||||
|
async fn on_message_create(&mut self, channel_id: u64, content: String) {
|
||||||
|
let (cmd, rec) = StorageCmd::new_message_create(channel_id.into(), content.clone());
|
||||||
|
self.storage.send(cmd).unwrap();
|
||||||
|
let id = rec.await.unwrap();
|
||||||
|
let request = ServerRequest::new_message_create(channel_id, id.to_u64(), content);
|
||||||
|
let command = SessionCmd::new_broadcast(request);
|
||||||
|
self.sessions.send(command).unwrap();
|
||||||
|
}
|
||||||
|
|
||||||
|
fn on_message_delete(&mut self, channel_id: u64, id: u64) {
|
||||||
|
let command = StorageCmd::new_message_delete(channel_id.into(), id.into());
|
||||||
|
self.storage.send(command).unwrap();
|
||||||
|
let request = ServerRequest::new_message_delete(channel_id, id);
|
||||||
|
let command = SessionCmd::new_broadcast(request);
|
||||||
|
self.sessions.send(command).unwrap();
|
||||||
|
}
|
||||||
|
|
||||||
|
async fn on_message_get_content(&mut self, channel_id: u64, id: u64, address: Addr) {
|
||||||
|
let (cmd, rec) = StorageCmd::new_message_get_content(channel_id.into(), id.into());
|
||||||
|
self.storage.send(cmd).unwrap();
|
||||||
|
let request = ServerRequest::new_message_get_content(channel_id, id, rec.await.unwrap());
|
||||||
|
let command = SessionCmd::new_send(address, request);
|
||||||
|
self.sessions.send(command).unwrap();
|
||||||
|
}
|
||||||
|
|
||||||
|
fn on_message_set_content(&mut self, channel_id: u64, id: u64, content: String) {
|
||||||
|
let command =
|
||||||
|
StorageCmd::new_message_set_content(channel_id.into(), id.into(), content.clone());
|
||||||
|
self.storage.send(command).unwrap();
|
||||||
|
let request = ServerRequest::new_message_set_content(channel_id, id, content);
|
||||||
|
let command = SessionCmd::new_broadcast(request);
|
||||||
|
self.sessions.send(command).unwrap();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[telecomande::async_trait]
|
#[telecomande::async_trait]
|
||||||
|
|
|
@ -95,12 +95,8 @@ async fn session(address: Addr, reader: OwnedReadHalf, remote: Remote<gateway::G
|
||||||
loop {
|
loop {
|
||||||
let mut line = String::new();
|
let mut line = String::new();
|
||||||
match reader.read_line(&mut line).await {
|
match reader.read_line(&mut line).await {
|
||||||
Err(error) => {
|
Err(error) => eprintln!("[session/error] {error}"),
|
||||||
eprintln!("[session/error] {error}");
|
Ok(0) => break,
|
||||||
}
|
|
||||||
Ok(0) => {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
_ => (),
|
_ => (),
|
||||||
}
|
}
|
||||||
remote
|
remote
|
||||||
|
|
|
@ -135,7 +135,7 @@ impl StorageProc {
|
||||||
StorageCmd::ChannelSetName(id, name) => {
|
StorageCmd::ChannelSetName(id, name) => {
|
||||||
self.on_channel_set_name(id, name);
|
self.on_channel_set_name(id, name);
|
||||||
}
|
}
|
||||||
// ChannelGetParent
|
// ChannelGetParent / Set
|
||||||
|
|
||||||
//
|
//
|
||||||
StorageCmd::MessageList(channel_id, sender) => {
|
StorageCmd::MessageList(channel_id, sender) => {
|
||||||
|
@ -156,36 +156,6 @@ impl StorageProc {
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
fn on_message_set_content(&mut self, channel_id: Id, id: Id, content: String) {
|
|
||||||
let path = format!("/messages/{channel_id}/{id}");
|
|
||||||
if let Some(mut message) = self.get::<_, Message>(&path) {
|
|
||||||
message.set_content(content);
|
|
||||||
self.set(path, message);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fn on_message_get_content(&mut self, channel_id: Id, id: Id, sender: Sender<Option<String>>) {
|
|
||||||
let message = self.get::<_, Message>(format!("/messages/{channel_id}/{id}"));
|
|
||||||
let content = message.map(|m| m.get_content().to_string());
|
|
||||||
sender.send(content).unwrap()
|
|
||||||
}
|
|
||||||
|
|
||||||
fn on_message_delete(&mut self, channel_id: Id, id: Id) {
|
|
||||||
self.remove(format!("/messages/{channel_id}/{id}"));
|
|
||||||
}
|
|
||||||
|
|
||||||
fn on_message_create(&mut self, channel_id: Id, content: String, sender: Sender<Id>) {
|
|
||||||
let message = Message::new(content);
|
|
||||||
let id = message.get_id();
|
|
||||||
self.set(format!("/messages/{channel_id}/{id}"), message);
|
|
||||||
sender.send(id).unwrap();
|
|
||||||
}
|
|
||||||
|
|
||||||
fn on_message_list(&mut self, channel_id: Id, sender: Sender<Vec<Id>>) {
|
|
||||||
let items = self.list(format!("/messages/{channel_id}/"));
|
|
||||||
sender.send(items).unwrap();
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// Channels
|
// Channels
|
||||||
//
|
//
|
||||||
|
@ -222,6 +192,36 @@ impl StorageProc {
|
||||||
//
|
//
|
||||||
// Messages
|
// Messages
|
||||||
//
|
//
|
||||||
|
|
||||||
|
fn on_message_list(&mut self, channel_id: Id, sender: Sender<Vec<Id>>) {
|
||||||
|
let items = self.list(format!("/messages/{channel_id}/"));
|
||||||
|
sender.send(items).unwrap();
|
||||||
|
}
|
||||||
|
|
||||||
|
fn on_message_create(&mut self, channel_id: Id, content: String, sender: Sender<Id>) {
|
||||||
|
let message = Message::new(content);
|
||||||
|
let id = message.get_id();
|
||||||
|
self.set(format!("/messages/{channel_id}/{id}"), message);
|
||||||
|
sender.send(id).unwrap();
|
||||||
|
}
|
||||||
|
|
||||||
|
fn on_message_delete(&mut self, channel_id: Id, id: Id) {
|
||||||
|
self.remove(format!("/messages/{channel_id}/{id}"));
|
||||||
|
}
|
||||||
|
|
||||||
|
fn on_message_get_content(&mut self, channel_id: Id, id: Id, sender: Sender<Option<String>>) {
|
||||||
|
let message = self.get::<_, Message>(format!("/messages/{channel_id}/{id}"));
|
||||||
|
let content = message.map(|m| m.get_content().to_string());
|
||||||
|
sender.send(content).unwrap()
|
||||||
|
}
|
||||||
|
|
||||||
|
fn on_message_set_content(&mut self, channel_id: Id, id: Id, content: String) {
|
||||||
|
let path = format!("/messages/{channel_id}/{id}");
|
||||||
|
if let Some(mut message) = self.get::<_, Message>(&path) {
|
||||||
|
message.set_content(content);
|
||||||
|
self.set(path, message);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[telecomande::async_trait]
|
#[telecomande::async_trait]
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue