feat: add command handling support to Nginx message handler
This commit is contained in:
@@ -1,6 +1,8 @@
|
||||
use std::sync::{Arc, Weak};
|
||||
|
||||
use nxmesh_proto::{AgentMessage, ConfigUpdate, MasterMessage, master_message::Payload};
|
||||
use nxmesh_proto::{
|
||||
AgentMessage, ConfigUpdate, MasterMessage, command::Command, master_message::Payload,
|
||||
};
|
||||
|
||||
use crate::service::master_handler::{MasterHandlerError, MessageResult};
|
||||
|
||||
@@ -25,28 +27,45 @@ pub trait OnConfigUpdateHandler: Send + Sync + 'static {
|
||||
) -> MessageResult<()>;
|
||||
}
|
||||
|
||||
pub struct HandlerImpl<OCH>
|
||||
where
|
||||
OCH: OnConfigUpdateHandler + ?Sized,
|
||||
{
|
||||
on_config_update_handler: Weak<OCH>,
|
||||
#[async_trait::async_trait]
|
||||
pub trait OnCommandHandler: Send + Sync + 'static {
|
||||
// Handle the command message from master, execute the command and return the result
|
||||
async fn on_command(
|
||||
&self,
|
||||
agent_id: &str,
|
||||
timestamp: i64,
|
||||
message_id: &str,
|
||||
command: Command,
|
||||
) -> MessageResult<()>;
|
||||
}
|
||||
|
||||
impl<OCH> HandlerImpl<OCH>
|
||||
pub struct HandlerImpl<OCUH, OCH>
|
||||
where
|
||||
OCH: OnConfigUpdateHandler + ?Sized,
|
||||
OCUH: OnConfigUpdateHandler + ?Sized,
|
||||
OCH: OnCommandHandler + ?Sized,
|
||||
{
|
||||
pub fn new(on_config_update_handler: Weak<OCH>) -> Self {
|
||||
on_config_update_handler: Weak<OCUH>,
|
||||
on_command_handler: Weak<OCH>,
|
||||
}
|
||||
|
||||
impl<OCUH, OCH> HandlerImpl<OCUH, OCH>
|
||||
where
|
||||
OCUH: OnConfigUpdateHandler + ?Sized,
|
||||
OCH: OnCommandHandler + ?Sized,
|
||||
{
|
||||
pub fn new(on_config_update_handler: Weak<OCUH>, on_command_handler: Weak<OCH>) -> Self {
|
||||
Self {
|
||||
on_config_update_handler,
|
||||
on_command_handler,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[async_trait::async_trait]
|
||||
impl<OCH> MasterMessageHandler for HandlerImpl<OCH>
|
||||
impl<OCUH, OCH> MasterMessageHandler for HandlerImpl<OCUH, OCH>
|
||||
where
|
||||
OCH: OnConfigUpdateHandler + ?Sized,
|
||||
OCUH: OnConfigUpdateHandler + ?Sized,
|
||||
OCH: OnCommandHandler + ?Sized,
|
||||
{
|
||||
async fn handle_master_message(
|
||||
&self,
|
||||
|
||||
Reference in New Issue
Block a user