feat: add command handling support to Nginx message handler

This commit is contained in:
2026-06-16 10:55:13 +00:00
parent c0d243f661
commit 3c2cda88f1
4 changed files with 109 additions and 16 deletions

View File

@@ -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,