kx-utils 0.1.3

Common utils incubator
Documentation
//
#[macro_export]
macro_rules! tell {
    ($actor_ref:expr, $message:expr) => {
        tell!(stringify!($actor_ref), $actor_ref, $message)
    };
    ($actor_name:expr, $actor_ref:expr, $message:expr) => {{
        tracing::debug!(actor = $actor_name, msg = stringify!($message), "send");
        $actor_ref.tell($message).await
    }};
}

#[macro_export]
macro_rules! ask {
    ($actor_ref:expr, $message:expr) => {
        ask!(stringify!($actor_ref), $actor_ref, $message)
    };
    ($actor_name:expr, $actor_ref:expr, $message:expr) => {{
        tracing::debug!(actor = $actor_name, msg = stringify!($message), "send");
        $actor_ref.ask($message).await
    }};
}

#[macro_export]
macro_rules! subscribe {
    ($message_bus:expr, $actor_ref:expr) => {
        subscribe!(
            stringify!($message_bus),
            $message_bus,
            stringify!($actor_ref),
            $actor_ref
        )
    };
    ($message_bus:expr, $actor_name:expr, $actor_ref:expr) => {
        subscribe!(
            stringify!($message_bus),
            $message_bus,
            $actor_name,
            $actor_ref
        )
    };
    ($bus_name:expr, $message_bus:expr, $actor_ref:expr) => {
        subscribe!($bus_name, $message_bus, stringify!($actor_ref), $actor_ref)
    };
    ($bus_name:expr, $message_bus:expr, $actor_name:expr, $actor_ref:expr) => {{
        tracing::debug!(msg_bus = $bus_name, actor = $actor_name, "subscribe");
        $message_bus
            .tell(kameo::actor::pubsub::Subscribe($actor_ref))
            .await
    }};
}

#[macro_export]
macro_rules! publish {
    ($message_bus:expr, $message:expr) => {
        publish!(stringify!($message_bus), $message_bus, $message)
    };
    ($bus_name:expr, $message_bus:expr, $message:expr) => {{
        tracing::debug!(bus = $bus_name, msg = stringify!($message), "publish");
        $message_bus
            .tell(kameo::actor::pubsub::Publish($message))
            .await
    }};
}