common_meta/heartbeat/handler/
parse_mailbox_message.rs1use async_trait::async_trait;
16
17use crate::error::Result;
18use crate::heartbeat::handler::{
19 HandleControl, HeartbeatResponseHandler, HeartbeatResponseHandlerContext,
20};
21use crate::heartbeat::utils::mailbox_message_to_incoming_message;
22
23#[derive(Default)]
24pub struct ParseMailboxMessageHandler;
25
26#[async_trait]
27impl HeartbeatResponseHandler for ParseMailboxMessageHandler {
28 fn is_acceptable(&self, _ctx: &HeartbeatResponseHandlerContext) -> bool {
29 true
30 }
31
32 async fn handle(&self, ctx: &mut HeartbeatResponseHandlerContext) -> Result<HandleControl> {
33 if let Some(message) = &ctx.response.mailbox_message {
34 if message.payload.is_some() {
35 ctx.incoming_message = Some(mailbox_message_to_incoming_message(message.clone())?)
37 }
38 }
39
40 Ok(HandleControl::Continue)
41 }
42}