use dimas::prelude::*;
#[derive(Debug)]
struct AgentProps {}
async fn query_callback(_ctx: Context<AgentProps>, response: QueryableMsg) -> Result<()> {
let message: u128 = response.decode()?;
println!("Response 1 is '{message}'");
Ok(())
}
#[dimas::main]
async fn main() -> Result<()> {
let properties = AgentProps {};
let mut agent = Agent::new(properties)
.prefix("examples")
.name("querier")
.config(&Config::default())?;
agent
.querier()
.topic("query")
.callback(query_callback)
.add()?;
let interval = Duration::from_secs(1);
let mut counter1 = 0i128;
agent
.timer()
.name("timer")
.interval(interval)
.callback(move |ctx| -> Result<()> {
println!("Querying [{counter1}]");
let message = Message::encode(&counter1);
ctx.get("query", Some(message), None)?;
counter1 += 1;
Ok(())
})
.add()?;
agent.liveliness(true);
agent.start().await?;
Ok(())
}