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 }) => {
|
||||
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();
|
||||
self.on_message_list(channel_id, address).await;
|
||||
}
|
||||
ClientRequest::MessageCreate(client::MessageCreate {
|
||||
channel_id,
|
||||
content,
|
||||
}) => {
|
||||
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();
|
||||
self.on_message_create(channel_id, content).await;
|
||||
}
|
||||
|
||||
ClientRequest::MessageDelete(client::MessageDelete { id, channel_id }) => {
|
||||
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();
|
||||
self.on_message_delete(channel_id, id);
|
||||
}
|
||||
|
||||
ClientRequest::MessageGetContent(client::MessageGetContent { id, channel_id }) => {
|
||||
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();
|
||||
self.on_message_get_content(channel_id, id, address).await;
|
||||
}
|
||||
|
||||
ClientRequest::MessageSetContent(client::MessageSetContent {
|
||||
|
@ -83,15 +64,7 @@ impl GatewayProc {
|
|||
id,
|
||||
channel_id,
|
||||
}) => {
|
||||
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();
|
||||
self.on_message_set_content(channel_id, id, content);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -149,6 +122,49 @@ impl GatewayProc {
|
|||
let command = SessionCmd::new_broadcast(request);
|
||||
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]
|
||||
|
|
|
@ -95,12 +95,8 @@ async fn session(address: Addr, reader: OwnedReadHalf, remote: Remote<gateway::G
|
|||
loop {
|
||||
let mut line = String::new();
|
||||
match reader.read_line(&mut line).await {
|
||||
Err(error) => {
|
||||
eprintln!("[session/error] {error}");
|
||||
}
|
||||
Ok(0) => {
|
||||
break;
|
||||
}
|
||||
Err(error) => eprintln!("[session/error] {error}"),
|
||||
Ok(0) => break,
|
||||
_ => (),
|
||||
}
|
||||
remote
|
||||
|
|
|
@ -135,7 +135,7 @@ impl StorageProc {
|
|||
StorageCmd::ChannelSetName(id, name) => {
|
||||
self.on_channel_set_name(id, name);
|
||||
}
|
||||
// ChannelGetParent
|
||||
// ChannelGetParent / Set
|
||||
|
||||
//
|
||||
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
|
||||
//
|
||||
|
@ -222,6 +192,36 @@ impl StorageProc {
|
|||
//
|
||||
// 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]
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue