use std::sync::Arc;
use crate::messenger::handlers::{Handler, HandlerManager};
use super::VeloEvents;
pub(crate) fn register_event_handlers(
handlers: &HandlerManager,
events: Arc<VeloEvents>,
) -> anyhow::Result<()> {
let events_clone = events.clone();
handlers.register_internal_handler(
Handler::am_handler_async("_event_subscribe", move |ctx| {
let events = events_clone.clone();
async move {
if let Err(e) = events.handle_subscribe(ctx.payload).await {
tracing::warn!("_event_subscribe handler error: {}", e);
}
Ok(())
}
})
.spawn()
.build(),
)?;
let events_clone = events.clone();
handlers.register_internal_handler(
Handler::am_handler("_event_trigger", move |ctx| {
if let Err(e) = events_clone.handle_trigger(ctx.payload) {
tracing::warn!("_event_trigger handler error: {}", e);
}
Ok(())
})
.spawn()
.build(),
)?;
let events_clone = events.clone();
handlers.register_internal_handler(
Handler::am_handler_async("_event_trigger_request", move |ctx| {
let events = events_clone.clone();
async move {
if let Err(e) = events.handle_trigger_request(ctx.payload).await {
tracing::warn!("_event_trigger_request handler error: {}", e);
}
Ok(())
}
})
.spawn()
.build(),
)?;
Ok(())
}