COSMIC MACROS
cosmic-macros
is one of the packages that compose THE COSMIC INITIATIVE a WebAssembly orchestration framework.
DirectedHandler
Derive the DirectedHandler
to receive Waves:
#[derive(DirectedHandler)]
pub struct MyHandler {
logger: PointLogger
}
ROUTES
Flag one and only one impl with #[routes]
and annotate functions
functions with #route[()]
in order to select messages:
#[routes]
impl MyHandler {
#[route("Ext<MyNameIs>")]
pub async fn hello(&self, ctx: InCtx<'_, Text>) -> Result<String, UniErr> {
Ok(format!("Hello, {}", ctx.input.to_string()))
}
}
FULL EXAMPLE
use cosmic_space::err::UniErr;
use cosmic_space::hyper::HyperSubstance;
use cosmic_space::log::PointLogger;
use cosmic_space::substance::Substance;
use cosmic_space::substance::Substance::Text;
use cosmic_space::wave::core::ReflectedCore;
use cosmic_space::wave::exchange::InCtx;
#[derive(DirectedHandler)]
pub struct MyHandler {
logger: PointLogger
}
#[routes]
impl MyHandler {
#[route("Ext<MyNameIs>")]
pub async fn hello(&self, ctx: InCtx<'_, Text>) -> Result<String, UniErr> {
Ok(format!("Hello, {}", ctx.input.to_string()))
}
#[route("Ext<Bye>")]
pub async fn bye(&self, ctx: InCtx<'_,()>) {
self.logger.info("funny that! He left without saying a word!");
}
}