Improved plugin modularity and protocol
This commit is contained in:
+1
-1
@@ -11,7 +11,7 @@ use crate::plugin::types::{LoaderMessage, PluginMessage};
|
||||
pub struct Plugin(TcpStream, BufReader<TcpStream>);
|
||||
|
||||
impl Plugin {
|
||||
pub fn send(&mut self, m: LoaderMessage) {
|
||||
pub fn send(&mut self, m: &LoaderMessage) {
|
||||
self.0
|
||||
.write(serde_json::to_string(&m).unwrap().as_bytes())
|
||||
.unwrap();
|
||||
|
||||
+9
-1
@@ -1,6 +1,9 @@
|
||||
use serde::{Deserialize, Serialize};
|
||||
|
||||
use crate::types::message::{ClientMessage, WsMessage};
|
||||
use crate::types::{
|
||||
data::Message,
|
||||
message::{ClientMessage, WsMessage},
|
||||
};
|
||||
|
||||
#[derive(Debug, Serialize, Deserialize)]
|
||||
pub struct PluginJson {
|
||||
@@ -23,6 +26,11 @@ pub enum LoaderMessage {
|
||||
user_id: String,
|
||||
msg: WsMessage<ClientMessage>,
|
||||
},
|
||||
|
||||
MessageSent {
|
||||
user_id: String,
|
||||
msg: Message,
|
||||
},
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, Serialize, Deserialize)]
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
use std::sync::Arc;
|
||||
|
||||
use crate::{server::Server, types, utils::client::Client};
|
||||
use serde_json::ser;
|
||||
|
||||
use crate::{plugin::types::LoaderMessage, server::Server, types, utils::client::Client};
|
||||
|
||||
crate::logger!(LOGGER "Message Manager");
|
||||
|
||||
@@ -43,6 +45,11 @@ pub fn send(
|
||||
});
|
||||
}
|
||||
|
||||
server.send_plugin_message(&LoaderMessage::MessageSent {
|
||||
user_id: client.get_uuid().unwrap_or_default(),
|
||||
msg: msg,
|
||||
});
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
|
||||
+10
-7
@@ -178,13 +178,10 @@ impl Server {
|
||||
loop {
|
||||
let req = client.read()?;
|
||||
if let Some(r) = &req {
|
||||
for p in self.plugins.lock().unwrap().iter_mut() {
|
||||
p.send(LoaderMessage::Request {
|
||||
user_id: client.get_uuid().unwrap_or_default(),
|
||||
msg: r.clone(),
|
||||
});
|
||||
}
|
||||
|
||||
self.send_plugin_message(&LoaderMessage::Request {
|
||||
user_id: client.get_uuid().unwrap_or_default(),
|
||||
msg: r.clone(),
|
||||
});
|
||||
self.wrap_err(&client, self.call_request(r, &client))?;
|
||||
}
|
||||
}
|
||||
@@ -206,4 +203,10 @@ impl Server {
|
||||
|
||||
res
|
||||
}
|
||||
|
||||
pub fn send_plugin_message(&self, msg: &LoaderMessage) {
|
||||
for p in self.plugins.lock().unwrap().iter_mut() {
|
||||
p.send(msg);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user